2017-04-25 7 views
1

私はApache Igniteの初心者です。私は3つのJavaクラスClassA、ClassB、およびClassCを持っています。Apache Igniteでオブジェクトアフィニティを作成するには?

ClassA{ 
     int idA; //unique 
     String stringA; 
     public ClassA(){} 
     public ClassA(int idA,String stringA){ 
       this.idA=idA; 
       this.stringA=stringA; 
     } 
     public int getidA(){ 
       return idA; 
     } 
     public String getstringA(){ 
       return stringA; 
     } 
} 

ClassB{ 
     int idB; //unique 
     String stringB; 
     public ClassB(){} 
     public ClassB(int idB,String stringB){ 
       this.idB=idB; 
       this.stringB=stringB; 
     } 
     public int getidB(){ 
       return idB; 
     } 
     public String getstringB(){ 
       return stringB; 
     } 
} 

ClassC{ 
     int idC,idB; //idC unique. idB from ClassB 
     String stringC; 
     public ClassC(){} 
     public ClassB(int idB,int idC,String stringC){ 
       this.idB=idB; 
       this.idC=idC; 
       this.stringC=stringC; 
     } 
     public int getidC(){ 
       return idC; 
     } 
     public String getstringC(){ 
       return stringC; 
     } 
} 

例を教えてください。私はClassAを複製モードで、B & Cをパーティションモードで使いたい。 ClassCはClassBに関連しています。 ClassBのIDはClassCにあります(外部キーのように動作します)。 3つのノード、30のClassAオブジェクト、30のClassBオブジェクト、30のClassCオブジェクトがあります。それらは以下のようなノードに分散されています。

Node 1 => ClassA->30, ClassB->10,ClassC->8 
Node 2 => ClassA->30, ClassB->5,ClassC->3 
Node 3 => ClassA->30, ClassB->15,ClassC->19 

ClassBに関連するオブジェクトは、同じノードに存在する必要があります。私はいくつかの機構AffinityKeyがあることを知っていますが、これを実装する方法はわかりません。

答えて

0

あなたがやらなければならないことは、それがアフィニティーコロケーションと呼ばれ、ここでは詳細に説明されてApache IgniteではクラスBのIDに基づくクラスBとクラスCを併置する次のとおりです。特にhttps://apacheignite.readme.io/docs/affinity-collocation

、あなたのケースでは、あなたが@AffinityKeyMapped注釈をClassC.idBフィールドに添付する必要があります。

また、ここでは分割され、REPLICATEDキャッシュ詳細:あなたがこの方法あなたのキャッシュを設定すると https://apacheignite.readme.io/docs/cache-modes

、あなたはまた、分散SQLのジョインを含む、それらを照会するためにSQLを使用することができます。ここではSQLの詳細: https://apacheignite.readme.io/docs/sql-queries

+0

はすでにそれを経て。私はそれを解決することができなかったので、質問を投稿しました。 –

+0

ClassC.idBフィールドに@AffinityKeyMapped注釈を添付する必要があります。 javadocは次のとおりです。https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/cache/affinity/AffinityKeyMapped.html – Dmitriy

関連する問題