Использование Solr / Lucene в качестве персистентной технологии - PullRequest
1 голос
/ 11 января 2012

Обратный индекс и запрос Solr / Lucene поддерживают подмножество функций СУБД, то есть фильтрацию, сортировку, групповую передачу, разбиение по страницам. В этом смысле он очень близок к базе данных nosql, поскольку он также не поддерживает транзакции и присоединяется.

С такой структурой, как Hibernate-Search , можно отображать даже сложные объекты в индекс и выполнять основные операции CRUD, поддерживая полнотекстовый поиск.

Вопросы:

1) Запись пропускной способности Из моего прошлого опыта пропускная способность записи индекса Lucene намного ниже, чем в СУБД

2) Скорость запроса Скорость запроса для индекса Lucene должна быть сопоставима, если не быстрее, из-за обратного индекса.

3) Масштабируемость Может быть решен с использованием репликации или Solr-cloud .

4) Способность обрабатывать большой набор данных Я использовал lucene index с 15M + документом на одной JVM без каких-либо проблем с производительностью.

Справочная информация:

В настоящее время я использую MongoDB с Solr, и он работает достаточно хорошо. Тем не менее, это не так просто, как хотелось бы, потому что:

  1. Синхронизация индексов Монго и Солра (нетривиальная задача)
  2. Преобразование между объектом Java <-> mongo <-> solr ( SpringData и SolrJ помогает, но все же не очень хорошо).
  3. Зачем использовать две "персистентные" технологии, если одна будет делать

Из проведенного мною небольшого теста я не нашел никаких технических препятствий, которые бы помешали мне использовать Solr / Lucene в качестве настойчивости. Однако я также не хочу совершать такой радикальный рефакторинг без дополнительной информации. Мне также известны такие проекты, как Solandra , в которых предпринимались попытки объединить NoSQl и Solr, но они, похоже, недостаточно зрелы.

Вопрос

Таким образом, для приложений, в которых полнотекстовый поиск является основным (но не единственным) требованием, возможно ли затем отказаться от традиционного (RDBMS) и современного (NoSQL) хранилища данных?

Отличный справочник Благодаря ратикулину

Atlassian (Jira) - индексирование универсальных данных Lucene

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Я думаю Я помню, как смотрел какую-то презентацию от Atlassian, где они объяснили, что для Jira в настоящее время используют только Lucene, они оставили свою предыдущую БД (какой бы она ни была) и использовали Lucene в качестве хранилища. Они были счастливы.

Если бы кто-то мог подтвердить, что это было бы им круто.

Редактировать:

http://blogs.atlassian.com/rebelutionary/downloads/tssjs2007-lucene-generic-data-indexing.pdf

2 голосов
/ 11 января 2012

Lucene - библиотека полнотекстового поиска / поиска информации. Solr - поисковый сервер предприятия, построенный на основе Lucene.

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

  1. Поскольку пропускная способность индекса Lucene, которую вы сравниваете с RDBMS, не поможет, и сравнивать ее неправильно, может быть ряд факторов, которые влияют на пропускную способность Lucene в зависимости от конфигурации схемы поиска.

  2. Lucene имеет одну из хорошо известных и лучших структур данных для поиска информации, скорость запросов, которую вы получаете, зависит от ряда факторов от конфигурации, HW и т. Д.

  3. Очевидно, что это путь.

  4. Обработка 15M + на одной JVM - это прекрасно, но она не идет далеко без понимания размера документа, используемого набора функций, памяти JVM, ядер ЦП и т. Д. *

Теперь, если ваша проблема в том, что СУБД является реальным узким местом масштабируемости, вы можете использовать выбор хранилища данных NoSQL на основе ваших постоянных потребностей, которые вы могли бы затем интегрировать в Solr / Lucene для обеспечения возможности полнотекстового поиска. Поскольку NoSQL быстро развивается и является довольно новым, вы можете не найти достаточно стабильных адаптеров для интеграции Solr / Lucene с NoSQL.

Edit:

Теперь, когда вопрос обновлен, этот вопрос уже хорошо обсуждался в этом вопросе NoSQL (MongoDB) против Lucene (или Solr) в качестве базы данных . Это может быть неприятно иметь слишком много движущихся частей, Lucene / Solr вполне может заменить MongoDB, в зависимости от приложения. Но вы должны учитывать, что NoSQL Data Store построен с нуля, чтобы быть полностью распределенным, вы не теряете или имеете ограниченную функциональность из-за масштабирования, в то время как Solr не построен с учетом распределенных вычислений, поэтому существуют ограничения Ограничения распределенного поиска когда дело доходит до горизонтального масштабирования. SolrCloud может быть ответом тоже, что ..

...