Используя SQL Server как хранилище Изображения

1-й шаг:

2-й шаг:

Я пробую обоих, но ничего не работает.

Из вашего проекта -

перейдите в Gradle Scripts >> build.gradle (Module: app), затем удалите ниже кода (если есть)

.............................................

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_6
}

......................................... ....

удалите его, а затем очистите проект, затем запустите. нет необходимости в java-доме, нет необходимости менять версию

20
задан eulerfx 2 December 2008 в 21:19
поделиться

6 ответов

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

Счастливо, SQL-сервер 2008 позволяет Вам иметь свой пирог и есть его также, с:

Атрибут FILESTREAM

В SQL Server 2008, можно применить атрибут FILESTREAM к varbinary столбцу, и SQL Server затем хранит данные для того столбца в локальной файловой системе NTFS. Хранить данные в файловой системе дает два ключевых преимуществ:

  • Производительность соответствует производительности потоковой передачи файловой системы.
  • размер BLOB ограничен только размером тома файловой системы.

Однако столбцом можно управлять точно так же, как любой другой столбец BLOB в SQL Server, таким образом, администраторы могут использовать управляемость и средства безопасности SQL Server для интеграции управления данными BLOB с остальной частью данных в реляционном database—, не будучи должен управлять данными файловой системы отдельно.

Определение данных как столбец FILESTREAM в SQL Server также гарантирует непротиворечивость уровня данных между реляционными данными в базе данных и неструктурированными данными, которые физически хранятся в файловой системе. Столбец FILESTREAM ведет себя точно то же как столбец BLOB, что означает полную интеграцию технического обслуживания, такого как резервное копирование и восстановление, полная интеграция с моделью обеспечения безопасности SQL Server и поддержка полной транзакции.

Разработчики приложений могут работать с данными FILESTREAM через одну из двух моделей программирования; они могут использовать Transact-SQL, чтобы получить доступ и управлять данными точно так же, как стандартные столбцы BLOB, или они могут использовать API потоковой передачи Win32 с Transact-SQL транзакционная семантика для обеспечения непротиворечивости, что означает, что они могут использовать стандартные вызовы чтения-записи Win32 для БЛОБОВ FILESTREAM, как они были бы при взаимодействии с файлами в файловой системе.

В SQL Server 2008, столбцы FILESTREAM могут только хранить данные на объемах локального диска, и некоторые функции, такие как прозрачное шифрование и табличные параметры не поддерживаются для столбцов FILESTREAM. Кроме того, Вы не можете использовать таблицы, которые содержат столбцы FILESTREAM в снимках базы данных или сессиях зеркального отражения базы данных, хотя передача журналов поддерживается.

27
ответ дан 30 November 2019 в 00:32
поделиться

Проверьте этот отчет от Исследования MS ( http://research.microsoft.com/research/pubs/view.aspx?msr_tr_id=MSR-TR-2006-45 )

, Они детализируют точно, что Вы ищете. Короткая версия - то, что любой размер файла более чем 1 МБ начинает ухудшать производительность по сравнению с сохранением данных в файловой системе.

3
ответ дан 30 November 2019 в 00:32
поделиться

Я сомневаюсь, что O(log n) для поисков была бы проблема. Вы говорите, что у Вас есть 10 ГБ изображений. Принятие среднего размера изображения говорит, что 50 КБ, это - 200 000 изображений. Выполнение индексируемого поиска в таблице для 200K строк не является проблемой. Это было бы маленьким по сравнению со временем, должен был на самом деле прочитать изображение из диска и передать его через Ваше приложение и клиенту.

Это все еще достойно рассмотрения обычные за и против хранения изображений в базе данных по сравнению с хранением путей в базе данных в файлы в файловой системе. Например:

  • Изображения в базе данных повинуются изоляции транзакции, автоматически удаляют, когда строка удалена, и т.д.
  • , База данных с 10 ГБ изображений, конечно, больше, чем база данных, хранящая только пути к файлам изображений. Резервная скорость и другие факторы релевантны.
  • необходимо установить заголовки MIME на ответе при обслуживании изображения от базы данных через приложение.
  • изображения в файловой системе более легко кэшируются веб-сервером (например, Apache mod_mmap) или могли быть вручены более минимизированным веб-сервером как lighttpd. Это - на самом деле довольно большое преимущество.
1
ответ дан 30 November 2019 в 00:32
поделиться

Для чего-то как веб-сайт электронной коммерции я был бы moe, вероятно, для движения с хранением изображения в хранилище блоба на базе данных. В то время как Вы не хотите участвовать в преждевременной оптимизации, просто преимущество наличия моих изображений быть легко организованным вместе с моими данными, а также очень портативное, является одним автоматическим преимуществом для чего-то как электронная коммерция.

0
ответ дан 30 November 2019 в 00:32
поделиться

Если изображения будут индексированы затем, то поиск не будет большой проблемой. Я не уверен, но я не думаю, что поиск для файловой системы является O (1), больше как O (n) (я не думаю, что файлы индексируются файловой системой).

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

0
ответ дан 30 November 2019 в 00:32
поделиться

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

Однако нет никакого "корректного" решения этого.

0
ответ дан 30 November 2019 в 00:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: