3 Ekim 2021 Pazar

Affinity Colocation

Giriş
Birbirleriyle ilişkili - OneToMany - tarzı nesneleri aynı düğümde saklamak için Affinity Key kullanılır

3 tane yöntem var
1.  @AffinityKeyMapped anotasyonu . Fazladan bir PersonKey sınıfı yaratılır

2. CacheConfiguration ile birlikte CacheKeyConfiguration sınıfını kullanmak. Fazladan bir PersonKey sınıfı yaratılır

3. CacheConfiguration ile birlikte AffinityKey sınıfını kullanmak. Bu kullanımda IgniteCache.put() metodu içinde AffinityKey nesnesi de parametre olarak geçilir.

@AffinityKeyMapped Anotasyonu
Örnek
Elimizde şöyle bir kod olsun
class Person {
  private int id;
  private String companyId;
  private String name;
  ...
}

class PersonKey {
  private int id;

  @AffinityKeyMapped
  private String companyId;
  ...
}

class Company {
  private String id;
  private String name;
  ...
}
Şöyle yaparız
CacheConfiguration<PersonKey, Person> personCfg = 
  new CacheConfiguration<PersonKey, Person>("persons");
personCfg.setBackups(1);

CacheConfiguration<String, Company> companyCfg = new CacheConfiguration<>("companies");
companyCfg.setBackups(1);

try (Ignite ignite = Ignition.start()) {
  IgniteCache<PersonKey, Person> personCache = ignite.getOrCreateCache(personCfg);
  IgniteCache<String, Company> companyCache = ignite.getOrCreateCache(companyCfg);

  Company c1 = new Company("company1", "My company");
  Person p1 = new Person(1, c1.getId(), "John");

  // Both the p1 and c1 objects will be cached on the same node
  personCache.put(new PersonKey(p1.getId(), c1.getId()), p1);
  companyCache.put("company1", c1);

  // Get the person object
  p1 = personCache.get(new PersonKey(1, "company1"));
}


Hiç yorum yok:

Yorum Gönder

Ignite Transaction Kullanımı

Giriş Bir tablo 3 tane atomicity değerinden birisine sahip olabilir. 1. ATOMIC 2. TRANSACTIONAL 3. TRANSACTIONAL_SNAPSHOT ATOMIC Açıklaması ...