Как правильно хранить изображения на сервере и ссылаться на них в базе данных? - PullRequest
0 голосов
/ 07 сентября 2018

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

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

Итак, мой вопрос; если я буду хранить эти изображения на работающем сервере, то как мне будет ссылаться на эти изображения в базе данных SQL Server и, во-вторых, как мне создать «фиктивные данные» для проверки моих хранимых процедур?

Я понимаю, что это мой первый пост и, вероятно, он довольно прост для большинства опытных программистов.

Однако я попытался перечитать информацию на этом сайте (и на других), но мне не удалось найти ответ.

С наилучшими пожеланиями

Брэд Бит

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

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

Чтобы обойти узкое место, создайте структуру папок n-уровня, где именем каждого уровня является число. например ххх / ууу / ZZZ / qqq.jpg.

Где xxx, yyy, zzz и qqq - числа 000-999. Этого должно быть достаточно, чтобы хранить 1 000 000 000 000 файлов и держать количество файлов / папок в одной папке в определенных пределах.

В вашей базе данных создайте таблицу (file_id, level1, level2, level3, level4) для хранения, где расположен каждый файл. Создайте процедуру, которая принимает файл, выясняет, куда его поместить и записывает местоположение в БД.

0 голосов
/ 07 сентября 2018

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

Таким образом, если пользователь запрашивает файлс идентификатором 250 вы извлечете запись из таблицы «Документ» (или любой другой) базы данных и получите ее полный путь.

...