2013-03-20 2 views
1

У меня есть веб-страница с большим количеством файлов MOV и GIF, все на форме A0001.MOV или A3923.GIF. Прямо сейчас, каждая страница, которую я показываю, называется A3429.ASPX и получает ее данные из базы данных (это всего лишь куча коротких текстов). Одним из полей является относительная ссылка на /path/dir/A9891 и получает сцепление с соответствующим завершением файла.Должны ли изображения храниться в БД или отдельно?

Интересно, возможно ли и, если это так, переместить изображения и короткие видео в базу данных. Никогда не делал этого раньше, и я не просто жокей DB. :)

+0

Почему вы хотите переместить их в базу данных? Это потребует большего использования процессора. – nunespascal

+0

@nunespascal Переносимость. Производительность не является проблемой. – 2013-03-20 06:52:06

ответ

2

Для SQL Server, у Microsoft Research есть действительно хорошая статья под названием To Blob or Not To Blob.

Их вывод после большого количества тестов производительности и анализа заключается в следующем:

  • если ваши фотографии или документ, как правило, ниже 256К в размерах, сохраняя их в базе данных VARBINARY столбец является более эффективным

  • , если ваши изображения или документы, как правило, имеют размер более 1 МБ, более эффективное хранение их в файловой системе (и с атрибутом SQL Server 2008 FILESTREAM, они все еще находятся под транзакционным управлением и частью базы данных)

  • между этими двумя, это немного жеребьевкой в ​​зависимости от вашего использования

Если вы решили поместить свои фотографии в таблицу SQL Server, я настоятельно рекомендую использовать отдельную таблицу для сохранение этих изображений - не храните фотографию сотрудника в таблице сотрудников - храните их в отдельной таблице. Таким образом, таблица Employee может оставаться скудной, средней и очень эффективной, предполагая, что вам не всегда нужно выбирать фото сотрудника, как часть ваших запросов.

Для файловых групп ознакомьтесь с Files and Filegroup Architecture для вступления. В принципе, вы либо создадите свою базу данных с отдельной файловой группой для больших структур данных с самого начала, либо добавите дополнительную файловую группу позже. Назовем это LARGE_DATA.

Теперь, когда у вас есть новая таблица для создания которой необходимо хранить VARCHAR(MAX) или VARBINARY(MAX) столбцов, вы можете указать эту группу файлов для больших объемов данных:

CREATE TABLE dbo.YourTable 
    (....... define the fields here ......) 
    ON Data     -- the basic "Data" filegroup for the regular data 
    TEXTIMAGE_ON LARGE_DATA -- the filegroup for large chunks of data 

Отъезд интро MSDN по файловым группам, и поиграйте с ним!

+1

О, это был один приятный, быстрый и информативный ответ. Должно быть +2, но SO только позволяет +1, ха-ха. – 2013-03-20 06:50:41

Смежные вопросы