共计 2863 个字符,预计需要花费 8 分钟才能阅读完成。
Apache ShardingSphere 5.0.0-beta 深度解析的第一篇文章和大家一起重温了 ShardingSphere 的内核原理,并具体论述了此版本在内核层面,特地是 SQL 能力方面的优化和晋升。弱小稳固的内核是 ShardingSphere 继续倒退的根底,与此同时,ShardingSphere 在研发分布式数据库生态个性上也在致力摸索。本次 5.0.0-beta 版本公布的 DistSQL,用于搭配整个 ShardingSphere 分布式数据库体系,在提供更标准化的分布式数据库治理形式的同时,兼具灵便、便捷和优雅的个性。
本文将率领大家全面意识 DistSQL,并联合实战案例展现如何应用 DistSQL 一键治理 ShardingSphere 分布式数据库服务。
孟浩然
SphereEx 高级 Java 工程师
Apache ShardingSphere Committer
曾就任于京东科技,负责数据库产品研发,酷爱开源,关注数据库生态,目前专一于 ShardingSphere 数据库中间件开发以及开源社区建设。
初识 DistSQL
置信大家对 SQL(Structured Query Language)都不生疏,SQL 是一种数据查问和程序设计语言,同时作为关系数据库管理系统的规范语言,用于存取数据以及查问、更新和治理关系数据库系统。
和规范 SQL 相似,DistSQL(Distributed SQL),即分布式 SQL,是 ShardingSphere 特有的一种内置 SQL 语言,可能提供规范 SQL 之外的增量性能操作能力。借助于 ShardingSphere 弱小的 SQL 解析引擎,DistSQL 提供了相似于规范 SQL 的语法结构和语法校验体系,在保障规范化的同时,也让 DistSQL 更加灵便。
ShardingSphere 提出的 Database Plus 理念,旨在打造兼具数据库且贴合理论业务需要的开源分布式数据库体系,而 DistSQL 正是在传统数据库下层构建,提供既贴合规范又领有 ShardingSphere 性能特色的 SQL 能力,能更好的为传统数据库赋能。
DistSQL 设计初衷
ShardingSphere 疾速倒退的几年来,随着内核的逐渐稳固,以及对外围性能的继续打磨,在数据库中间件畛域,未然自成一家。作为国内开源的佼佼者,ShardingSphere 在分布式数据库生态的摸索中并没有进行脚步,突破中间件和数据库之间的界线,让开发者像应用数据库一样应用 Apache ShardingSphere,是 DistSQL 的设计指标,也是 ShardingSphere 从面向开发人员的框架和中间件转变为面向运维人员的基础设施产品不可或缺的能力。
DistSQL 语法体系
DistSQL 在设计之初,就以面向规范为指标,充分考虑数据库开发和运维人员的应用习惯,所以 DistSQL 的语法全面借鉴规范 SQL 语言,兼顾可读性和易用性的同时,最大水平保留 ShardingSphere 本身的个性,并为使用者提供最宽泛的自定义边界,以应答不同的业务场景。对于相熟 SQL 和 ShardingSphere 的开发者,能够疾速动手。
规范的 SQL 提供了如 DQL、DDL、DML、DCL 等不同类型的语法,用于定义不同性能的 SQL 语句,DistSQL 也定义了一套本人的语法体系。
在 ShardingSphere 中,DistSQL 的语法目前次要划分为 RDL、RQL 和 RAL 三种类型:
- RDL(Resource & Rule Definition Language):资源规定定义语言,用于资源和规定的创立、批改和删除;
- RQL(Resource & Rule Query Language):资源规定查询语言,用于资源和规定的查问和展示;
- RAL(Resource & Rule Administrate Language):资源规定治理语言,用于 Hint、事务类型切换、分片执行打算查问等增量性能操作。
DistSQL 的语法体系为 ShardingSphere 迈向分布式数据库搭起了桥梁,目前还在继续欠缺中,随着更多的想法被实现,DistSQL 势必会越来越弱小。也欢送对此感兴趣的开发者退出 ShardingSphere,为 DistSQL 提供想法,奉献代码。
理解更具体的语法规定,可参考官网文档:https://shardingsphere.apache…
DistSQL 实战
在理解了 DistSQL 的设计理念和语法体系后,接下来本文以数据分片为例,实战演示如何通过 DistSQL 来搭建一套基于 ShardingSphere 的数据分片服务。
环境筹备
- 启动 MySQL 服务
- 创立用于分片的 MySQL 数据库
- 启动 Zookeeper 服务
关上分布式治理配置并启动 ShardingSphere-Proxy (https://shardingsphere.apache…
实战演示
- 应用 MySQL 命令行连贯到启动的 ShardingSphere-Proxy
- 创立并查问分布式数据库 sharding_db
- 应用新创建的数据库
- 执行 RDL 配置 2 个用于分片的数据源资源 ds_1 和 ds_2
- 执行 RQL 查问新减少的数据源资源
- 执行 RDL 创立 t_order 表的分片规定
- 执行 RQL 查问分片规定
RQL 除了反对查问以后数据库下的所有分片规定,也能够通过上面的语句查问单个表的分片规定
SHOW SHARDING TABLE RULE t_order FROM sharding_db
- 创立并查问 t_order 分片表
- 在 ShardingSphere-Proxy 端胜利创立分片表 t_order 后,通过客户端连贯到底层数据库 ds_1 和 ds_2,ShardingSphere 曾经依据 t_order 表的分片规定主动创立了分片表
- 分片表创立实现后,持续在 ShardingSphere-Proxy 端执行 SQL 语句插入数据
- 通过 RAL 查问执行打算
至此,应用 DistSQL 搭建 ShardingSphere 数据分片服务曾经实现,比照之前版本以配置文件驱动的 ShardingSphere 代理端相比,DistSQL 对开发者更敌对,对资源和规定的治理更加灵便,以 SQL 驱动的形式,更是实现了 DistSQL 和规范 SQL 的无缝对接。
以上的示例中,仅演示了小局部 DistSQL 语法的应用,除了通过 CREATE 和 SHOW 语句创立和查问资源、规定,DistSQL 同样提供了 ALTRE DROP 等更多的操作,且同时反对对数据分片、读写拆散、数据加密、数据库发现外围性能的配置管控。
结语
作为 5.0.0-beta 版本公布的新个性之一,DistSQL 也将从此版本开始继续发力,构建更欠缺的语法体系,提供更弱小的性能。
DistSQL 为 ShardingSphere 在分布式数据库畛域的摸索提供了有限可能,在后续的布局中,DistSQL 将作为纽带串联起更多的性能,提供一键式操作。如一键剖析数据库整体状态,和弹性迁徙对接,提供一键数据扩容、缩容;和管控对接,实现一键切换主从、扭转数据库状态等等。
最初,欢送大家多多关注社区,理解 ShardingSphere 我的项目最新进展。
欢送关注咱们