Это решение, которое обсуждается довольно часто.И на мой взгляд, это вопрос личного вкуса.Очень похоже на дебаты в vim / emacs, windows / linux.Не то чтобы с подогревом, хотя.
Обе стороны имеют свои преимущества и недостатки.Когда вы храните их в базе данных, вам не нужно сильно беспокоиться об имени файла и расположении.Управление также проще (вы удаляете строки, содержащие BLOB, и все).Но к файлам также сложнее получить доступ, и вам может понадобится написать код-обертку тем или иным способом (например, некоторые из этих ссылок "download.php").
С другой стороны, если двоичные данные хранятся в виде отдельного файла, управление будет более сложным (вам необходимо открыть соответствующий файл с диска, сначала создав файл).В больших наборах данных вы можете столкнуться с узкими местами файловой системы, когда количество файлов в одном каталоге становится очень большим (но этого можно избежать, легко создавая подкаталоги).Но затем, если данные хранятся в виде файлов, их замена становится намного проще.Другие люди также могут получить к нему доступ без необходимости знать внутреннее устройство (представьте, например, пользователя, который получает удовольствие от настройки своего пользовательского интерфейса).
Я уверен, что есть и другие моменты, которые следует затронуть, ноЯ не хочу писать слишком много сейчас ...
Я бы сказал: подумайте, какие операции вы хотели бы сделать с фотографиями (и ограничения обоих способов хранения), и оттуда взятьобоснованное решение.Там не так много, что может пойти не так.
TX-Log и FS-Journal
При дальнейшем изучении я нашел дополнительную информацию:
- SQLite использует журнал транзакций
- Android использует YAFFS в точках монтирования системы и VFAT на SD-карте.Оба (насколько мне известно) не имеют квалификации.
Я не знаю точную реализацию TX-Log в SQLite, но следует ожидать, что каждый INSERT
/ UPDATE
Операция выполнит две записи на диск.Я могу ошибаться (это во многом зависит от реализации транзакций), но, честно говоря, я не смог потрудиться просмотреть исходный код SQLite.Мне кажется, что мы начинаем расщеплять волосы здесь (преждевременная оптимизация?) ...
Поскольку обе файловые системы (YAFFS и VFAT) не регистрируются, у вас нет дополнительных «скрытых» операций записи.
Эти два пункта говорят в пользу файловой системы.
Обратите внимание, что эту информацию следует брать с крошкой соли.Я просмотрел только результаты Google YAFFS journaling
и sqlite transaction log
.Возможно, я пропустил некоторые детали.