您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
数据分片使用规范——解析器&&RQL
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
数据分片使用规范——解析器&&RQL
Apache ShardingSphere
2021-01-15
IP归属:未知
43040浏览
# 数据分片使用规范——解析器 # 解析器 ShardingSphere使用不同解析器支持SQL多种方言。对于未实现解析器的特定SQL方言,默认采用SQL92标准进行解析。 ## 特定SQL方言解析器 - PostgreSQL解析器 - MySQL解析器 - Oracle解析器 - SQLServer解析器 注:MySQL解析器支持的方言包括MySQL、H2和MariaDB。 ## 默认SQL方言解析器 其他SQL方言,如SQLite、Sybase、DB2和Informix等,默认采用SQL92标准进行解析。 ## RDL(Rule definition Language)方言解析器 ShardingSphere独有的RDL方言解析器。该解析器主要解析ShardingSphere内部的RDL方言,即自定义的SQL。请查阅[RDL]了解详情。 --- # RQL ## 什么是 RDL? RDL(Rule Definition Language)是ShardingSphere特有的内置SQL语言。用户可以使用RDL语言向SharidngSphere注入数据源资源、创建分片规则等,即向ShardingSphere注入数据库资源信息和分片规则信息。 RDL使得用户抛弃对传统Yaml或其他配置文件的依赖,像使用数据库一样,通过SQL进行资源信息的注入和规则的配置。 当前,RDL主要包括以下SQL内容: - `Create DATASOURCES`,用于注入数据源信息。 ```sql // SQL CREATE DATASOURCES ( ds_key=host_name:host_port:db_name:user_name:pwd [, ds_key=host_name:host_port:db_name:user_name:pwd, ...] ) // Example CREATE datasources ( ds0=127.0.0.1:3306:demo_ds_0:root:pwd, ds1=127.0.0.1:3306:demo_ds_1:root:pwd) ``` - `CREATE SHARDING RULE`,用于配置分片规则。 ```sql // SQL CREATE SHARDING RULE ( sharding_table_name=sharding_algorithm(algorithm_property[, algothrim_property]) [, sharding_table_name=sharding_algorithm_type(algorithm_property[, algothrim_property]), ...] ) sharding_algorithm_type: {MOD | HASH_MODE} mod_algorithm_properties: sharding_column,shards_amount mod_hash_algorithm_properties: sharding_column,shards_amount // Example CREATE SHARDING RULE ( t_order=hash_mod(order_id, 4), t_item=mod(item_id, 2) ) ``` ## RDL使用实战 ### 前置工作 1. Start the service of MySQL instances 1. Create MySQL databases (Viewed as the resources for ShardingProxy) 1. Create a role or user with creating privileges for ShardingProxy 1. Start the service of Zookeeper (For persisting configuration) ### 启动ShardingProxy 1. Add `governance` and `authentication` setting item to the `server.yaml` (Please refer to the example in this file) 1. Start the ShardingProxy ([Instruction](/en/quick-start/shardingsphere-proxy-quick-start/)) ### 创建分布式数据库和分片表 1. 连接到ShardingProxy 1. 创建分布式数据库 ```sql CREATE DATABASE sharding_db; ``` 3. 使用新创建的数据库 ```sql USE sharding_db; ``` 2. 配置数据源信息 ```sql CREATE datasources ( ds0=127.0.0.1:3306:demo_ds_2:root:pwd, ds1=127.0.0.1:3306:demo_ds_3:root:pwd) ``` 3. 创建分片规则 ```sql CREATE SHARDING RULE ( t_order=hash_mod(order_id, 4), t_item=mod(item_id, 2) ) ``` 这里的 `hash_mode` 和 `mod`是自动分片算法的Key。详情请查阅 [auto-sharding-algorithm](/cn/user-manual/shardingsphere-jdbc/configuration/built-in-algorithm/sharding/)。 4. 创建切分表 ```sql CREATE TABLE `t_order` ( `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(45) DEFAULT NULL, PRIMARY KEY (`order_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 CREATE TABLE `t_item` ( `item_id` int NOT NULL, `order_id` int NOT NULL, `user_id` int NOT NULL, `status` varchar(45) DEFAULT NULL, PRIMARY KEY (`item_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ``` 5. 删除切分表 ```sql DROP TABLE t_order; DROP TABLE t_item; ``` 6. 删除分布式数据库 ```sql DROP DATABASE sharding_db ``` ### 注意 1. 当前, `DROP DB`只会移除`逻辑的分布式数据库`,不会删除用户真实的数据库 (**TODO**)。 1. `DROP TABLE`会将逻辑分片表和数据库中真实的表全部删除。 1. `CREATE DB`只会创建`逻辑的分布式数据库`,所以需要用户提前创建好真实的数据库(**TODO**)。 1. `自动分片算法`会持续增加,从而覆盖用户各大分片场景 (**TODO**)。 1. 重构`ShardingAlgorithmPropertiesUtil`(**TODO**)。 1. 保证所有客户端完成RDL执行(**TODO**)。 1. 增加 `ALTER DB` 和 `ALTER TABLE`的支持(**TODO**)。
原创文章,需联系作者,授权转载
上一篇:2020 ICDM 知识图谱竞赛获奖技术方案
下一篇:ITest:京东数科接口自动化测试实践
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
数据库技术的发展与变革方兴未艾,NewSQL的出现,只是将各种所需技术组合在一起,而这些技术组合在一起所实现的核心功能,推动着云原生数据库的发展。 NewSQL的三种分类中,新架构和云数据库涉及了太多与数据库相关的底层实现,为了保证本文的范围不至太过发散,我们重点介绍透明化分片数据库中间件的核心功能与实现原理,另外两种类型的NewSQL在核心功能上类似,但实现原理会有所差别。
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
Apache ShardingSphere针对新业务上线、旧业务改造分别提供了相应的全套脱敏解决方案。
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
ShardingSphere对于XA方案,提供了一套SPI解决方案,对Narayana进行了整合,Narayana初始化流程,开始事务流程,获取连接流程,提交事务流程,回滚事务流程。
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
5.x 是 Apache ShardingSphere从分库分表中间件向分布式数据库生态转化的里程碑,从 4.x 版本后期开始打磨的可插拔架构在 5.x 版本已逐渐成型,项目的设计理念和 API 都进行了大幅提升。欢迎大家测试使用!
最新回复
丨
点赞排行
共0条评论
Apache ShardingSphere
文章数
96
阅读量
231327
作者其他文章
01
突破关系型数据库桎梏:云原生数据库中间件核心剖析
01
Apache ShardingSphere数据脱敏全解决方案详解(上)
01
Shardingsphere整合Narayana对XA分布式事务的支持(4)
01
从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号