DistSQL #
背景 #
DistSQL(Distributed SQL)是 DBPlusEngine 特有的操作语言。 它与标准 SQL 的使用方式完全一致,用于提供增量功能的 SQL 级别操作能力。详情参考速查表:DistSQL。
挑战 #
灵活的规则配置和资源管控能力是 DBPlusEngine 的特点之一。
DistSQL 让用户可以像操作数据库一样操作 DBPlusEngine,使其从面向开发人员的框架和中间件转变为面向运维人员的数据库产品。
DistSQL 细分为 RDL、RQL,RAL 和 RUL 四种类型。
- RDL(Resource & Rule Definition Language)负责资源和规则的创建、修改和删除;
- RQL(Resource & Rule Query Language)负责资源和规则的查询和展现;
- RAL(Resource & Rule Administration Language)负责 Hint、事务类型切换、分片执行计划查询等管理功能。
- RUL (Resource Utility Language) 为 SphereEx-DBPlusEngine 的工具类语言,提供 SQL 解析、SQL 格式化、执行计划预览等功能。
目标 #
打破中间件和数据库之间的界限,让开发者像使用数据库一样使用 DBPlusEngine,是 DistSQL 的设计目标。
注意事项 #
DistSQL 只能用于 DBPlusEngine-Proxy,DBPlusEngine-Driver 暂不提供。
语法规则 #
在 DistSQL 语句中,除关键字外,其余元素的输入格式应符合以下规则。
标识符 #
标识符代表 SQL 语句中的一个对象,包括:
- 数据库名称
- 表名
- 列名
- 索引名称
- 资源名称
- 规则名称
- 算法名称 标识符中允许使用的字符有:[a-z,A-Z,0-9,_](字母、数字、下划线),且应以字母开头。
当标识符中出现关键字或特殊字符时,使用反引号 (`) 。
字面量 #
字面量包括字符串、整数值和布尔值:
字符串:是由单引号 (’) 或双引号 (") 括起来的字符序列;
整数值:一般为正整数,如 0-9;
说明:部分 DistSQL 语法允许负值,此时可在数字前加负号(-),如 -1。
布尔值:TRUE 或 FALSE,大小写不敏感。
一致性 #
DistSQL 语句执行后,会更新存储在治理中心的元数据,并同步更新计算节点内元数据。当设置参数 meta-data-consistency-enabled=true 时,可实现一致性更新。