Настройка DataSpace для записи в сервис CCI#
Сервис CCI позволяет централизованно использовать данные, находящиеся в разных зональных хранилищах:
создается несколько экземпляров приложения, каждый со своим dataspace и БД (шарды);
в сервисе CCI создается один или несколько индексов распределения ключей по шардам — CCI-индексы;
экземпляр приложения при создании данных добавляет в CCI-индексе привязку ключей создаваемых данных к своему шарду;
перед приложением устанавливается маршрутизатор, который по данным в запросе к приложению определяет ССI-индекс и значение ключа, запрашивает в сервисе CCI шард, привязанный к ключу в соответствующем CCI-индексе, и направляет запрос в соответствующий этому шарду экземпляр приложения.
Ключи и связанные с ними CCI-индексы можно разметить в описании модели (файле model.xml) с помощью тега <cci-index>:
Пример варианта с простым CCI-индексом по одному атрибуту:
<class name="Product" label="Агрегат Product, ключ шардирования — ID клиента"> ... <property name="code" type="String"/> <reference name="epkId" type="ClientEPK" label="ID клиента"/> <reference name="actualOperation" type="PerformedOperation" label="Операция"/> ... <cci-index name="CCI_Client"> <property name="epkId"/> </cci-index> ... </class>Пример варианта с составным CCI-индексом по нескольким атрибутам:
<class name="Product" label="Агрегат Product, ключ шардирования — код Региона и ID клиента"> ... <property name="code" type="String"/> <property name="regionCode" type="Integer" label="код региона, входит в индекс CCI"/> <reference name="epkId" type="ClientEPK" label="ID клиента, входит в индекс CCI"/> <reference name="actualOperation" type="PerformedOperation" label="Операция"/> ... <cci-index name="CCI_RegionClient"> <property name="regionCode"/> <property name="epkId"/> </cci-index> ... </class>
Внимание!
Атрибуты, входящие в состав CCI-индекса, становятся обязательными.