2016-12-12 10 views
0

私はhttps://apacheignite.readme.io/docs/affinity-collocationを読んでいますが、アフィニティーコロケーションがどのように動作するのか、その動作はどういうものなのか分かりません。Ingite親和性コロケーションはどのように機能しますか?

私はcompanyIdが1であるEmployeeオブジェクト(そのidは1000)を持っていますが、このEmployeeオブジェクトはidが1のCompanyオブジェクトと並置されます。 つまり、同じノードに存在しますが、別のキャッシュ:

Employee Cache: <1000, EmployeeObjWhoseCompanyIdIs1> 
Company Cache: <1, CompanyObj> 

しかし、どのような第三のキャッシュがある場合は、国のキャッシュが言う、それはまた1であるキーを持っている、それは次のとおりです。次に

Country Cache: <1, CountryObj> 

、意志EmployeeオブジェクトとCountryオブジェクトも同じノードに存在しますか?アフィニティクラス定義から

、それだけで併置するするに affKeyを定義し、それがこのaffKey

答えて

1

を所有しているキャッシュを指定していないはい、彼らは一つのノードに保存されます。しかし、私はこれを偶然として扱います。なぜなら、この特定のケースでは、同じタイプと値をキーに使用したためです。論理的に会社IDと国IDは互いに関連していないので、それらが一緒に配置されているとは言えません。

+0

お手数ですがお返事ありがとうございます。しかし、私はこれが偶然だとは思わない:-)。実際には、idフィールドに自動インクリメント機能を使用する多くのデータベーステーブルがあります。つまり、両方とも数値型(またはLong型)であり、同じ値になります。私はこれが論理的に間違ったことが起こる(会社IDと国IDは関係ないが、彼らは同じノードにとどまる)という変化を劇的に増やすと思う。 – Tom

+0

@Tom、意味論的にはこれは偶然である。私。ビジネスロジックは決してこの事実に頼るべきではないので、それをコロケーションとして扱うべきではありません。しかし、これはかなり頻繁に起こります。 –

+0

明確な説明をいただきありがとうございます。今、私はその行動とその効果を理解しました。 – Tom

関連する問題