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

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

数据分片

shardingsphere官网对数据分片的解释

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

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

垂直分片

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

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

水平分片

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

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

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

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

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

相关推荐
萧瑟余晖34 分钟前
Java深入解析篇十七之Spring Security
java·开发语言·spring
weixin_431600441 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js
IT_陈寒2 小时前
JavaScript类型转换把我坑惨了,这破玩意真该早点搞明白
前端·人工智能·后端
用户938515635072 小时前
手写一个 LLM Harness 框架:用工程化手段把大模型幻觉踩在脚下
javascript·人工智能·后端
wei_shuo3 小时前
KES 云原生部署与弹性扩展:容器化、Kubernetes编排与自动伸缩
后端
一木之林3 小时前
Python.五.(一)--1. 并发编程、异步IO与多进程
后端
离陌在学C#3 小时前
C# 重载与重写:深入理解面向对象编程的核心概念
java·c#
feng尘3 小时前
# 彻底搞懂 ReentrantLock 与 tryLock:从秒杀实战到 AQS 独占模式源码剖析
后端
啷里格啷3 小时前
Linux进程管理完全指南:从基础到云原生编排
后端·架构
洛阳泰山3 小时前
AI 应用层被 Python 卷成红海,为什么我偏要用 Java 造一个 RAG + 工作流引擎?
java·人工智能·后端