Hello Stephan,
I understand, but the tables with large volume of data would have these two
keys in them. I can replicate the smaller tables. I suppose I will need to
generate a surrogate key for these "affinity keys". Still I do not want to
use a POJO if I can help it.

The other question I had was what if I have two sets of tables with two
different affinity keys, some on key A and some other on key B. Do I need
to put these in separate ignite clusters?

thanks.

On Tue, Jan 21, 2020 at 5:48 AM Ilya Kasnacheev <[email protected]>
wrote:

> Hello!
>
> Even if you had two affinity keys, you would not be able to do collocated
> joins with tables employing different affinity keys.
>
> I.e., if you had a table with affinity key (city_id, country_id) you will
> only be able to collocate it with another table of affinity key (city_id,
> country_id), but NOT with tables using affinity keys (city_id),
> (country_id) or (country_id, city_id).
>
> You will have to think around this limitation by choosing the most
> important criteria to collocate data on, and doing the rest via lookup
> tables or distributed joins.
>
> Regards,
> --
> Ilya Kasnacheev
>
>
> пн, 20 янв. 2020 г. в 21:48, narges saleh <[email protected]>:
>
>> Thanks Stephan,
>>
>> I don't want to use POJO classes if I can help it.
>> I want to mimic the following in my configuration file:
>>
>> CREATE TABLE IF NOT EXISTS Person (
>>   id int,
>>   city_id int,
>>   name varchar,
>>   age int,
>>   company varchar,
>>   PRIMARY KEY (id, city_id)) WITH 
>> "template=partitioned,affinity_key=city_id";
>>
>> Furthermore, I want to see if it is possible to define affinity over 
>> multiple keys, for example, have the above as
>>
>> CREATE TABLE IF NOT EXISTS Person (
>>   id int,
>>   city_id int,
>>   name varchar,
>>   age int,
>>   company varchar,
>>   PRIMARY KEY (id, city_id)) WITH 
>> "template=partitioned,*affinity_key=city_id, country_id"*
>>
>> *;*
>>
>> I have many caches and the relationship between them imply different set of 
>> affinity keys. All are defined within the same configuration file.
>>
>>
>> On Mon, Jan 20, 2020 at 12:40 PM narges saleh <[email protected]>
>> wrote:
>>
>>> Thanks Stephan,
>>>
>>> I don't want to use POJO classes if I can help it.
>>> I want to mimic the following in my configuration file:
>>>
>>>
>>> On Mon, Jan 20, 2020 at 10:30 AM Stephen Darlington <
>>> [email protected]> wrote:
>>>
>>>> Details on how to configure affinity colocation can be found in the
>>>> documentation:
>>>> https://www.gridgain.com/docs/latest/developers-guide/data-modeling/affinity-collocation
>>>>
>>>>
>>>> In short, use the “indexedTypes” property in the XML file and the
>>>> @AffinityKeyMapped annotation in your POJO key,
>>>>
>>>> Regards,
>>>> Stephen
>>>>
>>>> On 18 Jan 2020, at 12:28, narges saleh <[email protected]> wrote:
>>>>
>>>> Hi All,
>>>>
>>>> I understand that CacheKeyConfiguration is defined at ignite
>>>> configuration level. That being the case, how do you tie the affinity key
>>>> to a particular cache, within the XML config file?
>>>> The following code snippet shows how to do in java code.
>>>>
>>>>   CacheConfiguration<PersonKey, Person> personCfg = new 
>>>> CacheConfiguration<PersonKey, Person>("persons");
>>>>
>>>>     //configure the affinity key
>>>>     personCfg.setKeyConfiguration(new CacheKeyConfiguration("Person", 
>>>> "companyId"));
>>>>
>>>> Also, how do you define an affinity key with multiple fields, using 
>>>> CacheKeyConfiguration, say SSN and company id are both part of the 
>>>> affinity key.
>>>>
>>>> thanks.
>>>>
>>>>
>>>>
>>>>

Reply via email to