BLOB в SQL, который хранит видео файл - PullRequest
7 голосов
/ 02 октября 2011

Я надеюсь, что кто-то может объяснить, как использовать BLOB. Я вижу, что большие двоичные объекты можно использовать для хранения видеофайлов. Мой вопрос: зачем человеку хранить видеофайл в BLOB в базе данных SQL? Каковы преимущества и недостатки по сравнению с хранением указателей на местоположение видеофайла?

Ответы [ 2 ]

6 голосов
/ 02 октября 2011

Несколько разных причин.

Если вы храните указатель на файл на диске (предположительно, с использованием типа данных BFILE), вы должны убедиться, что база данных обновляется при каждом перемещении файлов, переименовываетсяили удален на диске.Относительно часто, когда вы храните данные, подобные этой, со временем ваша база данных перестает синхронизироваться с файловой системой, и в результате вы получаете неработающие ссылки и потерянный контент.

Если вы храните указатель на файл на диске,вы не можете использовать транзакционную семантику, когда имеете дело с мультимедиа.Поскольку вы не можете выполнить что-то вроде отката для файловой системы, вам также придется иметь дело с тем фактом, что у вас могут возникнуть ситуации, когда данные в файловой системе не соответствуют данным в базе данных (т.е.кто-то загрузил видео в файловую систему, но транзакция, которая создала автора и заголовок в базе данных, завершилась неудачно или наоборот), или вам нужно добавить дополнительные шаги к загрузке файла, чтобы смоделировать транзакционную семантику (то есть загрузить второй <> _ done.txtфайл, который содержит только количество байтов в фактическом загруженном файле. Это громоздко и подвержено ошибкам, что может создать проблемы с удобством использования.

Для многих приложений проще всего предоставить базу данных для обработки данных.это пользователю. Если вы хотите избежать предоставления пользователю прямого URL-адреса FTP для ваших файлов, поскольку они могут использовать его для обхода некоторой защиты на уровне приложения, самый простой вариант - создать приложение на основе базы данных, где можно получать данные,база данных читает его из тФайловая система затем возвращает ее на средний уровень, который затем отправляет данные клиенту.Если вам нужно будет считывать данные в базу данных каждый раз, когда данные извлекаются, часто имеет смысл просто сохранять данные непосредственно в базе данных и позволить базе данных считывать их из своих файлов данных, когда пользователь запрашиваетдля него.

Наконец, базы данных, такие как Oracle, предоставляют дополнительные утилиты для работы с мультимедийными данными в базе данных. Oracle interMedia , например, предоставляет богатый набор объектов для взаимодействия с видеоданными, хранящимися в базе данных - вы можете легко пометить, где начинаются или заканчиваются сцены, отмечать, где обсуждаются различные темы, когда видео былозаписал, кто его записал и т. д. И вы можете интегрировать эту функцию поиска с поиском по всем вашим реляционным данным.Конечно, вы могли бы написать приложение поверх базы данных, которое бы тоже все это делало, но тогда вы либо пишете много кода, либо используете другую инфраструктуру в своем приложении.Часто гораздо проще использовать функциональность базы данных.

0 голосов
/ 02 октября 2011

Прочтите это: http://www.oracle.com/us/products/database/options/spatial/039950.pdf (очевидно, предвзятый взгляд, но у него есть несколько минусов (которые были исправлены с появлением 11g)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...