Реляционная база данных для хранения видеоданных

Недавно во время собеседования при приеме на работу меня спросили, какую систему хранения я бы использовал для хранения видеоданных, если бы я создавал сервис потокового видео.

Я предложил решение, в котором я сохранял фактическое видео в распределенной файловой системе (такой как HDFS / S3) и сохранял метаданные о видео (путь к HDFS, разрешения на совместное использование и т. Д.) В таблице базы данных отношений. Для меня это имело смысл и казалось чистым решением. Однако интервьюер продолжал расспрашивать меня о том, почему мы не можем использовать реляционную базу данных для хранения самого видео (в виде данных blob). Я привел ему несколько причин, которые я считал подходящими: видео - это файлы, а файловые системы оптимизированы для лучшего хранения файлов, кэширование файловой системы, производительность чтения / записи и т.д. Что ж...".

Есть ли четкая причина, по которой видео лучше хранить на диске в виде файлов, а не в базе данных mysql?


person frodo    schedule 18.07.2018    source источник


Ответы (1)


Для достижения лучшей масштабируемости лучше хранить видеофайлы в разных хранилищах, чтобы лучше использовать соединения с вашей БД. Обслуживание видеофайлов может удерживать соединение надолго. При таком подходе у вас может быть отдельный сервис для обслуживания фактического видео. Больше преимуществ, например, когда ваша служба должна обслуживать видео в новом формате, когда вы конвертируете все существующие видео в новый формат, обновление БД займет меньше времени, так как вам просто нужно добавить ссылки на файл нового формата. Кроме того, при сегментировании БД вы никогда не узнаете, какой сегмент будет иметь большую нагрузку, лучше добавить хранилище в один пул, чем добавлять хранилище в другой пул в задней части разных сегментов.

Хранение видео в одной базе данных было бы катастрофическим для ремонтопригодности системы.

person dam0055    schedule 19.07.2018