Хранить аудио в SQL Server? - PullRequest
       19

Хранить аудио в SQL Server?

1 голос
/ 15 января 2010

Является ли хорошей идеей хранить аудиофайлы (mp3, wav) в SQL Server как большие двоичные объекты? Одним из достоинств является экономия места на жестком диске. Влияет ли это на масштабируемость или производительность?

Ответы [ 4 ]

6 голосов
/ 15 января 2010

Нет, это не очень хорошая идея :) Поля переменного размера (такие как TEXT и BLOB) оказывают всевозможное влияние на производительность. Лучший подход - хранить файлы на диске и просто сохранять ссылки на них в таблице БД. В настоящее время пространство на жестком диске настолько дешево (особенно по сравнению с производительностью процессора и ввода-вывода), что это даже не должно вызывать беспокойства.

1 голос
/ 22 октября 2011

Если вы используете Sql Server 2008, вы можете использовать атрибут filestream. Sql Server сохранит файл в файловой системе, но свяжет его с столбцом varbinary.

Проверьте ссылку ниже:

http://www.aghausman.net/sql_server/configure-sql-server-2008-for-file-stream-2.html (Неработающая ссылка - по-прежнему доступна через Интернет-архив на https://web.archive.org/web/20120530062012/http://www.aghausman.net/sql_server/configure-sql-server-2008-for-file-stream-2.html)

1 голос
/ 15 января 2010

Если у вас есть возможность обновления до SQL 2008 (т.е. если у вас есть лицензия на бесплатные обновления), тогда FILESTREAM - лучший выбор - он помещает «ссылки» в столбец, но использует обычную файловую систему для фактического данные.

В SQL 2005 или более ранней версии я бы этого не делал. Я также не вижу, как это сэкономит место на жестком диске; 5 мегабайт - это 5 мегапикселей, будь то файл на диске или где-нибудь в столбце базы данных; последнее затрудняет доступ к нему, и, как уже упоминалось, может негативно повлиять на общую производительность вашей БД. Я предполагаю, что есть некоторые незначительные издержки файловой системы, такие как минимальный размер кластера, но для больших файлов (особенно аудио) эффект незначителен.

1 голос
/ 15 января 2010

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

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