Какое место хранения, SQL Server или файловая система, позволит повысить производительность при сохранении изображений в формате tiff?
-
22-07-2019 - |
Вопрос
Нашей системе необходимо хранить изображения в формате tiff размером около 3 КБ.Мы получаем ~300 изображений одновременно и нам необходимо их быстро обработать.Как только будет получено около 100 000 изображений, они будут перенесены из нашей системы в другую архивную систему или удалены.
Я ищу наилучшую производительность при первоначальном сохранении файлов изображений.Задача передачи изображений для архивирования менее критична к производительности.
Какое место хранения, SQL Server или файловая система, позволит повысить производительность при сохранении изображений в формате tiff?
Есть ли какие-либо другие соображения или проблемы, о которых следует знать?
Решение
Хранение изображений в файловой системе даст вам лучшую производительность. Вам просто нужно поместить запись в соответствующую таблицу базы данных для вложений tiff-изображений - и использовать ее для получения пути к изображению в файловой системе. Р>
Возможно, вы захотите еще больше повысить производительность, разместив изображения на веб-сервере - IIS (если уместно), и ваши клиентские приложения (опять же, если уместно) получат их непосредственно там вместо этого.
Другие советы
По моему опыту, SQL Server был неплох при хранении больших двоичных объектов в базе данных. Пока я следую рекомендациям, связанным с запросами, нормализацией и т. Д., Я считаю, что они хорошо работают.
По какой-то причине я лично не хочу хранить огромные файлы PDF, DOC и JPG в моей базе данных, но тогда это именно то, что делает Microsoft SharePoint, и делает это хорошо.
Я бы определенно подумал о том, чтобы добавить капли в мою базу данных.
Версия SQL Server 2008 имеет новую функцию под названием FILESTREAM.В части их документации также есть раздел, посвященный лучшие практики, в котором ребята из MS заявляют, что FILESTREAM должен вступить в игру, если BLOB-объекты обычно имеют размер более 1 МБ.
На этой странице MSDN указано:
Когда использовать FileStream, если следующие условия истины, вам следует рассмотреть возможность использования FileStream:- Размер сохраняемых объектов в среднем превышает 1 МБ.Для более мелких объектов хранение варбинных (максимальных) каждых людей в базе данных часто обеспечивает лучшую потоковую производительность.
Поэтому я думаю, что с помощью TIFF размером 3 КБ вы могли бы удобно хранить его внутри поля VARBINARY(MAX) в таблице SQL Server 2005.Поскольку он даже меньше размера страницы 8 КБ для SQL Server, он отлично подойдет!
Возможно, вы также захотите поместить свои BLOB-объекты в отдельную таблицу и оттуда ссылаться на свою «базовую» строку данных.Таким образом, если вам нужно запросить только базовые данные (ваши целые числа, varchars и т. д.), ваш запрос не будет перегружен BLOB-объектами, хранящимися вперемешку с другими вещами.
Марк
Система каталогов спутников в INPE / Бразилия хранит ссылку на изображения tiff, хранящиеся в файловой системе. Но изображения чуть больше - +/- 100 МБ. Если файл должен отображаться в браузере, код php считывает содержимое tiff с диска и рисует его.