Sharding-Proxy 的 public scheme
是 Apache ShardingSphere 生态中 Sharding-Proxy 的一个配置概念,主要用于定义逻辑数据库(逻辑 Schema)与后端物理数据源的映射关系。以下是详细说明:
1. 核心作用
- 逻辑数据库暴露:
public scheme
是客户端连接时看到的逻辑数据库名称(如sharding_db
),它本身不存储数据,而是通过规则将请求路由到后端的真实物理数据库。 - 解耦与透明化:对应用层隐藏实际分库分表的复杂度,开发者只需操作逻辑表名,Sharding-Proxy 自动处理底层分片、路由、聚合等逻辑。
2. 配置示例
在 Sharding-Proxy 的配置文件(如 config-sharding.yaml
)中,典型结构如下:
schemaName: sharding_db # 公共逻辑Schema名称(public scheme)
dataSources:
ds_0:
url: jdbc:mysql://db1:3306/real_db_0
username: root
password: xxx
ds_1:
url: jdbc:mysql://db2:3306/real_db_1
username: root
password: xxx
rules:
- !SHARDING
tables:
t_order:
actualDataNodes: ds_${0..1}.t_order_${0..15}
# 分片规则:数据分散在16个表(t_order_0到t_order_15)和2个库中
3. Public Scheme 的关键特性
特性 | 说明 |
---|---|
多租户支持 | 可配置多个 schemaName ,每个对应独立的物理数据源集合,实现租户隔离。 |
动态绑定 | 支持运行时动态加载/卸载数据源,无需重启代理。 |
协议兼容性 | 兼容 MySQL/PostgreSQL 等协议,应用无需修改驱动即可连接。 |
4. vs Sharding-JDBC
- Sharding-JDBC:嵌入应用的轻量级组件,无
public scheme
概念,直接在代码或配置中绑定物理库表。 - Sharding-Proxy:独立服务层,通过
public scheme
提供统一的入口,更适合运维集中管理。
5. FAQ
Q:能否一个 public scheme 映射到异构数据库(如 MySQL + PostgreSQL)?
A:可以!ShardingSphere支持跨异构数据库的联邦查询(需确保SQL语法兼容)。
Q:如何实现读写分离?
A:在 dataSources
中配置主从库,并通过 !READWRITE_SPLITTING
规则指定负载均衡策略。
如果需要具体配置案例或深入某个场景的实践细节,可以进一步探讨!
内容由零声教学AI助手提供,问题来源于学员提问