вызов традиционной мудрости!
Конечно, это зависит от контекста, но у меня есть очень большое приложение с тысячами изображений и документов, хранящихся в виде BLOBS в базе данных MySQL (средний размер = 2 МБ), и приложение отлично работает на сервере с 256 МБ памяти. Секрет правильной структуры базы данных. Всегда сохраняйте две отдельные таблицы, одна из которых хранит основную информацию о файле, а другая должна просто содержать большой двоичный объект и первичный ключ для доступа к нему. Все базовые запросы будут выполняться к таблице сведений, а другая таблица доступна только тогда, когда файл действительно необходим, и к нему обращаются с помощью индексированного ключа, поэтому производительность чрезвычайно высока.
Преимущества хранения файлов в базе данных многочисленны:
- Требуются гораздо более простые системы резервного копирования, поскольку вам не нужно выполнять резервное копирование файловой системы
- Управление безопасностью файлов намного проще, так как вы можете проверить перед выпуском двоичного файла (да, вы можете сохранить файл в непубличном каталоге и иметь скрипт для чтения и регургитации файла, но производительность не будет заметно выше.
- (Аналогично # 1) Он четко разделяет «пользовательский контент» и «системный контент», облегчая миграцию и клонирование.
- Проще управлять файлами, отслеживать / хранить изменения версии и т. Д., Поскольку для добавления элементов управления версиями требуется меньше модификаций скрипта.
Если производительность является большой проблемой, а безопасность и резервное копирование - нет (или если у вас есть хорошая система резервного копирования FS), вы можете сохранить ее в FS, но даже тогда я часто храню файлы (в случае изображений) в БД и создании сценария кэширования, который записывает изображение в папку кэша после первого использования (да, это использует больше места на жестком диске, но это почти никогда не является ограничивающим фактором).
В любом случае, очевидно, что FS работает хорошо во многих случаях, но я лично считаю, что управление БД намного проще и более гибко, и если все хорошо, штрафы за производительность чрезвычайно малы.