Hi All,

Apache Ignite recommends to collocate data with data, which is a very nice
feature.  This works well if you insert data through APIs provided by Ignite
(see the following code I copy from Ignite Doc).  However, I don't know how
to handle the following cases
  1. the data (company and person) exist in the other databases such as
Cassandra.  How do I pre-cache company and person from pre-existed data?  Do
I have to use JDBC to load company, person data row by row, insert into
person and cache objects, such as  
   for org: orgs {
       find persons for org {
           personCache.put(affinityKey(p.id, org.id), org);
       }
       orgCache.put(org.id, org);
   }

   If I used Ignite native persistence store, how does Ignite cluster know
that both company and person are collocated?

  2. How do I know that @AffinityKeyMapped annotated key comes from the
cache I need to map.  I don't see the logic to define relationship between
person.companyId and company.id.  If I have two separated two methods to
load company and person cache separately, will the collocation of persons
with companies still work? 
preloadCompany();
preloadPerson(long companyId);

preloadAllPersons() {
    1. get all companies from the companyCache
    // how personsCache will know this companyId is the same cluster node as
companyCache?
    for (c: companies) {
       preloadPerson(c.companyId);
    }
}

The following code is excerpted from
https://apacheignite.readme.io/docs/affinity-collocation.  


public class PersonKey {
    // Person ID used to identify a person.
    private String personId;
 
    // Company ID which will be used for affinity.
    @AffinityKeyMapped
    private String companyId;
    ...
}

// Instantiate person keys with the same company ID which is used as
affinity key.
Object personKey1 = new PersonKey("myPersonId1", "myCompanyId");
Object personKey2 = new PersonKey("myPersonId2", "myCompanyId");
 
Person p1 = new Person(personKey1, ...);
Person p2 = new Person(personKey2, ...);
 
// Both, the company and the person objects will be cached on the same node.
comCache.put("myCompanyId", new Company(...));
perCache.put(personKey1, p1);
perCache.put(personKey2, p2);




--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to