Как эффективно хранить Hundrets тысяч документов?

StackOverflow https://stackoverflow.com/questions/3967326

  •  09-10-2019
  •  | 
  •  

Вопрос

Я работаю над системой, которая должна будет хранить много документов (PDF, слов файлов и т. Д.) Я использую Solr / Lucene для поиска информации о рассмотрении ревюма, извлеченной из этих документов, но мне также нужно место для хранения оригинала Файлы, чтобы они могли быть открыты / загружены пользователями.

Я думал о нескольких возможностях:

  • Файловая система - вероятно, не так хорошая идея для хранения 1М документов
  • База данных SQL - но мне не понадобится большинство из них реляционных функций, так как мне нужно хранить только двоичный документ и его идентификатор, так что это может быть не самое быстрое решение
  • База данных No-SQL - у них нет необходимости с ними, поэтому я не уверен, что они либо хорошо, есть также многие из них, поэтому я не знаю, какой из них выбрал

Хранение, которое я ищу должен быть:

  • быстро
  • пошаговать
  • Открытый источник (не имеет решающее значение, но приятно иметь)

Можете ли вы порекомендовать, какой лучший способ хранения этих файлов будет на вашем мнениях?

Это было полезно?

Решение

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

Другие советы

Вы можете следовать Facebook, поскольку он хранит много файлов (15 миллиардов фотографий):

  • Они изначально начались с долей NFS, обслуживаемые коммерческими приборами.
  • Затем они переехали на их файловый сервер в реализации ONW, называемый HayStack

Вот обратите внимание на Facebook, если вы хотите узнать больше http://www.facebook.com/note.php?note_id=76191543919.

Относительно доля NFS. Имейте в виду, что акции NFS обычно ограничивают количество файлов в одной папке по причинам производительности. (Это может быть битовой счетчик интуитивно понятным, если вы предполагаете, что все последние файловые системы используют B-деревья для хранения их структуры.) Итак, если вы используете Comercial NFS, такие как (NetApp), вам, вероятно, понадобится сохранить файлы в нескольких папках.

Вы можете сделать это, если у вас есть какие-либо идентификаторы для ваших файлов. Просто разделите его представление ASCII в группы из нескольких символов и сделайте папку для каждой группы. Например, мы используем целые числа IDS, чтобы файл с ID 1234567891 хранится как Storage / 0012 / 3456/7891.

Надеюсь, это поможет.

По моему мнению...

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

И пожелательно использовать SQLite, если это единственная работа.

Файловая система: Подумав о большой картинке, СУБД снова использует файловую систему. И файловая система предназначена для сохранения файлов, поэтому вы можете увидеть оптимизацию (как упомянутая Lukeh)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top