Apache Ignite 中的 SQL 模式(Schema)管理机制
这段内容讲的是 Apache Ignite 中的 SQL 模式(Schema)管理机制。我们可以从几个方面来理解:
一、什么是 Schema(模式)?
在 SQL 中,Schema 是数据库对象(如表、视图等)的命名空间和组织单位。Ignite 支持多个 Schema,便于组织和隔离不同的数据对象。
二、Ignite 中的默认 Schema
Ignite 默认提供了两个 Schema:
三、自定义 Schema(Custom Schemas)
Ignite 允许用户定义自己的 Schema,主要有两种方式:
✅ 1. 通过配置文件定义自定义 Schema
你可以通过 SqlConfiguration.setSqlSchemas(...)
方法在集群启动前定义多个自定义 Schema。
示例配置(XML):
<bean class=\"org.apache.ignite.configuration.IgniteConfiguration\"> <property name=\"sqlConfiguration\"> <bean class=\"org.apache.ignite.configuration.SqlConfiguration\"> <property name=\"sqlSchemas\"> <list> <value>MY_SCHEMA</value> <value>MY_SECOND_SCHEMA</value> </list> </property> </bean> </property></bean>
连接指定 Schema 的方式(如 JDBC):
jdbc:ignite:thin://127.0.0.1/MY_SCHEMA
✅ 2. 通过 Cache 自动创建 Schema
Ignite 中的每个 Cache(缓存)都可以通过 SQL 访问,每个 Cache 对应一个 Schema,Schema 名称就是 Cache 的名称。
示例:
如果你创建了一个名为 PersonCache
的缓存,那么你可以通过 SQL 查询:
SELECT * FROM PersonCache.Person
这里:
PersonCache
是 Schema 名;Person
是表名(对应缓存中的键值结构)。
四、通过 DDL 创建表时的 Schema 与 Cache 关系
当你使用 CREATE TABLE
语句创建表时,Ignite 会自动创建一个对应的 Cache(缓存)来存储数据。
示例 SQL:
CREATE TABLE City ( ID INT PRIMARY KEY, Name CHAR(35), CountryCode CHAR(3), District CHAR(20), Population INT) WITH \"backups=1, CACHE_NAME=City\";
- 这里指定了
CACHE_NAME=City
,表示这个表对应的缓存名为City
。 - 如果你不指定
CACHE_NAME
,Ignite 会自动生成一个名字,格式为:
SQL__
例如,如果在 MY_SCHEMA
中创建表 City
,生成的缓存名是:
SQL_MY_SCHEMA_CITY
五、Schema 与 Cache 的映射关系总结
来源
Schema 名
对应的 Cache 名
默认
PUBLIC
自动生成(如 SQL_PUBLIC_TABLENAME)
自定义配置
MY_SCHEMA
自动生成或手动指定
缓存自动创建
Cache 名即 Schema 名
Cache 名
DDL 创建表
指定的 Schema
指定的 CACHE_NAME 或默认生成
六、总结表格
类型
名称
是否可写
用途
SYS
系统 Schema
❌ 不可写
存储集群信息、系统视图
PUBLIC
默认 Schema
✅ 可写
默认连接目标
自定义 Schema
用户定义
✅ 可写
用于组织 SQL 对象
Cache Schema
与 Cache 同名
✅ 可写
用于 SQL 查询缓存数据
DDL 表 Schema
指定或默认
✅ 可写
对应一个缓存
七、使用建议
- 使用 Schema 来组织不同业务模块的数据,便于管理和权限控制;
- 如果需要 SQL 和缓存 API 混合访问,注意 Cache 名和 Schema 名的对应关系;
- 使用 DDL 创建表时,建议显式指定
CACHE_NAME
,便于后续管理;
- 如果集群中有多个应用连接 Ignite,建议为每个应用配置不同的 Schema,避免命名冲突。