当前位置: 首页 > news >正文

Apache Ignite 中的 SQL 模式(Schema)管理机制

这段内容讲的是 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,避免命名冲突。
http://www.xdnf.cn/news/1168759.html

相关文章:

  • 使用python中的pymysql库,并且转化为数组元组数据
  • adb的使用
  • Leetcode—692. 前K个高频单词【中等】(桶排序)
  • Linux的磁盘存储管理实操——(下一)——标准分区扩容
  • Ajax第一天
  • GoLand 部署第一个项目
  • 【Python】常见模块及其用法
  • 认识自我的机器人:麻省理工学院基于视觉的系统让机器了解自身机体
  • 【LeetCode 热题 100】46. 全排列——回溯
  • Windows 编程辅助技能:转到文档
  • Docker实战系列:使用Docker部署AI SSH客户端工具IntelliSSH
  • 2025年远程桌面软件深度评测:ToDesk、向日葵、TeamViewer全方位对比分析
  • Golang避免主协程退出方案
  • 期权分红怎么分的?
  • Thinkphp8使用Jwt生成与验证Token
  • Spring之【Bean工厂后置处理器】
  • MybatisPlus入门指南
  • LeetCode 658.找到K个最接近的元素
  • 豪鹏科技锚定 “AI + 固态” 赛道:从电池制造商到核心能源方案引领者的战略跃迁
  • leetcode 1695. 删除子数组的最大得分 中等
  • 浏览器解码顺序xss
  • 低成本、高泛化能力的无人机自主飞行!VLM-Nav:基于单目视觉与视觉语言模型的无地图无人机导航
  • excle中匹配加密手机号(同sheet中)
  • Springboot + MyBatis-Plus + PageHelper 分页性能混合优化方案
  • 解决栅格数据裁剪矢量数据问题两种方法,ArcGIS解决与PYTHON解决
  • 物联网_TDengine_EMQX_性能测试
  • 【Android】xml和Java两种方式实现发送邮件页面
  • API网关原理与使用场景详解
  • Apache Ignite 中 WHERE 子句中的子查询(Subqueries in WHERE Clause)的执行方式
  • Linux操作系统从入门到实战(十二)Linux操作系统第一个程序(进度条)