这段内容讲的是 apache ignite 中的 sql 模式(schema)管理机制。我们可以从几个方面来理解:
一、什么是 schema(模式)?
在 sql 中,schema 是数据库对象(如表、视图等)的命名空间和组织单位。ignite 支持多个 schema,便于组织和隔离不同的数据对象。
二、ignite 中的默认 schema
ignite 默认提供了两个 schema:
schema 名 | 说明 |
---|---|
sys | 系统 schema,包含集群节点、缓存、sql 元数据等系统视图。你不能在这个 schema 中创建表或对象。详见 system views。 |
public | 默认 schema。当你没有显式指定 schema 时,ignite 默认使用这个 schema。例如通过 jdbc 连接时,不指定 schema 就会连接到 public。 |
三、自定义 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_<schema_name>_<table_name>
例如,如果在 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,避免命名冲突。
到此这篇关于apache ignite 中的 sql 模式(schema)管理机制的文章就介绍到这了,更多相关apache ignite sql 模式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论