存储配置和存储引擎
Ignite 3 具有现代且高度可配置的存储,可以方便选择数据的存储位置和方式。本章节介绍存储引擎和存储配置。分布区是用来确定数据的组织方式,在单独的章节中介绍。
下图描述了表、分布区、存储配置和存储引擎之间的关系:
1.存储引擎是什么
存储引擎是一个 Ignite 节点实体,负责以特定格式将数据存储在磁盘或易失性内存中,它定义了如下内容:
- 存储数据的二进制格式;
- 特定数据格式的配置属性。
Ignite 目标是支持不同类型存储引擎,这些引擎可以互换使用,具体取决于期望的数据库负载类型,目前 Ignite 支持如下的存储引擎:
- 持久化的 Apache Ignite 页面内存(B+ 树);
- 持久化的 RocksDb(LSM 树);
- 易失的(内存中)Apache Ignite 页面内存(B+ 树)。
2.存储配置是什么
存储配置是定义存储引擎及其配置参数的 Ignite 节点实体。分布区必须配置使用一组已声明的存储配置,这些存储配置可用于使用不同的存储引擎对此分布区中创建的表进行参数化,一个表只能定义一个存储配置。
存储配置定义了如下信息:
- 使用什么存储引擎来存储数据;
- 特定存储引擎的配置属性的配置值。
可以在节点上声明任意数量的存储配置。
3.默认的存储配置
Ignite 会创建一个名为default
的存储配置,该配置使用持久化的 Apache Ignite 存储引擎(aipersist
)来存储数据,分布区默认会使用此存储配置来存储数据。要检查节点上当前可用的存储配置,请使用以下命令:
node config show ignite.storage.profiles
4.配置存储引擎
节点上的存储引擎配置将应用于所有存储配置,并且所有存储引擎都从各自的默认配置开始。有关存储引擎默认配置的更多信息,请参见存储配置章节的内容。
要更改存储引擎配置需要使用命令行工具,可以使用node config show storage.engines
命令检查当前的存储引擎配置,然后可以通过在node config update
命令中指定新参数来更改配置,例如:
node config show ignite.storage.engines
node config update ignite.storage.engines.aipersist.checkpoint.frequency = 16000
更新配置后需要重启节点。
5.创建和使用存储配置
Ignite 默认仅创建名为default
的存储配置,但节点上可以有任意数量的存储配置。要创建新的存储配置,需要将配置参数传递给storage.profiles
参数:
node config update "ignite.storage.profiles:{rocksProfile{engine:rocksdb,size:10000}}"
更新配置后需要重启节点,重启后,分布区就可以使用新创建的存储配置。
6.使用存储配置定义表
定义存储配置和分布区后,就可以使用 SQL 或代码在其中创建表,创建表后就无法更改分布区和存储配置。
例如,以下是创建一个简单的表的方法:
CREATE TABLE exampleTable (key INT PRIMARY KEY, value VARCHAR) WITH PRIMARY_ZONE='ExampleZone', STORAGE_PROFILE='profile1'
这时,exampleTable
表将使用profile1
存储配置中指定的参数的存储引擎。如果某个节点没有profile1
,则不会在其上存储表。每个节点的profile1
配置可能不同,数据将根据本地配置进行存储。
18624049226