2013-03-21 4 views
1

Когда я использую базу данных изображений для своего веб-приложения asp.net, я нашел два метода! Первый метод использует тип данных «Image», второй - преобразование изображения в строку base64 и сохранение в типе данных «byte».Base64 string и изображение

Я хочу знать, какой метод лучше в процессе и почему?

+3

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

+1

Трудно сказать, что лучше, не зная, что вы делаете? –

+1

Вы также можете найти эту ссылку полезной [Хранение изображений] (http: // stackoverflow.com/questions/3748/storing-images-in-db-yea-or-nay) –

ответ

1

Image Тип устарел, так что это не вариант. В SQL Server нет типа byte, существует тип tinyint, который эквивалентен типу byte, но я уверен, что это не то, что вы просите.

Так вот ваш фактический вопрос, исправленное неправильной терминологии:

При использовании базы данных изображений для моего веб-приложений ASP.NET, я нашел два метода! Первый метод использует тип данных VARBINARY(max), второй - преобразование изображения в строку base64 и сохранение в типе данных VARCHAR(max).

Base64 кодирование добавляет значительный размер, чтобы двоичные данные, он преобразует 3 октета в 4 октетов, поэтому он добавляет накладные расходы на 33%. Это недвижимость, потребляемая в вашем хранилище (будь то база данных или файл).

Однако веб-приложение будет служить медиа-файлов в подавляющем большинстве случаев в base64 кодированные ответы. Наличие файла, уже закодированного в хранилище, сохраняет CPU на веб-сервере, так как он может напрямую передавать содержимое хранилища, без прохождения кодировки base64. Не то, чтобы кодировка base64 была дорогостоящей (очень дешевая и очень удобная кэш-память) , когда все сделано правильно, с использованием потоковой семантики.

Итак, выберите свой яд: сохраните двоичный контент для использования меньшего дискового пространства или воспользуйтесь штрафом в размере 33% за более быструю реакцию отклика и меньше процессора на вашем веб-уровне.

Для примера правильно хранений и сервировки медиа-файлов из базы данных см Download and Upload images from aSP.Net

Как для нескончаемых дискуссий о хранении быть базы данные или файловая система, я указую вас к To BLOB or Not To BLOB: Large Object Storage in a Database or a Filesystem? и его выводу:

Исследование показывает, что если объекты больше , то в среднем один мегабайт, NTFS имеет явное преимущество над SQL Server. Если объекты находятся под 256 килобайтами, база данных имеет явное преимущество. Внутри этот диапазон, это зависит от того, насколько интенсивна интенсивность записи рабочей нагрузки .

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

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