如何在 ShardingSphere 中开发自己的 DistSQL
在《DistSQL:像数据库一样使用 Apache ShardingSphere》和《SCTL 涅槃重生:投入 RAL 的怀抱》中,已经为大家介绍了 DistSQL 的设计初衷和语法体系,并通过实战操作展示了 DistSQL 创建分布式数据库表的强大能力,展现了 Apache ShardingSphere 在新形态下的交互体验。
为了让大家对 DistSQL 有更深入的了解,同时能根据需要定制自己的 DistSQL 语法,本篇将为大家解析 DistSQL 的设计开发流程,同时通过实际的场景案例,带领大家实现一个全新的 DistSQL 语法,完成从需求到设计、开发和测试的完整过程。
兰城翔
SphereEx 中间件研发工程师,Apache ShardingSphere contributor,目前专注于 DistSQL 的设计和研发。何为 DistSQL
DistSQL(Distributed SQL)是 Apache ShardingSphere 特有的操作语言,它与标准 SQL 的使用方式完全一致,用于提供增量功能的 SQL 级别操作能力,以此达到对资源和规则的管理的目的。关于 DistSQL 更多信息参考《DistSQL:像数据库一样使用 Apache ShardingSphere》。DistSQL 的意义
DistSQL 设计的目的是打破中间件和数据库之间的界限,让开发者像使用数据库一样使用 Apache ShardingSphere。因此 DistSQL 的设计会尽可能契合已有的数据库语法,进而降低学习成本;此外 DistSQL 的作用是对资源和规则进行 SQL 级别的管理,完全替代配置文件也是其优点之一。开发 DistSQL
准备
* 在开发之前需要对以下工具有所了解 1. ANTRL4 作为解析工具是开发 DistSQL 的基础,关于 ANTLR 4 的使用可以参考 【ANTRL4简明教程】:https://wizardforcel.gitbooks.io/antlr4-short-course/content/ 2. 在 IntelliJ IDEA 开发时还需要使用到插件 ANTLR v4, (https://plugins.jetbrains.com/plugin/7358-antlr-v4)作用是对 ANTRL4 定义的语法规则进行测试,使用方式如下: a. 在对应的规则上选择 Test Rule


实战
在了解 DistSQL 执行流程之后,接下来将实战演示如何开发一条自己的 DistSQL。 在《DistSQL:像数据库一样使用 Apache ShardingSphere》一文中实战演示了使用 DistSQL 创建分片规则,同时使用 show sharding table rules 对分片规则进行了展示。 现在,让我们提出一个新的需求:通过 DistSQL 快速查询各个分片表的分片数量。设计语法如下:show sharding tables count [from schema] ;
- 环境准备
- MySQL 服务,包含用于分片的数据库和表
- Zookeeper 服务,作为注册中心
- ShardingSphere-Proxy 5.0.0
- 实战演示














结语
DistSQL 作为 5.0.0 版本发布的新特性之一,将会在此版本基础上持续发力,也希望更多的社区伙伴加入,构造更加完善的语法体系,提供更强大的功能,真正打破中间件与数据库之间的界限。 最后,DistSQL SIG 近日已成立,致力于 DistSQL 特性持续优化,拓展新的使用场景以及宣传答疑,欢迎大家点击这里链接关注,了解 DistSQL 以及 ShardingSphere 项目最新进展。