Я лично хранил бы большие данные за пределами базы данных.
Профессионалы: Хранилища все в одном, легкий доступ к файлам данных, легким Недостаткам baskup: производительность базы данных Уменьшений, много расщеплений страницы, возможного повреждения базы данных
Хотя есть исключения из всего, в общем случае лучше всего хранить изображения в файловой системе. Вы можете легко предоставлять услуги кэширования изображений, вам не нужно беспокоиться о дополнительном коде для обработки изображений, и вы можете легко выполнять обслуживание изображений, если это необходимо, с помощью стандартных методов редактирования изображений.
Определенно храните ваши изображения в файловой системе. Одна проблема, которую люди не принимают во внимание при рассмотрении таких вещей, - это раздувание; Запихивание изображений в виде двоичных двоичных объектов в вашу базу данных - действительно быстрый способ раздуть вашу базу данных. С большой базой данных возникают более высокие требования к оборудованию, более сложные требования к репликации и резервному копированию и т. Д. Прикрепление ваших изображений к файловой системе означает, что вы можете легко и просто создавать резервные копии / реплицировать их с помощью многих существующих инструментов. Также гораздо проще увеличить пространство для хранения в файловой системе, чем в базе данных.
Файловая система. Нет конкурса. Когда вы сохраняете в базе данных, данные должны проходить через намного больше уровней.
Редактировать при кэшировании: Если вы хотите кэшировать файл, пока пользователь загружает его, чтобы гарантировать, что операция завершится как можно скорее, выгрузите его прямо на диск (то есть в файловую систему) почти так же быстро, как это возможно. Если файлы не слишком большие и у вас не слишком много одновременных пользователей, вы можете «кэшировать» файл в памяти, вернуться к пользователю, а затем сохранить на диск. Честно говоря, я бы не стал беспокоиться.
Если вы делаете файлы доступными в Интернете после того, как они были загружены, и хотите кэшировать для повышения производительности, файловая система по-прежнему является лучшим вариантом. Вы получите кеширование бесплатно (возможно, придется изменить пару настроек) с вашего веб-сервера. Вы не получите этого, если файлы находятся в базе данных.
В конце концов, похоже, что вам никогда не следует хранить файлы в базе данных. Нет, для этого нужна веская причина.
БД может быть быстрее файловой системы при выполнении некоторых операций, но загрузка четко идентифицированного блока данных размером 100 КБ не входит в их число.
также хороший интерфейсный веб-сервер (например, nginx) работает намного быстрее, чем любой слой веб-приложений, который вам нужно написать для чтения блоба из БД. в некоторых тестах nginx примерно на одном уровне с memcached для обработки необработанных данных файлов среднего размера (таких как большие HTML-файлы или изображения среднего размера).
go FS. нет конкурса.
Может быть, немного касательно, но в этом видео с конференции MySQL ведущий рассказывает о том, как веб-сайт smugmug использует MySQL и другие технологии для превосходной производительности. Я думаю, что видео основано на некоторых ответах, размещенных здесь, но также предлагает способы повышения производительности веб-сайта за пределами базы данных.