0

次のシナリオを処理する最善の方法を誰かが教えてくれることを願っています。

データベースには 3 種類のエンティティ (e1、e2、e3) があり、それぞれが独自のテーブルにあります。これらのエンティティには、独自の主キー (e1.[k1]、e2.[k2]、e3.[k3]) と、いくつかの共通フィールドといくつかの固有フィールドがあります。

e1.[k1], e1.k2?, e1.k3?, e1.commonfield, e1.uniquefield
e2.[k2], e2.k3?, e2.commonfield
e3.[k3], e3.commonfield

どこで: [主キー]、オプション?

現在、私は 4 つのコアを使用しており、そのうちの 3 つがこれらのエンティティにマップされており、その特定のエンティティの主キーを使用してインポートを行う独自の import/deltaImport があります。4 番目のコアは残りの 3 つをシャードとして使用するため、3 つのエンティティ タイプすべてを同時に検索できます。これには、4 つのコアすべてのスキーマが同一である必要があります。

[id], k1?, k2?, k3?, commonfield, uniquefield?

Solr ドキュメント ID は、主キー値を連結することにより、CloneFieldUpdateProcessorFactory / ConcatFieldUpdateProcessorFactory を使用して生成されます。

これが正しい方法であるかどうかは疑問です。技術的には、これはシャーディングの候補ではありませんが、他にどのようなアプローチが可能か、または従うべきかはわかりません. この特定の例では、これは良いアプローチですか? より良いオプションはありますか?

よろしくお願いします。

4

1 に答える 1

1

これら 3 つのエンティティの内容と数はどれくらいですか? そして何列ですか?
コンテンツが少ない場合でも、インデックス サイズはシングル コアで管理できます。すべてのデータを 1 つの Core に保持できます。

また、エンティティに基づいて一意になるようにプライマリを設計し、他のフィールドを通常のフィールドとして持つこともできます。

田畑 :-id, k1, k2, k3, commonfield, uniquefield, entity_type

一意性が維持されるように、エンティティごとに値が割り当てられる Solr の一意のキー ID フィールド。例
e1 の主キー -> e1+k1
e2 の主キー -> e2+k2
e3 の主キー -> e3+k3

他のフィールドはそのまま維持します。
各エンティティで必要に応じてフィルタリングできるように、値 e1、e2、e3 を持つ entity_type フィールドを追加することもできます。
このアプローチはシャーディングにも有効です。

于 2013-09-06T09:21:48.570 に答える