https://shardingsphere.apache.org/document/legacy/4.x/document/cn/overview/
概念&功能
.1 数据分片
.1.1 核心概念
- SQL
- 逻辑表Logic Table
- 真实表Actual Table
- 数据节点Data Node
- 绑定表Binding Table
指分片规则一致的主表和子表。绑定表之间的分区键要完全相同。 - 广播表Broadcast Table
指所有的分片数据源中都存在的表,表结构和表中的数据在每个数据库中均完全一致。适用于数据量不大且需要与海量数据的表里德关联查询的场景,例如:字典表。
- 分片Sharding
- 分片键Sharding Key
- 分片算法Sharding Algorithm
- 精确分片算法PreciseShardingAlgorithm
- 范围分片算法RangeShardingAlgorithm
- 复合分片算法ComplexShardingAlgorithm
- Hint分片算法HintShardingAlgorithm
- 分片策略Sharding Strategy
- SQL Hint
- 配置Configuration
- 分片规则Sharding Rule
分片规则的总入口,包括数据源、表、绑定表和读写分离 - 数据源配置Data Source Configuration
真实数据源列表 - 表配置Tables Configuration
逻辑表名称、数据节点与表分片规则的配置 - 数据节点配置Data Node Configuration
用于配置逻辑表与真实表的映射关系。可分为均匀分布和自定义分布两种形式。- 均匀分布Uniform Distribution
- 分片策略配置Sharding Strategy Configuration
- 数据源分片策略
- 表分片策略
- 自增主键生成策略
通过在客户端生成自增主键替换以数据库库原生自增主键的方式,做到分布式主键无重复。
- 分片规则Sharding Rule
.1.2 内核剖析
.1.3 使用规范
- SQL
- 支持项
- 不支持项
- 路由至多数据节点
不支持CASE WHEN、HAVING、UNION (ALL),有限支持子查询。 - 对分片键进行操作
运算表达式和函数中的分片键会导致全路由。由于ShardingSphere只能通过SQL字面提取用于分片的值,因此当分片键处于运算表达式或函数中时,ShardingSphere无法提前获取分片键位于数据库中的值,从而无法计算出真正的分片值。当出现此类分片键处于运算表达式或函数中的SQL时,ShardingSphere将采用全路由的形式获取结果。
- 路由至多数据节点
- 分页Pagination
- 分页性能Pagination Performance
- 性能瓶颈Performance Bottleneck
- ShardingSphere的优化
- 分页方案优化Pagination Solution Optimization
- 分页子查询Pagination Sub-query
MySQL和PostgreSQL都支持LIMIT分页,无需子查询:
- 分页性能Pagination Performance
.1.4 其他功能
- 行表达式Inline Expression
行表达式的内容使用的是Groovy的语法,Groovy能够支持的所有操作,行表达式均能够支持。 - 分布式主键Distributed Primary Key
- 实现动机
- 内置的主键生成器
- UUID
- SNOWFLAKE
- LEAF
- 强制分片路由Sharding Hint
ShardingSphere使用ThreadLocal管理分片键值。可以通过编程的方式向HintManager中添加分片条件,该分片条件仅在当前线程内生效。
.2 读写分离Read-write splitting
.2.1 核心概念Core Concept
- 主库Master Database
添加、更新以及删除数据操作所使用的数据库,目前仅支持单主库。 - 从库Slave Database
- 主从同步Master-Slave Replication
- 负载均衡策略Load Balance Strategy
.2.2 核心功能Core Features
- 提供一主多从的读写分离配置,可独立使用,也可配合分库分表使用。
- 独立使用读写分离支持SQL透传。
- 同一线程且同一数据库连接内,如有写入操作,以后的读操作均从主库读取,用于保证数据一致性。
- 基于Hint的强制主库路由。
.2.3 不支持项Unsupported Items
用户手册
.1 Sharding-JDBC
.1.1 使用手册
https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-jdbc/usage/
使用示例:
https://github.com/apache/shardingsphere-example
.1.2 配置手册
https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-jdbc/configuration/
.1.3 JDBC不支持项
https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-jdbc/unsupported-items/
.2 Sharding-UI
https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-ui/
Sharding-UI是ShardingSphere的一个简单而有用的web管理控制台。它用于帮助用户更简单的使用ShardingSphere的相关功能,目前提供注册中心管理、动态配置管理、数据库编排等功能。
FAQ
https://shardingsphere.apache.org/document/legacy/4.x/document/cn/faq/