RDL(Rule Definition Language)是ShardingSphere特有的内置SQL语言。用户可以使用RDL语言向SharidngSphere注入数据源资源、创建分片规则等,即向ShardingSphere注入数据库资源信息和分片规则信息。 RDL使得用户抛弃对传统Yaml或其他配置文件的依赖,像使用数据库一样,通过SQL进行资源信息的注入和规则的配置。
当前,RDL主要包括以下SQL内容:
Create DATASOURCES
,用于注入数据源信息。// 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_2:root:pwd,
ds1=127.0.0.1:3306:demo_ds_3:root:pwd)
CREATE SHARDINGRULE
,用于配置分片规则。// SQL
CREATE SHARDINGRULE (
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 shardingrules (
t_order=hash_mod(order_id, 4),
t_item=mod(item_id, 2)
)
governance
and authentication
setting item to the server.yaml
(Please refer to the example in this file)CREATE DATABASE sharding_db;
USE sharding_db;
CREATE datasources (
ds0=127.0.0.1:3306:demo_ds_2:root:pwd,
ds1=127.0.0.1:3306:demo_ds_3:root:pwd)
CREATE shardingrule (
t_order=hash_mod(order_id, 4),
t_item=mod(item_id, 2)
)
这里的 hash_mode
和 mod
是自动分片算法的Key。详情请查阅 auto-sharding-algorithm。
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
DROP TABLE t_order;
DROP TABLE t_item;
DROP DATABASE sharding_db
DROP DB
只会移除逻辑的分布式数据库
,不会删除用户真实的数据库 (TODO)。DROP TABLE
会将逻辑分片表和数据库中真实的表全部删除。CREATE DB
只会创建逻辑的分布式数据库
,所以需要用户提前创建好真实的数据库(TODO)。自动分片算法
会持续增加,从而覆盖用户各大分片场景 (TODO)。ShardingAlgorithmPropertiesUtil
(TODO)。ALTER DB
和 ALTER TABLE
的支持(TODO)。