Я считаю это преждевременной оптимизацией в лучшем случае и культовым программированием в худшем случае.
Хотя верно, что системы реляционных баз данных не оптимизированы для хранения больших полей (будь то двоичные или текстовые), а некоторые из них относятся к ним специально или, по крайней мере, имеют некоторые ограничения на их использование, большинство из них обрабатывают хотя бы умеренно (скажем, до нескольких сотен мегабайт). Хранение изображений или файлов PDF в базе данных будет менее эффективным, чем хранение их в файловой системе, но для 99% всех приложений он будет достаточно эффективным.
С другой стороны, если вы храните эти файлы в файловой системе, вы теряете несколько преимуществ:
- Обновление будет вне транзакций, так что вы не можете быть уверены в том, что обновление файла (в файловой системе), а метаданные (в базе данных) будут атомарными.
- Вы теряете ссылочную целостность: ваша база данных может ссылаться на файлы, которые были удалены или переименованы.
- У вас есть два разных места, где вы храните свои данные. Это затрудняет доступ, резервное копирование и т. Д.
Я бы попытался сохранить все данные вместе, которые принадлежат логически вместе. Обычно это означает сохранение всего в базе данных. Если это технически невозможно (например, потому что ваши файлы слишком большие - большинство RDBMS имеют ограничение по размеру на blobs), или потому, что тесты показывают, что они слишком медленны или в противном случае неудобны, вы всегда можете оптимизировать их позже.
Возможный дубликат [Медленность, найденная при выборе и кодировании изображения базы 64) (http://stackoverflow.com/questions/41228496/slowness-found-when-base-64-image-select-and-encode- from-database) – e4c5