2013-05-13 4 views
0

В моем приложении Windows 8/RT я использую SQLite DataBase (sqlite-net) магазин ведьм в изолированном хранилище. В DataBase у меня много данных, включая файлы (изображения, PDF и другие) ссылки. Я получаю эти ссылки с веб-сервера. Когда я получил ссылку, я хочу загрузить файл и сохранить его локально.

Мой вопрос: что является лучшим способом хранения большого количества файлов (100+)?
Важно: Мне нужно быстро найти нужный файл.Лучший способ хранения большого количества файлов с добавлением быстрого поиска

У меня есть три идеи:

  1. Создание другой базы данных только для файлов (я не могу изменить существующий)
  2. Создать папку в IS и хранить непосредственно здесь.
  3. Создайте список файлов и сохраните их в IS.

Что было бы лучше/быстрее? Или у кого-то есть еще одно отличное решение?

+0

Каковы средние и наибольшие размеры файлов, которые вы ожидаете? – mvp

+0

max size == 5Mb, средний размер == 1Mb – jimpanzer

ответ

0

100 файлов не такие большие, как вы можете легко хранить до 100 тыс. Файлов (или папок) в одном каталоге (NTFS).

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

Затем при использовании файла вы можете передать его пользователю, используя исходное имя файла, используя API StorageFile.

Выходя за пределы файлов размером 100 тыс., Вы можете создать структуру подпапки из первых двух букв хэша.

В любом случае сохранение метаданных файла в базе данных и файлов в каталоге было наиболее полезным для нас в прошлом.

0

100 файлов со средним размером 1 МБ всего 100 МБ.

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

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

База данных также предоставляет вам поддержку транзакций. У вас могут возникнуть проблемы с чтением и записью BLOB в базу данных, но это не очень сложно.

+0

Почему люди так говорят? Хранение файлов по отдельности является хрупким, если вы всегда обращаетесь к ним через базу данных. – reinierpost

+0

Не знаю почему. Я стараюсь использовать базу данных для всего. Я бы, вероятно, пересмотрел, если мои файлы были больше 100 МБ – mvp

+1

Я думаю, что это часто просто автоматическая ассоциация: документы обычно являются файлами в файловой системе, поэтому разработчику не приходит в голову, что они также могут быть сохранены по-другому. – reinierpost

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