shardingsphere-spring 实现数据分片(一)

本文章主要是一些概念性的东西,大家可以自己去官网学习,本文档需搭配shardingsphere-spring 实现数据分片(二)食用

数据分片

shardingsphere官网对数据分片的解释

数据分片指按照某个维度 将存放在单一数据库中的数据分散 地存放至多个数据库或表 中以达到提升性能瓶颈以及可用性的效果。 数据分片的有效手段是对关系型数据库进行分库和分表。分库和分表均可以有效的避免由数据量超过可承受阈值而产生的查询瓶颈。 除此之外,分库还能够用于有效的分散对数据库单点的访问量;分表虽然无法缓解数据库压力,但却能够提供尽量将分布式事务转化为本地事务的可能,一旦涉及到跨库的更新操作,分布式事务往往会使问题变得复杂。 使用多主多从的分片方式,可以有效的避免数据单点,从而提升数据架构的可用性。

通过分库和分表进行数据的拆分来使得各个表的数据量保持在阈值以下,以及对流量进行疏导应对高访问量,是应对高并发和海量数据系统的有效手段。 数据分片的拆分方式又分为垂直分片和水平分片。

垂直分片

简单来说就是数据存放在一个库多张表里,减少了单表的存储数据量,一定程度上减少了B+树的深度,缓解了磁盘的IO对数据读取的影响

垂直分片不担心事务,因为他在一个库里

水平分片

某个字段按照某种逻辑路由到相应的数据库,数据表中

水平分片就涉及到了分布式事务;

解决了存储的问题后就会带来新的问题,面对如此散乱的分片数据,需要知道数据需要从哪个具体的数据库的子表中获取。

一些其他问题,比如 分页的排序,分组等

如果跨库,这就涉及到了跨库事务,在不能避免跨库事务的场景,有些业务仍然需要保持事务的一致性。 而基于 XA 的分布式事务由于在并发度高的场景中性能无法满足需要,并未被互联网巨头大规模使用,他们大多采用最终一致性的柔性事务代替强一致事务。

相关推荐
無a伟7 小时前
RabbitMq高级特性:TTL,死信队列,延迟队列
java·分布式·rabbitmq
geovindu7 小时前
CSharp: Strategy Pattern
开发语言·后端·c#·.net·.netcore·策略模式·行为模式
stark张宇7 小时前
从 Paxos 到 Raft:一文讲透分布式一致性与复制状态机
分布式·后端
RsThe7 小时前
Spring AI 2.0:Java AI 开发的分水岭
后端
长谷深风1117 小时前
Agent 跑了 30 分钟宕机,如何从断点继续?
java·大数据·人工智能·ai·大模型·memory·aiagent
慧都小妮子7 小时前
DevExpress Java 文档处理 API 免费 CTP:PDF、PowerPoint、条码与跨平台部署
java·pdf·powerpoint·devexpress·文档处理·条码生成
泡海椒7 小时前
告别反射低效:JQuick-Java ASM动态调用链性能优化实战
java·python·性能优化
n8n8 小时前
Spring AI 工具调用实战:模型自主决策、@Tool 方法封装与 ReAct 模式
后端
土司大王8 小时前
LeetCode 17 电话号码的字母组合:Java 回溯模板、多叉决策树与复杂度分析
java·leetcode·决策树
只爱喝胡辣汤8 小时前
05-JVM 监控与故障排查工具
后端