4

SOLR でインデックス付けされる MySQL データベースから複数のエンティティがあります。

最高のパフォーマンス結果 (クエリ時間) を得るための最良の方法は何ですか?

  • エンティティ タイプのフィールドで単一の SOLR コレクション (コア) を使用する
  • または、すべてのエンティティ タイプのコレクション (コア) を持つ

ありがとう

4

1 に答える 1

4

考慮すべきいくつかのパラメーターを追加します (ほとんどの場合、エンティティごとに 1 つのコアを使用することをお勧めしませんが、具体的に求めているパフォーマンス上の理由だけではありません)。

  1. より多くのコアは、より多くのエンドポイントを意味します。あなたのアプリケーションは、そのようなことを認識している必要があります。また、コア間でクエリを実行するのが難しい場合があります。たとえば、名前などの共通の属性で検索する場合、各コアに対して複数のクエリを実行し、結果を集計する必要があります。そして、これは、単一のコアを照会する際にすぐに使える関連性の側面を見逃すことになります。

  2. データベースに対して最小限のリクエストを行うことを検討してください。N+1 jdbc 接続では、インデックス作成が大幅に遅くなります。代わりに、結果をビューに集約してみてください。単一のクエリを起動できる場合は、インデックス作成がはるかに高速になります。

  3. 共通の属性に対する範囲クエリは、コア全体では実行できません。例 - 本と音楽 CD の価格が異なるコアに格納されている場合、X と Y の価格帯の間のすべての製品を取得することはできません。

  4. ファセット機能も損なわれます。

そのため、エンティティごとに 1 コアの形式で並列化することにより、インデックス時間のパフォーマンスがいくらか向上することに気付くかもしれませんが、これにより、メリットを享受できる機能が減少する可能性があると思います。

于 2013-03-13T16:31:52.343 に答える