Как предоставить большую коллекцию XML-документов (~2M) для автономных запросов (xpath)?

Мне не хватает 2 миллионов XML-документов, которые занимают 16 ГБ пространства файловой системы. Все они действительны и имеют общий DTD. Все они примерно одинакового размера (все они созданы одной и той же лабораторной информационной системой).

Я ищу простой способ для одного пользователя запросить весь 2M корпус документации. Я не хочу показывать это в Интернете или даже нескольким пользователям локальной сети; Тем не менее, я хотел бы, чтобы он мог предоставить некоторый интерфейс запросов для моей интрасети. Я гибко отношусь к языку запросов, но хотел бы иметь возможность выполнять специальные запросы. Я хочу, чтобы он был по крайней мере аналогичным, и я готов выделить дополнительное дисковое пространство по мере необходимости для размещения индексов.

Работоспособное решение должно быть плачевным на одном четырехъядерном Linux-боксе с 8 ГБ ОЗУ, новое оборудование не вариант.

Я нашел e-Xist DB, но похоже, что он не так уж активен, и демонстрационный сайт не работает.

4 ответа

Решение

Я бы попробовал в таком порядке:

  1. BaseX (Имеет приятный графический интерфейс. Наиболее перспективные из открытых источников XML db, которые я нашел. Лицензия BSD)
  2. Sedna (Мой любимый до BaseX. Лицензия Apache 2.0)
  3. Berkeley DB-XML (является встроенной плоской БД. Лицензия Sleepycat)
  4. eXist (eXist всегда был хакерской катастрофой. Лицензия GNU LGPL)

Я догадываюсь, что Беркли будет самым быстрым, но BaseX и Sedna доступны по сети, и BaseX будет проще всего начать использовать и запрашивать. Sedna также имеет систему хранения с учетом схемы, которая может быть полезна для описываемой вами ситуации. Если у вас есть коммерческое использование, лицензия на сонли Беркли может стать препятствием для вас - посмотрите внимательно.

Я согласен с Майкл Кей. Используйте eXist-db, если вы хотите открытый исходный код, и MarkLogic, если вы хотите коммерческий. Я сделал проект для программы NDIIPP Библиотеки Конгресса США, и после тщательного анализа ATAM мы выбрали eXist как превосходящий другие системы из-за его активного сообщества пользователей и широкого использования. Если у вас есть сомнения, просто выполните поиск по MarkMail. Я думаю, вы обнаружите, что eXist ведет более активную дискуссию, чем любая другая система.

Здесь около 350 страниц отчета здесь:

http://www.mnhs.org/preserve/records/legislativerecords/pilot.htm

Вы определенно хотите базу данных XML. Я бы сказал, что новые лидеры - это MarkLogic для коммерческого продукта, eXist для открытого кода. У других могут быть другие взгляды. Знакомство с новым продуктом базы данных - это всегда крутая кривая обучения (и чем эффективнее база данных, тем больше нужно учиться). Но eXist, конечно, может взломать его, не сдавайтесь при первом препятствии.

Я предпочитаю создавать инвертированный индекс с помощью полнотекстовой поисковой системы. Ниже приведены мои предпочтения. Я предлагаю вам потратить время на исследование этих 3.

  1. Solr (веб-интерфейс для запросов, легко начать)
  2. ElasticSearch (распространяется, легко начать)
  3. Сырой Lucene (1 & 2 используют Lucene за кулисами)

Почему полнотекстовые поисковые системы?

  1. Быстрее
  2. Выделив
  3. Огранка
  4. Разрешает поиск в свободной форме (с xml dbs вы будете работать против xpath или xquery или чего-то еще)
  5. Доказано, что поиск быстрее даже с огромным набором файлов
  6. файл на основе
Другие вопросы по тегам