Где сохранить видеофайлы - база данных или диск
-
29-09-2019 - |
Вопрос
Хорошей идеей хранить видеофайлы в базе данных в качестве объектов Blob или хранить их на физическом диске.
Это для сайта, похожий на YouTube, где пользователи могут загрузить свое видео и просматривать их
База данных будет MySQL
Какой вариант лучше и почему
Спасибо
Решение
Pro MySQL: - Капля может подвергаться иностранным ключам и, таким образом, сохраняя избыточную базу данных, а не сохранение в файловой системе. В этом случае вы должны запрограммировать удаление файла. - FineGrained User разрешения.
Con: - MySQL не работает бесплатно, он поставляется с накладными расходами, а не в подаче файловой системы. - WebServers не может напрямую обслуживать капли из базы данных. Это означает, что PHP придется опосредовать процесс. Когда капля загружается из MySQL в PHP, использование памяти будет по крайней мере таким же большим, как капля. Таким образом, в вашем случае, когда файлы могут столкнуться с сотнями MB, это создало бы огромное напряжение на веб -сервер.
Во всей реальности MySQL не будет использоваться для сохранения файлов. Blobs в основном используются для сэкономить на лауреатах сериализованных данных, таких как кэши.
Другие советы
Я использую NFS для хранения медиа -контента примерно с 5 лет без проблем с точки зрения хранения. Манипулирование, кодирование и сохранение управляются с помощью FFMPEG, сценариев PHP и рабочих мест CRON. Метаданные видео хранятся в базе данных MySQL, а веб -доставка предоставляется через Nginx (через крепление только для чтения NFS). Размер видеофайлов до 2 ГБ в этой среде. Вероятно, я могу идти быстрее по другому двигателю БД, но отходы в реальном времени связаны с процессом кодирования, а не для сохранения файлов.
Когда я сохраняю тысячи маленьких изображений (например, аватары), я когда -либо использую MySQL, чтобы просто хранить метаданные файлы (путь изображения и другие свойства), а не сохранять файл в поле Blob, которые могут слишком сильно замедлить DB на протяжении тяжелых запросов.