Конфигурация кешей#
В разделе описывается, как выполнить конфигурирование кеша. После создания кеша его конфигурацию изменить нельзя.
Кеши и таблицы в DataGrid
Конфигурирование кешей можно выполнить с помощью настройки экземпляров
CacheConfigurationили через стандартные команды SQL, напримерCREATE TABLE. Подробнее о том, как соотносятся кеши и таблицы в DataGrid, написано в подразделе «Введение» раздела «Моделирование данных».
Пример#
Пример настройки кешей:
XML:
<bean class="org.apache.ignite.configuration.IgniteConfiguration"> <property name="cacheConfiguration"> <bean class="org.apache.ignite.configuration.CacheConfiguration"> <property name="name" value="myCache"/> <property name="cacheMode" value="PARTITIONED"/> <property name="backups" value="2"/> <property name="rebalanceMode" value="SYNC"/> <property name="writeSynchronizationMode" value="FULL_SYNC"/> <property name="partitionLossPolicy" value="READ_ONLY_SAFE"/> <!-- Другие параметры. --> </bean> </property> </bean>Java:
CacheConfiguration cacheCfg = new CacheConfiguration("myCache"); cacheCfg.setCacheMode(CacheMode.PARTITIONED); cacheCfg.setBackups(2); cacheCfg.setRebalanceMode(CacheRebalanceMode.SYNC); cacheCfg.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC); cacheCfg.setPartitionLossPolicy(PartitionLossPolicy.READ_ONLY_SAFE); IgniteConfiguration cfg = new IgniteConfiguration(); fg.setCacheConfiguration(cacheCfg); // Запустите узел. Ignition.start(cfg);С#/.NET:
var cfg = new IgniteConfiguration { CacheConfiguration = new[] { new CacheConfiguration { Name = "myCache", CacheMode = CacheMode.Partitioned, Backups = 2, RebalanceMode = CacheRebalanceMode.Sync, WriteSynchronizationMode = CacheWriteSynchronizationMode.FullSync, PartitionLossPolicy = PartitionLossPolicy.ReadOnlySafe } } }; Ignition.Start(cfg);SQL:
CREATE TABLE IF NOT EXISTS Person ( id int, city_id int, name varchar, age int, company varchar, PRIMARY KEY (id, city_id) ) WITH "cache_name=myCache,template=partitioned,backups=2";
Параметры в SQL:
Параметр |
Описание |
Значение по умолчанию |
|---|---|---|
|
Имя кеша |
— |
|
Устанавливает способ распределения данных кеша в кластере. |
|
|
Режим синхронизации записи. Подробнее о нем написано в разделе «Настройка резервных партиций» |
|
|
Режим ребалансировки. Возможные значения: |
|
|
Количество резервных партиций кеша. Подробнее о них написано разделе в подразделе «Партицирование данных» раздела «Моделирование данных» |
|
|
|
|
|
Задает возможность чтения записей кеша из резервной (backup) партиции, если она доступна на локальном узле, вместо отправки запроса на удаленный основной (primary) узел |
|
|
Количество потоков в узле при обработке SQL-запроса. Подробнее об этом написано в подразделе «Параллелизм запросов» документа «Настройка производительности» |
|
Шаблоны кеша (Cache Template)#
Шаблон кеша — экземпляр CacheConfiguration, который можно зарегистрировать в кластере и использовать как основу для создания новых кешей или SQL-таблиц. Кеш или таблица, которые созданы на основе шаблона, наследуют все его свойства.
Шаблоны можно использовать:
на серверах и клиентах (тонких и толстых);
в SQL, например
CREATE TABLE;в таких командах, как
createCacheиgetOrCreateCache;в вызовах REST API.
Например, тонкие клиенты и SQL не поддерживают некоторые свойства конфигурации кеша. Для обхода этого ограничения можно использовать шаблоны.
Для создания шаблона определите конфигурацию кеша и добавьте ее в экземпляр DataGrid, как показано в примере ниже. Для определения шаблона кеша в файле XML-конфигурации добавьте в название шаблона символ *. Он указывает на то, что конфигурация является шаблоном, а не реальным кешем.
XML:
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<list>
<bean abstract="true" class="org.apache.ignite.configuration.CacheConfiguration" id="cache-template-bean">
<!-- При создании шаблона с помощью XML-конфигурации нужно добавить символ `*` в название шаблона. -->
<property name="name" value="myCacheTemplate*"/>
<property name="cacheMode" value="PARTITIONED"/>
<property name="backups" value="2"/>
<!-- Другие параметры кеша. -->
</bean>
</list>
</property>
</bean>
Java:
IgniteConfiguration igniteCfg = new IgniteConfiguration();
try (Ignite ignite = Ignition.start(igniteCfg)) {
CacheConfiguration cacheCfg = new CacheConfiguration("myCacheTemplate");
cacheCfg.setBackups(2);
cacheCfg.setCacheMode(CacheMode.PARTITIONED);
// Регистрация шаблона кеша.
ignite.addCacheConfiguration(cacheCfg);
}
С#/.NET:
var ignite = Ignition.Start();
var cfg = new CacheConfiguration
{
Name = "myCacheTemplate*",
CacheMode = CacheMode.Partitioned,
Backups = 2
};
ignite.AddCacheConfiguration(cfg);
Как только шаблон кеша зарегистрирован в кластере, его можно использовать для создания другого кеша с такой же конфигурацией.