DistSQL的简化写法
使用环境:
ShardingSphere-Proxy 5.1.2
场景、问题:
多租户分库不分表,ShardingSphere-Proxy配置如下:
【使用集群模式,在zookeeper中直接配置下面节点信息】
ShardingSphere-Proxy可以根据不同的tenant_code路由到不同的数据库
rules规则配置如下:
- !SHARDING
tables:
order_test:
actualDataNodes:
user_test:
actualDataNodes:
defaultDatabaseStrategy:
standard:
shardingColumn: tenant_code
shardingAlgorithmName: database_inline
shardingAlgorithms:
database_inline:
type: INLINE
props:
algorithm-expression: ds_${tenant_code}
dataSources数据源配置文件如下:
ds_abc:
password: '123456'
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://192.168.0.1:3306/ds_abc?serverTimezone=Asia/Shanghai
username: root
ds_bcd:
password: '123456'
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
url: jdbc:mysql://192.168.0.1:3306/ds_bcd?serverTimezone=Asia/Shanghai
username: root
【问题】使用DistSQL如何简化配置?
已进行操作:
使用DistSQL进行配置:
create database ds;
use ds;
ADD RESOURCE ds_abc (
HOST=192.168.0.1,
PORT=3306,
DB=ds_abc,
USER=root,
PASSWORD=123456
);
ADD RESOURCE ds_bcd (
HOST=192.168.0.1,
PORT=3306,
DB=ds_bcd,
USER=root,
PASSWORD=123456
);
CREATE SHARDING ALGORITHM database_inline (
TYPE(NAME=inline,PROPERTIES("algorithm-expression"="ds_${tenant_code}"))
);
CREATE DEFAULT SHARDING DATABASE STRATEGY (
TYPE = standard,SHARDING_COLUMN=tenant_code,SHARDING_ALGORITHM=database_inline
);
CREATE SHARDING TABLE RULE order_test (
datanodes("ds_${['abc','bcd']}.order_test")
)
CREATE SHARDING TABLE RULE user_test (
datanodes("ds_${['abc','bcd']}.user_test")
)
【问题】如果需要动态配置大量的数据源和数据库表,DistSQL中的枚举方式怎么进行简化(下面的sql如何简化)?
CREATE SHARDING TABLE RULE user_test (
datanodes("ds_${['abc','bcd']}.user_test")
)
现状:
没有找到合适的优化写法