2016-11-09 18 views
0

プロジェクトでLuceneでHibernate Searchを使用する予定であり、最終的に現在実行中のアプリケーションを置き換える必要があります。 Hibernateの検索自体は非常にうまくいきますが、インデックスについていくつか質問があります。私たちのデータベースには、多くのレガシーデータがあります。データベースワーカーは、バックグラウンドでデータを変更したり追加したりします。また、新しいアプリケーションと並行して実行される予定の古いアプリケーションもあります。レガシーデータに関するものだけであれば、プログラムの最初の起動時にインデックスを1回実行することができましたが、古いアプリケーションとデータベースワーカーによって実行された変更を取得するために、インデックスを更新するバックグラウンドヘルパーが必要です定期的に。満足のいくパフォーマンスでこれを達成する方法はありますか?Hibernate Search:インデックス作成のためのバックグラウンドヘルパー

答えて

0

私自身も同様の状況がありました。私たちの解決策は、インデックスの再構築を実行する夜間のジョブをスケジュールすることでした。

私は再構築プロセスが十分に速くなるようにしばらく時間を費やさなければなりませんでしたが、いくつかの研究が必要で、いくつかのホットなエンティティと重要な関係でHibernateの第2レベルキャッシュを有効にする必要があります。

もちろん、このアプローチは、アプリケーションが夜間の秋までわずかに同期していないインデックスで作業することを許容できる場合にのみ有効です。

他の人がJMS上でマスター/スレーブ構成を使用しているため、1つのノード(マスター)が1日に1回よりも頻繁に索引を再作成します。索引を再構築する必要があるエンティティーを指定できます重要なテーブルや、レガシーアプリケーションが実際に触れたテーブルだけにそのようなアクションを制限することができます。

通常、このような「マスター」ノードは、スレーブに対してインデックスを再構築し、インデックスの更新を行いますが、Web要求がスレーブによって処理されるため、Webサーバーのパフォーマンスに影響を与えずにマスタのオーバーヘッドを抑えることができます。マスターノードの並列性と接続プールも調整して、データベースに負荷をかけすぎないようにしてください。この場合はできるだけ早く終了するように調整するのではなく、それはより遅く働く。

関連する問題