2016-11-09 8 views
0

Мы планируем использовать Hibernate Search с Lucene в проекте, который в конечном итоге должен заменить текущее приложение. Поиск в спящем режиме работает очень хорошо, но у меня есть некоторые вопросы об индексировании. У нас есть много устаревших данных в нашей базе данных, работник базы данных меняет и добавляет данные в фоновом режиме, а также старое приложение, которое планируется запустить параллельно с новым приложением в течение некоторого времени. Если бы речь шла только о устаревших данных, я мог бы запустить индексирование один раз при первом запуске программы, но также получить изменения, выполненные старым приложением и рабочим ядром базы данных, мне понадобится вспомогательный помощник для обновления индекса на регулярной основе. Есть ли способ достичь этого с удовлетворительной производительностью?Hibernate Search: background helper for indexing

ответ

0

У меня была схожая ситуация, и наше решение заключалось в том, чтобы запланировать ночную работу, которая приведет к восстановлению индекса.

Мне пришлось потратить некоторое время на то, чтобы процесс перестройки был достаточно быстрым, для этого может потребоваться небольшое исследование и включение кэша второго уровня Hibernate на некоторые горячие объекты и критические отношения.

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

Другие люди используют конфигурацию ведущий/ведомый по JMS, так что один единственный узел (мастер) будет перестраивать индексы чаще, чем один раз в день: вы можете указать, какие объекты должны быть перестроены, чтобы вы могли быть в состоянии ограничить такие действия на важнейших таблицах или только те, которые действительно затрагиваются устаревшими приложениями.

Обычно такой «главный» узел будет только восстанавливать индексы и обслуживать индексы для ведомых устройств, тогда как веб-запросы будут обслуживаться подчиненными устройствами, так что служебные данные на главном устройстве могут быть дросселированы без влияния на производительность веб-сервера , Не забудьте также настроить параллелизм и пулы соединений на главном узле, чтобы он не загружал слишком большую нагрузку на вашу базу данных: в этом случае вместо того, чтобы настроить его как можно скорее, вы предпочтете он работает медленнее.