ShardingSphere学习手册

it2025-04-07  29

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复合分片算法ComplexShardingAlgorithmHint分片算法HintShardingAlgorithm 分片策略Sharding StrategySQL Hint 配置Configuration 分片规则Sharding Rule   分片规则的总入口,包括数据源、表、绑定表和读写分离数据源配置Data Source Configuration   真实数据源列表表配置Tables Configuration   逻辑表名称、数据节点与表分片规则的配置数据节点配置Data Node Configuration   用于配置逻辑表与真实表的映射关系。可分为均匀分布和自定义分布两种形式。 均匀分布Uniform Distribution 分片策略配置Sharding Strategy Configuration 数据源分片策略表分片策略 自增主键生成策略   通过在客户端生成自增主键替换以数据库库原生自增主键的方式,做到分布式主键无重复。

.1.2 内核剖析

.1.3 使用规范

SQL 支持项不支持项 路由至多数据节点   不支持CASE WHEN、HAVING、UNION (ALL),有限支持子查询。对分片键进行操作   运算表达式和函数中的分片键会导致全路由。由于ShardingSphere只能通过SQL字面提取用于分片的值,因此当分片键处于运算表达式或函数中时,ShardingSphere无法提前获取分片键位于数据库中的值,从而无法计算出真正的分片值。当出现此类分片键处于运算表达式或函数中的SQL时,ShardingSphere将采用全路由的形式获取结果。 分页Pagination 分页性能Pagination Performance 性能瓶颈Performance BottleneckShardingSphere的优化 分页方案优化Pagination Solution Optimization分页子查询Pagination Sub-query   MySQL和PostgreSQL都支持LIMIT分页,无需子查询:

.1.4 其他功能

行表达式Inline Expression   行表达式的内容使用的是Groovy的语法,Groovy能够支持的所有操作,行表达式均能够支持。分布式主键Distributed Primary Key 实现动机内置的主键生成器 UUIDSNOWFLAKELEAF 强制分片路由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/

最新回复(0)