#c# #database #image #image-processing #varbinarymax
#c# #База данных #изображение #обработка изображений #varbinarymax
Вопрос:
Может кто-нибудь дать мне несколько советов о том, как сохранить файл изображения в БД на C #? Я буду сохранять много изображений, так каков наилучший способ уменьшить пространство, которое ему потребуется? В настоящее время я использую поле varbinary (max) в БД.
Спасибо!
Комментарии:
1. Используя какой тип связи с БД? (Возможно, Linq2SQL, Linq2Entity)
2. Как вы обычно сохраняете данные на вашем sql Server?
Ответ №1:
Если вам НЕОБХОДИМО сохранить фактический файл в SQL, то обязательно установите некоторые ограничения на размер изображения и убедитесь, что вы правильно спланировали размер базы данных — сколько изображений и какого размера вы ожидаете?
Если вам необходимо сохранить его в SQL, я предпочитаю, чтобы оно автоматически размещалось в собственной базе данных SQL. Таким образом, любые проблемы с производительностью, с которыми я сталкиваюсь при работе с этими изображениями, не влияют на остальную часть моей базы данных.
ТЕПЕРЬ, если вам не нужно хранить изображения в базе данных SQL, то я думаю, что это просто требует использования хранилища больших двоичных объектов Azure. Взгляните на это — это даст вам то, что вы хотите, в очень эффективной системе.
Если вы не можете использовать Azure, вам следует создать класс, который будет обрабатывать чтение / запись / поиск изображений в файловой системе. Сохранение в файловой системе (выполненное должным образом) будет работать намного лучше, чем сохранение в SQL.
Ответ №2:
Это было бы прекрасно. однако, если эти изображения такие большие и вашему администратору базы данных может больше не понравиться, что oyu их туда помещает, вы могли бы поместить их куда-нибудь на диск и сохранить местоположение в БД.
Я думаю, есть много способов, которыми вы могли бы справиться с этим. Просто взвесьте все за и против.
Я только что дал вам одну альтернативу.
Ответ №3:
Не очень хорошая идея хранить изображения в базе данных. Вы можете сохранять URL-адреса к изображениям.
Комментарии:
1. ты печатаешь быстрее меня. да, послушайте этого парня.
2. Можно использовать
Filestream
тип вместоvarbinary(max)
Ответ №4:
В каком формате находится изображение и какую технологию базы данных вы используете?
Одним из вариантов является преобразование изображений в двоичный массив и передача этого в вашу базу данных. Я нашел несколько хороших кодов о том, как это сделать, в codeproject:
Ответ №5:
Как сказал Магнус, потоки файлов не хранятся на страницах БД, поэтому это не влияет на производительность.
Хотя хранение файлов в БД означает, что ваши резервные копии БД станут НАМНОГО больше.
Кто-то еще упомянул о сохранении только URL-адресов. Это также отличная идея и, вероятно, наиболее подходящая для простой настройки.