Overview
This chapter explains how you can set cache configuration parameters. Once a cache is created, you cannot change its configuration parameters.
Note
|
Caches vs. Tables in IgniteThe cache-driven configuration approach is one of the configuration options. You can also configure caches/tables using
standard SQL commands such as |
Configuration Example
Below is an example of a cache configuration.
<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"/>
<!-- Other parameters -->
</bean>
</property>
</bean>
For the full list of parameters, refer to the CacheConfiguration javadoc.
Parameter | Description | Default Value |
---|---|---|
|
The cache name. |
None. |
|
The In the In the See the Partitioned/Replicated Mode section for more details. |
|
|
Write synchronization mode. Refer to the Configuring Partition Backups section. |
|
|
This parameter controls the way the rebalancing process is performed. Possible values include:
|
|
|
The number of backup partitions for the cache. |
|
|
|
|
|
Read requested cache entry from the backup partition if it is available on the local node instead of making a request to the primary partition (which can be located on the remote nodes). |
|
|
The number of threads in a single node to process a SQL query executed on the cache. Refer to the Query Parallelism section in the Performance guide for more information. |
1 |
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();
cfg.setCacheConfiguration(cacheCfg);
// Start a node.
Ignition.start(cfg);
For the full list of parameters, refer to the CacheConfiguration javadoc.
Parameter | Description | Default Value |
---|---|---|
|
The cache name. |
None. |
|
The In the In the See the Partitioned/Replicated Mode section for more details. |
|
|
Write synchronization mode. Refer to the Configuring Partition Backups section. |
|
|
This parameter controls the way the rebalancing process is performed. Possible values include:
|
|
|
The number of backup partitions for the cache. |
|
|
|
|
|
Read requested cache entry from the backup partition if it is available on the local node instead of making a request to the primary partition (which can be located on the remote nodes). |
|
|
The number of threads in a single node to process a SQL query executed on the cache. Refer to the Query Parallelism section in the Performance guide for more information. |
1 |
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);
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";
For the full list of parameters, refer to the CREATE TABLE section.
This API is not presently available for C++. You can use XML configuration.
Cache Templates
A cache template is an instance of CacheConfiguration
that can be registered in the cluster and used later as a basis for creating new caches or SQL tables. A cache or table created from a template inherits all the properties of the template.
A cache template is an instance of CacheConfiguration
that can be registered in the cluster and used later as a basis for creating new caches or SQL tables. A cache or table created from a template inherits all the properties of the template.
Templates can be used in many contexts: on servers, clients (thin and thick), in SQL (e.g., CREATE TABLE), in commands such as createCache
and getOrCreateCache
, as well as in the REST API calls. For example, thin clients and SQL do not support some cache configuration properties, and cache templates can be used to work around this limitation.
To create a template, define a cache configuration and add it to the Ignite
instance, as shown below. If you want do define a cache template in the XML configuration file, you must add an asterisk to the template’s name. This is required to indicate that the configuration is a template and not an actual cache.
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
<property name="cacheConfiguration">
<list>
<bean abstract="true" class="org.apache.ignite.configuration.CacheConfiguration" id="cache-template-bean">
<!-- when you create a template via XML configuration, you must add an asterisk to the name of the template -->
<property name="name" value="myCacheTemplate*"/>
<property name="cacheMode" value="PARTITIONED"/>
<property name="backups" value="2"/>
<!-- Other cache parameters -->
</bean>
</list>
</property>
</bean>
IgniteConfiguration igniteCfg = new IgniteConfiguration();
try (Ignite ignite = Ignition.start(igniteCfg)) {
CacheConfiguration cacheCfg = new CacheConfiguration("myCacheTemplate");
cacheCfg.setBackups(2);
cacheCfg.setCacheMode(CacheMode.PARTITIONED);
// Register the cache template
ignite.addCacheConfiguration(cacheCfg);
}
var ignite = Ignition.Start();
var cfg = new CacheConfiguration
{
Name = "myCacheTemplate*",
CacheMode = CacheMode.Partitioned,
Backups = 2
};
ignite.AddCacheConfiguration(cfg);
This API is not presently available for C++. You can use XML configuration.
Once the cache template is registered in the cluster, as shown in the code snippet above, you can use it to create another cache with the same configuration.
Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation.