You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by narges saleh <sn...@gmail.com> on 2020/05/13 11:50:55 UTC
Basic Affinity Question
Hi All,
If I have these two caches/tables defined via query entities, in a config
file,
Employee (partitioned)
employee-id
company-id
name
primary key(employee-id, company-id), affinity(company-id)
Company (partitioned)
company-id.
name
primary key(company-id)
If I do AffinityRun or mapkeystonodes with two server ignite nodes running
on the same physical box, shouldn't I see the employee records with the
same company-id and the company record with the same company-id on the same
ignite node?
thanks.
Re: Basic Affinity Question
Posted by Stephen Darlington <st...@gridgain.com>.
No, it needs to be able to determine which node the data should be on without reference to anything else. This means that you’d need company-id in your address table.
> On 13 May 2020, at 21:23, narges saleh <sn...@gmail.com> wrote:
>
>
> My other question is whether affinity is transitive.
> Company (primary key: company-id)
> Employee(primary key: employee-id + company-id) <- company id = affinity key
> Address(Primary key: address-id + employee -id) <- employee id = affinity key
>
> Would the records related company, employee and address for the employee end up on the same node? In other words, I won't need to drag company id in the address table, in order to collocate all three record types.
>
>> On Wed, May 13, 2020 at 10:50 AM narges saleh <sn...@gmail.com> wrote:
>> Thanks.
>> If I try AffinityRun with collection of caches and the affinity key, I'd get NPE with cache.localpeek using the primary key of the dependent cache/table but the cache query itself succeeds.
>> Is there a working example?
>>
>>> On Wed, May 13, 2020 at 8:10 AM Stephen Darlington <st...@gridgain.com> wrote:
>>> Yes, but you also need to make sure you use the correct affinityRun method. There’s one where you specify multiple caches and you need to use that one.
>>>
>>> > On 13 May 2020, at 12:50, narges saleh <sn...@gmail.com> wrote:
>>> >
>>> > Hi All,
>>> > If I have these two caches/tables defined via query entities, in a config file,
>>> > Employee (partitioned)
>>> > employee-id
>>> > company-id
>>> > name
>>> > primary key(employee-id, company-id), affinity(company-id)
>>> >
>>> > Company (partitioned)
>>> > company-id.
>>> > name
>>> > primary key(company-id)
>>> >
>>> > If I do AffinityRun or mapkeystonodes with two server ignite nodes running on the same physical box, shouldn't I see the employee records with the same company-id and the company record with the same company-id on the same ignite node?
>>> >
>>> > thanks.
>>> >
>>>
>>>
Re: Basic Affinity Question
Posted by narges saleh <sn...@gmail.com>.
My other question is whether affinity is transitive.
Company (primary key: company-id)
Employee(primary key: employee-id + company-id) <- company id = affinity key
Address(Primary key: address-id + employee -id) <- employee id = affinity
key
Would the records related company, employee and address for the employee
end up on the same node? In other words, I won't need to drag company id in
the address table, in order to collocate all three record types.
On Wed, May 13, 2020 at 10:50 AM narges saleh <sn...@gmail.com> wrote:
> Thanks.
> If I try AffinityRun with collection of caches and the affinity key, I'd
> get NPE with cache.localpeek using the primary key of the dependent
> cache/table but the cache query itself succeeds.
> Is there a working example?
>
> On Wed, May 13, 2020 at 8:10 AM Stephen Darlington <
> stephen.darlington@gridgain.com> wrote:
>
>> Yes, but you also need to make sure you use the correct affinityRun
>> method. There’s one where you specify multiple caches and you need to use
>> that one.
>>
>> > On 13 May 2020, at 12:50, narges saleh <sn...@gmail.com> wrote:
>> >
>> > Hi All,
>> > If I have these two caches/tables defined via query entities, in a
>> config file,
>> > Employee (partitioned)
>> > employee-id
>> > company-id
>> > name
>> > primary key(employee-id, company-id), affinity(company-id)
>> >
>> > Company (partitioned)
>> > company-id.
>> > name
>> > primary key(company-id)
>> >
>> > If I do AffinityRun or mapkeystonodes with two server ignite nodes
>> running on the same physical box, shouldn't I see the employee records with
>> the same company-id and the company record with the same company-id on the
>> same ignite node?
>> >
>> > thanks.
>> >
>>
>>
>>
Re: Basic Affinity Question
Posted by narges saleh <sn...@gmail.com>.
Thanks.
If I try AffinityRun with collection of caches and the affinity key, I'd
get NPE with cache.localpeek using the primary key of the dependent
cache/table but the cache query itself succeeds.
Is there a working example?
On Wed, May 13, 2020 at 8:10 AM Stephen Darlington <
stephen.darlington@gridgain.com> wrote:
> Yes, but you also need to make sure you use the correct affinityRun
> method. There’s one where you specify multiple caches and you need to use
> that one.
>
> > On 13 May 2020, at 12:50, narges saleh <sn...@gmail.com> wrote:
> >
> > Hi All,
> > If I have these two caches/tables defined via query entities, in a
> config file,
> > Employee (partitioned)
> > employee-id
> > company-id
> > name
> > primary key(employee-id, company-id), affinity(company-id)
> >
> > Company (partitioned)
> > company-id.
> > name
> > primary key(company-id)
> >
> > If I do AffinityRun or mapkeystonodes with two server ignite nodes
> running on the same physical box, shouldn't I see the employee records with
> the same company-id and the company record with the same company-id on the
> same ignite node?
> >
> > thanks.
> >
>
>
>
Re: Basic Affinity Question
Posted by Stephen Darlington <st...@gridgain.com>.
Yes, but you also need to make sure you use the correct affinityRun method. There’s one where you specify multiple caches and you need to use that one.
> On 13 May 2020, at 12:50, narges saleh <sn...@gmail.com> wrote:
>
> Hi All,
> If I have these two caches/tables defined via query entities, in a config file,
> Employee (partitioned)
> employee-id
> company-id
> name
> primary key(employee-id, company-id), affinity(company-id)
>
> Company (partitioned)
> company-id.
> name
> primary key(company-id)
>
> If I do AffinityRun or mapkeystonodes with two server ignite nodes running on the same physical box, shouldn't I see the employee records with the same company-id and the company record with the same company-id on the same ignite node?
>
> thanks.
>