Sharding-JDBC 系列专题 - 第二篇:广播表(Broadcast Tables)
Sharding-JDBC 系列专题 - 第二篇:广播表(Broadcast Tables)
本系列专题旨在帮助开发者深入掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第二篇文章,将详细讲解 广播表(Broadcast Tables) 的概念、配置、使用场景、工作原理以及实战案例。广播表是 Sharding-JDBC 中用于管理全局一致数据的关键功能,适合小数据量、更新频率低的公共数据场景。需要图形化展示的部分将使用 Mermaid 语法绘制图表。
1. 什么是广播表?
在 Sharding-JDBC 的分库分表场景中,广播表 是一种特殊的表类型,其数据需要在所有分片数据库中保持一致。Sharding-JDBC 会将对广播表的写操作(如 INSERT、UPDATE、DELETE)自动同步到所有分片数据库,查询操作则从任意一个分片数据库获取数据。
1.1 核心特点
- 数据一致性:所有分片数据库中的广播表数据完全相同。
- 自动同步:写操作自动广播到所有分片数据库。
- 高效查询:读操作只需访问一个分片数据库,减少跨库开销。
- 轻量级:无需额外部署,嵌入应用即可使用。
1.2 适用场景
广播表适用于以下场景:
- 全局配置表:如系统参数、应用配置(
t_config
)。 - 字典表:如状态码、国家代码、货币类型(
t_dictionary
)。 - 静态元数据:数据量小且更新频率低的公共数据,如角色表(
t_role
)。 - 共享数据:需要在所有分片数据库中一致的业务数据。
2. 广播表的工作原理
广播表的操作分为写操作和读操作,Sharding-JDBC 分别处理如下:
2.1 写操作
当对广播表执行写操作时:
- Sharding-JDBC 解析 SQL,识别目标表为广播表。
- 将 SQL 广播到所有分片数据库(如
ds_0
和ds_1
)。 - 在每个分片数据库中执行相同的 SQL,确保数据一致。
示例 SQL:
INSERT INTO t_config (id, config_key, config_value) VALUES (1, 'app_version', '1.0.0');
Sharding-JDBC 会将这条 INSERT 语句同步执行在 ds_0.t_config
和 ds_1.t_config
表中。
2.2 读操作
当查询广播表时:
- Sharding-JDBC 随机选择一个分片数据库(或根据负载均衡策略)。
- 从该分片数据库执行查询。
- 返回查询结果。
示例 SQL:
SELECT * FROM t_config WHERE config_key = 'app_version';
Sharding-JDBC 可能从 ds_0
或 ds_1
的 t_config
表中查询数据。由于数据一致,任意分片的结果相同。
2.3 操作流程图
以下是广播表操作的流程图,使用 Mermaid 绘制: