2014-10-07 3 views
0

Мы создаем индексы lucene из данных, хранящихся в хранилище событий, в виде потока событий. Эти индексы используются для обеспечения эффективных возможностей подкачки/сортировки/поиска нашими данными.Дублирование всех данных в индексе Lucene

Бывает, что мы должны дублировать все данные в индексах, чтобы выполнить наши требования. Что является концептуально лучшим способом запроса данных в этой ситуации?

Я вижу 2 варианта:

  • запрос все данные для построения представлений модели непосредственно из индекса
  • запроса только список идентификаторов из индекса и использовать эти идентификаторы для запроса данных из хранилища событий

Мы также обеспокоены масштабируемостью и отказоустойчивостью, поэтому я тоже должен думать об этом. Какие-либо предложения?

ответ

0

Я думаю, вариант # 1 лучше. Сохраните данные в индексе, только те фрагменты, которые вам нужно построить в модели из таблицы с постраничным/отфильтрованным столом. И принесите их оттуда. Это молниеносно.

Hibernate Search использует подход, аналогичный варианту № 2. Он хранит id и класс Java, ищет его в индексе, а затем извлекает из базы данных. Хотя это можно обойти, если это слишком дорого. Недавно у меня был случай, который я использовал, потому что поведение по умолчанию убило мою БД. Работает как шарм.

Я никогда (через 4 проекта) не испытал повреждение индекса, но в приложении должно быть возможно переопределение.

Вы используете снимки событий? Они также могут быть проиндексированы.

 Смежные вопросы

  • Нет связанных вопросов^_^