Есть ли у кого опыт использования Apache Lucene в качестве основного провайдера данных?

zolt

Прикрутили мы значит Apache Lucene к приложению. Используем его для полнотекстового поиска по системе. И тут возник вопрос, а можно ли использовать индекс, созданный Apache Lucene в качестве основного источника данных? Т.е. не ходить в БД за данными, от слова совсем.

Приложение из области "кровавого ынтэрпрайза" - СЭД. Данных становится все больше, выборки становятся все медленнее. Понятно, что можно оптимизировать запросы, оптимизировать саму СУБД. Но ведь Lucene не плохо справляется с задачей быстрого доступа к данным по заданным критериям.

Собственно хотелось бы услышать советы по использованию (или не использованию) Lucene, или аналогичного движка, в качестве основного источника данных приложения.

В общем все сводится к такому вопросу: есть ли смысл загнать данные БД в индекс Lucene, и использовать этот индекс в качестве основного источника данных в приложении? Если так кто-то делает, поделитесь опытом как стоит это делать? Или наоборот, как не стоит этого делать? Какие "грабли" есть на этом пути?

Благодарю за внимание.

1 ответ

zolt

Есть небольшой опыт в похожем проекте и мысли по этому вопросу. (сам использовал Elastic и Cassandra в связке)

  • Один Lucene (или Elastic как обертка над ним) использовать нельзя. Там есть и будут проблемы с доступностью данных (запуск мержа внутри Lucene приведет к огромной деградации производительности поиска, балансировка нод и тд.)
  • Сам по себе Lucene нужен для поиска, поэтому его и стоит использовать именно для этой задачи

В целом, такая схема у нас показала свою жизнеспособность с огромным количеством данных. Горизонтальная масштабируемость, простота конфигурации и API и тд. Принцип работы у нас следующий:

  1. Любой поисковый запрос идет в Elastic.
  2. Если данных из документа достаточно - то они сразу и возвращаются.
  3. Если недостаточно - идем в Cassandra по айди документа.

При этом Cassandra в этой схеме используется как основное хранилище, которое а) вернет данные по ключу очень быстро б) поможет восстановить индекс в случае каких-либо проблем.

licensed under cc by-sa 3.0 with attribution.