2011-12-15 3 views
2

Можно создать дубликат:
Storing Images in DB - Yea or Nay?Сохранение изображений в Db или на сервере?

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

Я не вижу, чтобы изображения проходили более 200 КБ (это, вероятно, очень высоко). Я думаю, что в среднем будет меньше 50кб.

Так что лучше использовать?

ответ

3

Зависит от того, что вы цените и что вы делаете с ними:

изображений в базе данных:

  • Живых с ассоциированными данными, без возможности отслоения, когда данные переносятся в другой система
  • Легче создать резервную копию (потому что они все с базой данных)
  • Более безопасной, труднее манипулировать, случайно или намеренно

Изображения на файловую систему

  • Экономия места на сервере хранения БД - может быть важно, если вы находитесь в общей среде, оплачивающего DB пространства
  • легче получить в коде
  • легче ссылка в html

Я не думаю, что для всех ситуаций существует «лучший» подход, но, если сказать, что если это для веб-сайта, то файловая система, похоже, имеет больше смысла для меня!

3

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

1

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

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

Сохраните URL-адрес в базе данных, затем выберите образ из файловой системы.

+0

Я разработал CMS около 5 лет назад, и мы нашли perforamnce terrifivc в положительном смысле. Итак, вы уверены, что не знаете, как эффективно обрабатывать двоичные данные в базе данных? – TomTom

5

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

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

И как я всегда говорю, почему код для обслуживания файлов, когда веб-сервер может сделать это намного лучше?

+1

+1 И вы получаете выгоду (при условии, что вы будете показывать эти изображения, а также загружать их) изображения, кэшированные в браузере (и вы обнаружите, что получение изображений с модели/viewmodel в браузере приведет к большому количеству базы данных действие). –

1

У меня есть пример эффективного, потокового, решения для хранения и извлечения носителей из базы данных SQL Server: Download and Upload Images from SQL Server via ASP.NET MVC и последующего наблюдения FILESTREAM MVC: Download and Upload images from SQL Server.

Я бы также рекомендовал вам прочитать To BLOB or not to BLOB.

Мой совет был бы тем, что, если только у вас нет конкретных причин для этого, чтобы сохранить носитель в файловой системе. Серверы HHTTP чрезвычайно эффективны при простом потоке обратно файла. Конкретными причинами использования БД были бы такие вещи, как управление доступом, автономное резервное копирование-восстановление или решение с высокой доступностью/устранением сбоев, сосредоточенное вокруг БД.

И помните, что самый быстрый ответ - когда браузер никогда не спрашивает :) Используйте c aching tags в своих ответах.

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