广播表 #
广播表 YAML 配置方式具有非凡的可读性,通过 YAML 格式,能够快速地理解广播表配置, DBPlusEngine 会根据 YAML 配置,自动完成 ShardingSphereDataSource 对象的创建,减少用户不必要的编码工作。
参数解释 #
rules:
- !BROADCAST
tables: # 广播表规则列表
- <table_name>
- <table_name>
actualDataSourceNames: # 实际广播的数据源列表
- <data_source_name>
- <data_source_name>
keyGenerateStrategies: # 广播表分布式序列策略列表
<table_name>: # 广播表名称
keyGenerateType: column # 主键生成策略类型,可选 column 或 sequence
logicTable: # 逻辑表名称,keyGenerateType 为 column 时必填
keyGenerateColumn: # 广播表分布式序列列名称,keyGenerateType 为 column 时必填
keyGenerateSequence: # 序列名称,keyGenerateType 为 sequence 时必填
keyGeneratorName: # 分布式序列算法名称
keyGenerators: # 分布式序列算法列表
<key_generator_name>: # 分布式序列算法名称
type: IT.AUTO_INCREMENT.FIXTURE # 分布式序列算法类型
操作步骤 #
在 YAML 文件中配置广播表列表
调用 YamlShardingSphereDataSourceFactory 对象的 createDataSource 方法,根据 YAML 文件中的配置信息创建 ShardingSphereDataSource。
配置示例 #
广播表 YAML 配置示例如下:
dataSources:
ds_0:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_0?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password:
ds_1:
dataSourceClassName: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_1?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
username: root
password:
rules:
- !BROADCAST
tables:
- t_address
actualDataSourceNames:
- ds_0
- ds_1
keyGenerateStrategies:
t_address:
keyGenerateType: column
logicTable: t_address
keyGenerateColumn: address_id
keyGeneratorName: snowflake
keyGenerators:
snowflake:
type: SNOWFLAKE
通过 YamlShardingSphereDataSourceFactory 的 createDataSource 方法,读取 YAML 配置完成数据源的创建。
YamlShardingSphereDataSourceFactory.createDataSource(getFile("/META-INF/broadcast-databases-tables.yaml"));
算法类型的详情,请参考分布式序列算法。