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

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

数据分片

shardingsphere官网对数据分片的解释

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

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

垂直分片

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

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

水平分片

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

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

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

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

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

相关推荐
程序员爱钓鱼2 分钟前
Rust 切片 Slice 详解:安全访问连续数据
前端·后端·rust
要开心吖ZSH1 小时前
一文搞懂:JDK 21 虚拟线程 vs N种异步方案,到底该怎么选?
java·数据库·jdk·虚拟线程
guodingdingh6 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯8 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
优橙教育8 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
掘金码甲哥8 小时前
这块终端神器, 必须吹爆!
后端
糖果店的幽灵8 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents
Csvn9 小时前
📊 SQL 入门 Day 8:集合操作 — 用 SQL 做数学里的"并交差"
后端·sql
腻害兔10 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
碎光拾影10 小时前
ARM交叉工具链各工具作用及IMX6ULL平台LED+蜂鸣器裸机程序实现
java·开发语言·数据库