Java在数据库分库分表中间件(ShardingSphere)中的设计

简介: 单表数据量超过千万级后,查询性能下降;单库连接数有限。分库分表将数据水平拆分到多个数据库和表中。https://ylswkj.com业务代码需要知道具体访问哪个库哪个表,侵入性强。

1.分库分表的需求背景
单表数据量超过千万级后,查询性能下降;单库连接数有限。分库分表将数据水平拆分到多个数据库和表中。但业务代码需要知道具体访问哪个库哪个表,侵入性强。ShardingSphere是一套开源的分布式数据库中间件,完全由Java实现,通过拦截JDBC层SQL,自动路由到目标数据源。
参考:https://www.xrzqr.cn/category/city-forecast.html

2.ShardingSphere-JDBC的工作原理
它以JAR包形式集成在应用内,重写DataSource接口,解析SQL中的分片键(如order_id),根据分片算法(如order_id%4)计算出目标库和表,再改写SQL(如添加表别名、调整范围查询),最后执行并聚合结果。对业务代码透明,只需修改DataSource配置。

3.分片策略与分布式事务
分片键:通常选择查询频率高的字段(如user_id、order_id)。
分片算法:取模、哈希、范围、复合分片。
分布式事务:ShardingSphere支持XA(Atomikos)和柔性事务(SEATA),保证跨库操作的ACID。

4.读写分离与影子库
ShardingSphere也支持主从读写分离:写SQL走主库,读SQL走从库,并内置负载均衡。影子库(ShadowDB)用于压测流量路由,不影响生产数据。
参考:https://www.xrzqr.cn/category/national-weather.html

5.案例:电商订单表的分库分表
某电商订单系统,订单表每天新增200万行。计划分16个库,每个库64张表(共1024张表)。分片键为order_id(雪花算法生成,包含时间戳)。使用ShardingSphere-JDBC配置:
default-database-strategy:order_id%16确定数据库。
table-strategy:order_id%64确定表。
对于查询用户订单(需user_id分片),使用复合分片,同时支持order_id和user_id,避免全路由。
上线后,单条查询平均耗时<2ms,范围查询通过IN拆解为多个单分片查询,性能提升10倍。

6.SQL限制与注意事项
不支持跨库JOIN(除非绑定表,即相同分片键)。
ORDERBY、GROUPBY会收集所有分片结果再聚合,大量数据时性能差。
不支持INSERTINTO...SELECT等复杂语句。
分布式序列(雪花算法)内置支持。

7.与MyCAT、Vitess对比
MyCAT:独立代理,性能有损耗,但跨语言。
Vitess:基于MySQL协议代理,功能强大,但部署复杂。
ShardingSphere-JDBC:无代理,性能好,适合Java技术栈。

8.总结
ShardingSphere是Java生态中分库分表的首选方案。它在JDBC层透明地解决了水平扩展问题,让开发者可以继续使用熟悉的JPA或MyBatis操作多数据源。对于数据量持续增长的应用,这是必备的中间件。
参考:https://www.xrzqr.cn

目录
相关文章
|
17天前
|
人工智能 自然语言处理 文字识别
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
Qwen3.7-Max是阿里云百炼面向智能体时代推出的新一代旗舰模型,对标GPT-5.5、Claude Opus 4.7等闭源旗舰。该模型支持百万级token上下文窗口,具备顶级推理能力、多模态搜索与视觉理解增强、流式输出低延迟响应等核心优势,覆盖编程、办公、长周期自主执行等复杂场景。同时支持OpenAI接口兼容,便于系统快速迁移。用户可通过Token Plan团队或节省计划等订阅方式灵活调用,适合企业级高要求场景使用。
6283 30
阿里云百炼Qwen3.7-Max简介:能力、优势、支持订阅计划参考
|
2天前
|
数据采集 人工智能 前端开发
让 Coding Agent 从黑盒到透明:阿里云 Agent 观测审计数据采集实践
AI Agent 规模化落地带来执行黑盒、行为难追溯、成本难度量三大难题。阿里云基于 OTel 标准,面向 Coding Agent、个人通用助理和框架型 Agent,推出 LoongSuite Pilot、插件及探针等无侵入采集方案,让 Agent 实现可看见、可分析、可审计、可治理。
582 135
|
12天前
|
存储 定位技术 数据库
CodeGraph 如何让 Claude Code减少 7 成工具调用?
CodeGraph 为 Coding Agent 提供本地代码知识图谱,把函数、类、调用链和框架路由提前整理成“项目地图”,减少盲目搜索和文件读取。它不是新 Agent,而是上下文基础设施,让 Agent 更快找到正确代码路径,平均减少 7 成工具调用。
1238 3
|
9天前
|
人工智能 安全 定位技术
CodeGraph深度解析 让Claude Code工具调用直降七成的核心原理与实操教程
如今以Claude Code为代表的AI编程智能体已经成为开发者日常编码、项目重构、漏洞修复的必备工具。但在长期使用过程中,几乎所有开发者都会遇到同一个明显痛点:AI虽然具备强大的代码生成与分析能力,却常常陷入盲目探索的循环中。
1088 1
|
19天前
|
人工智能 自然语言处理 供应链
|
9天前
|
人工智能 弹性计算 安全
阿里云618活动时间、活动入口、优惠活动详细解读
2026年阿里云618创新加速季已全面开启,作为年度力度最大的云产品促销活动,本次大促覆盖轻量应用服务器、ECS云服务器、GPU云服务器、数据库、AI算力、安全服务、CDN等全品类产品,推出5亿元算力补贴、新用户限时秒杀、普惠满减、企业专享、免费试用、云大使返佣等多重福利,个人开发者、中小企业、AI团队均可享受专属低价。本文将系统梳理2026年阿里云618活动的完整时间节点、官方参与入口、各类优惠细则、使用规则、热门产品推荐及实操代码,帮助用户精准参与、高效省钱,以最低成本完成上云部署。
871 5
|
8天前
|
人工智能 自然语言处理 安全
Vibe Coding 实战:别盲目跟风,先分清 vibe coding 适合什么场景
本文系统总结vibe coding实战经验:明确其适用场景(原型、小工具、标准化模块),剖析5步落地流程(场景判定→结构化提示词→目录初始化→分模块生成→自动化校验),指出四大常见误区,并推荐适配工具Trae。强调“场景匹配+规则前置”是提效关键,避免盲目套用。
723 1