ignite-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Denis Magda <dma...@apache.org>
Subject Re: Affinity key for ignite tables
Date Thu, 03 Oct 2019 20:21:56 GMT
Only one-to-one relation is possible for affinity collocation. Your Sales
can be either collocated with Product or Customer. More details are here:
https://www.gridgain.com/docs/8.7.6/developers-guide/data-modeling/affinity-collocation

-
Denis


On Thu, Oct 3, 2019 at 7:31 AM Anton Kurbanov <antkr.dev@gmail.com> wrote:

> Hello,
>
> Ignite does map the entries to nodes in the following way: entry key >
> affinity key > partition > node
>
> You can control the first part of this mapping by defining an affinity key
> for the type. All the cache entries with same affinity key will be stored
> at the same node (affinity key = CustID, then for each N (int, long?) all
> customers, customers docs and sale entries with CustID = N will be stored
> on the same regions for everything on the right of affinity key (partition
> and node)).
>
> If you have 2+ caches that have the same affinity key, let say in your
> example it will be ProdID or CustID, they will be on the same node.
>
> This is obviously not easy for this case: if you will have ProdID as
> affinity key, you can collocate your products and sales of these products
> will be residing on the same node. If you will use CustID as affinity key,
> you will end up having Customer, CustomerDocs data and Sales located on the
> same node for each customer. However, the rest of the tables won't be
> collocated in these cases.
>
> There is another condition that should be also satisfied (in ideal world):
> keys >> partitions >> nodes, and it would be great if the difference is in
> orders of magnitude. And I would say in that case, if some of the caches
> are not massive, they could be switched to be replicated across all the
> nodes.
>
> So I would imagine that there is a limited set of products. I would make
> this table replicated and have collocated all the other tables for this
> case using CustID as affinity key if there is a large amount of customers
> and/or amount of customers is not fixed. A more real-world example would
> require knowledge of real data to make a better decision.
>
> Regards,
> Anton
>
> чт, 3 окт. 2019 г. в 12:26, Muhammed Favas <
> favas.muhammed@expeedsoftware.com>:
>
>> HI,
>>
>>
>>
>> I have read through the collocating data in ignite node and it is
>> possible to give affinity key in ignite tables using “AFFINITY_KEY”
>> keywords.
>>
>> All the examples I have gone through was mention with simple two tables
>> and it has one to one relationship.
>>
>>
>>
>> I still confused on how the affinity key column is relating the value in
>> one table with other table if I have different tables relating with same
>> key.
>>
>> Consider one sample data structure below.
>>
>>
>>
>>
>>
>> If I have all these tables created on ignite, how can I collocate the
>> data using affinity key.
>>
>>
>>
>> *Regards,*
>>
>> *Favas  *
>>
>>
>>
>

Mime
View raw message