Perl - поиск во многих XML-файлах с предварительным кэшированием - архитектурный подход - PullRequest
1 голос
/ 26 декабря 2011

Как искать / фильтровать во многих файлах XML? (200КБ файлов, каждый примерно 20-40КБ размер). Это должно быть сделано в веб-приложении, поэтому нужен максимально быстрый метод.

Нужен поиск не только по указанному XML-тегу,

  • , но фильтруйте результат на основе содержимого некоторых тегов (например, отображать файлы, которые являются более новыми как <created>timpestamp</created>)
  • или полный текст в некоторых тегах, таких как <content>full text here</content>
  • данные должны находиться в файлах XML (может использоваться только разновидность кэширования)

Думая о рабочем решении:

  • использовать что-то вроде XML :: Simple или XML :: Twig в цикле, превышающем 200 тыс. Файлов, поэтому медленно
  • нужно кешировать их для быстрого доступа - конвертировать все XML-файлы в некоторую «БД» (вероятно, NoSQL)
  • Для чего я должен искать и учиться? MongoDB или что-то другое имеет хорошую поддержку в perl для задачи поиска / фильтрации?
  • Чего следует избегать / остерегаться и на что нужно обратить внимание?

Ответы [ 3 ]

2 голосов
/ 27 декабря 2011

Я не уверен в этом, но я думаю, что вы ищете какую-то базу данных XML .

Если вышеприведенное не соответствует вашим потребностям, вы всегда можете разобратьновые / обновленные XML-документы, сохраняйте их в виде проиндексированных документов на сервере Sphinx и, когда ваши пользователи выполняют поиск, обслуживают документы на его основе - это действительно быстро и без проблем работает с миллионами документов

1 голос
/ 27 декабря 2011

Чтение многих файлов всегда будет медленным.

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

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

0 голосов
/ 27 декабря 2011

Как насчет чтения файлов с помощью XML::LibXML и сохранения полученных структур с помощью Storable для создания кэша?Слишком медленное чтение сохраняемых файлов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...