2016-10-06 12 views
0

次の3つのテーブル(ここでは数値は整数値)があり、table_1_keyにはcompanyIdのアフィニティコロケーションがあります。その後、親和性コロケーションはどのように起こるでしょうか?テーブル1のエントリはテーブル2のエントリまたはテーブル3のエントリと一緒に配置されます(両方のテーブルに1〜10の整数値の列があるので)?他の場合にはApache IgniteでのAffinityコロケーションの動作

table_1_key --> {male_personId(1-10 numeric value), companyId(1-10 numeric value), age, address} has 100 entries  
table_2_key --> {female_personId(1-10 numeric value), surname, age, address} has 20 entries 
table_3_key --> {company_name, companyId(1-10 numeric value)} has 10 entries 

私たちが(他の言葉でのApacheのIgniteも親和性、コロケーションながらキー範囲を考慮しない)?起こるコロケーションをアフィニティーする方法を、次に1-10 1から5までfemale_personId範囲の変更をしましょうか?

答えて

1

アフィニティコロケーションは、設定する方法で行われ、デフォルトでコロケーションはありません。詳細については、このページを参照してください。https://apacheignite.readme.io/docs/affinity-collocation#collocate-data-with-data

あなたのスキーマによれば、おそらくcompanyIdによって配置されます。つまり、会社に属するすべての人物は、会社オブジェクト自体と同じノードに格納されます。

キーレンジは、アフィニティにいかなる影響も与えません。キーは、実際にキャッシュ内にあるかどうかに関係なく、アフィニティキーに基づいてノードにマップされます。

+0

しかし、ここではcompanyIdとfemale_personIdオブジェクトの両方が整数型であるため、igniteはテーブル1をテーブル3ではなくテーブル2と一緒に配置しなければならないと判断します。テーブルキーのフィールド名(ここではcompanyId) ? – rishi007bansod

+0

Igniteは、キャッシュキー - >アフィニティキー - >パーティション番号 - >ノードのような複数のマッピングステップでエントリが格納されているノードを定義します。最初のステップはユーザーによって制御されます(ドキュメントを参照)。同じアフィニティ・キーにマップされているすべてのキャッシュ・キーは、同じノードに格納されます。そして、これはキャッシュキーのタイプに依存しません、それらは異なっていても同じであってもかまいません。 –

関連する問題