Как эффективно хранить Hundrets тысяч документов?
-
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)