Хранение изображений в SQL Server?



Я сделал небольшой демонстрационный сайт и на нем я храню изображения в столбце изображения на sql server. У меня есть несколько вопросов...




  • Это плохая идея?


  • Это будет влиять на производительность на моем сайте, когда он растет?



альтернативой было бы хранить изображение на диске и хранить только ссылку на изображение в базе данных. Это должно быть общая дилемма, которая была у многих людей. Я был бы рад немного совет и на самом деле был бы счастлив сделать меньше ошибок, если бы мог.

1754   6  

6 ответов:

есть действительно хорошая статья Microsoft Research под названием к Blob или не к Blob.

их вывод после большого количества тестов производительности и анализа это:

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

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

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

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

для файловых групп, проверить архитектура файлов и файловых групп для интро. В принципе, вы либо создадите свою базу данных с отдельной файловой группой для больших структур данных с самого начала, либо добавите дополнительную файловую группу позже. Назовем его "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 в файловые группы и поиграйте с ним!

Я попал в эту дилемму один раз, и исследовал довольно много на google для мнений. Я обнаружил, что действительно многие видят сохранение изображений на диск лучше для больших изображений, в то время как mySQL обеспечивает более легкий доступ, особенно из таких языков, как PHP.

Я нашел аналогичный вопрос

MySQL BLOB vs File для хранения небольших изображений PNG?

мой окончательный вердикт заключался в том, что для таких вещей, как изображение профиля, просто небольшое квадратное изображение, которое нужно будьте там для каждого пользователя, mySQL будет лучше, чем хранить кучу больших пальцев на жестком диске, в то время как для фотоальбомов и тому подобных вещей папки/файлы изображений лучше.

надеюсь, это поможет

Я бы предпочел сохранить изображение в каталоге, а затем Сохранить ссылку на файл изображения в базе данных.

однако, если вы сохраняете изображение в базе данных, вы должны разбить свою базу данных так, чтобы столбец изображения находился в отдельном файле.

вы можете прочитать больше об использовании файловых групп здесь http://msdn.microsoft.com/en-us/library/ms179316.aspx.

почему это может быть хорошо, чтобы хранить фотографии в базе данных отсутствуют в каталоге на веб-сервере.

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

теперь они приходят к вам. Они сервер был уничтожен, и они должны восстановить его на новом сервере. У них больше нет доступа к старому серверу. Единственная резервная копия у них есть резервная копия базы данных.

У вас есть конечно, источник и может просто развернуть его на новом сервере, установить SqlServer и восстановить базу данных. Но теперь все фотографии исчезли.

Если вы сохранили фотографии в SqlServer все будет работать, как и раньше.

только мои 2 цента.

при хранении изображений в SQL Server Не используйте тип данных 'image', по словам MS, он постепенно выводится в новых версиях SQL server. Используйте varbinary (max) вместо

https://msdn.microsoft.com/en-us/library/ms187993.aspx

еще один вариант был выпущен в 2012 году под названием File tables:https://msdn.microsoft.com/en-us/library/ff929144.aspx

Comments

    Ничего не найдено.