2016-12-12 4 views
0

Я читаю через https://apacheignite.readme.io/docs/affinity-collocation, но у меня не было хорошего понимания того, как работает с affinity-collocation или его поведением.Как работает affinity-collocation в Inite?

Предположим, у меня есть объект Employee (его идентификатор - 1000), чей companyId равен 1, то этот объект Employee будет размещен вместе с объектом Company, идентификатор которого равен 1. То есть они будут находиться в одном и том же узле, но в отличается кэш:

Employee Cache: <1000, EmployeeObjWhoseCompanyIdIs1> 
Company Cache: <1, CompanyObj> 

Но что, если есть третий тайник, скажем Страна кэш, и он также имеет ключ, 1, то есть:

Country Cache: <1, CountryObj> 

Затем будет объект Employee и объект Country также будет находиться в одном узле?

Из определения класса Affinity, он определяет только affKey, к которому в расстанавливать с, но она не определяет кэш, которому принадлежит данный affKey

ответ

1

Да, они будут храниться на одном узле. Тем не менее, я рассматривал бы это как совпадение, потому что это происходит только потому, что вы использовали те же типы и значения для ключей в этом конкретном случае. Логически идентификатор компании и идентификатор страны не связаны друг с другом, поэтому неправильно утверждать, что они размещены.

+0

Спасибо @Valentin за полезный ответ. Но я не думаю, что это совпадение :-). В реальных случаях существует множество таблиц базы данных, которые используют функцию автоматического увеличения для поля id. То есть, они оба типа номера (или длинного типа), и они будут одинаковыми по значению. Я думаю, что это значительно увеличит изменение, которое произойдет с некоторой логически неправильной вещью (идентификатор компании и идентификатор страны не связаны, но они останутся на одном узле) – Tom

+0

@Tom, я имел в виду, что семантически это совпадение. То есть бизнес-логика никогда не должна полагаться на этот факт и рассматривать его как коллокацию, потому что это не так. Однако это случается довольно часто. –

+0

Спасибо за ясное объяснение, и теперь я понял поведение и его эффект. – Tom