ShardingSphere【四】—— 了解总结

193 阅读2分钟

背景

最近加入一个源码小组,源码小组的代码指路人秦金卫老师,带我们一起走进他参与的分布式开源数据库中间件ShardingSphere,我在了解这个分布式数据库中间件之前,对于分布式数据库,甚至是分布式都处于稀里糊涂的状态,更不用说分库、分表、分布式事务,tcc和柔性事务等这些概念,但是为了了解shardingsphere,我还是尽可能的去了解这些我平时暂时没有接触到的概念,感觉收货很大。

下面分别摘录几个我觉得使用shardingsphere之前应该了解的概念,利用比较简洁的语言解释一下,有需要了解更多可以自行百度和谷歌。

数据分片

垂直分片

垂直分表

把本来按照业务设计的一张表,按照字段是否是核心字段或者读写频繁度等因素,分成两个或者多张表子表,这就叫垂直分表

垂直分库

按照业务抽象,一个库只存放一类业务数据,这样可以使得一种业务完全占有一整个数据源的容量,减少后期数据压力

水平分片

水平分表

按照一定规则,把同一张表内的数据分散到同一数据库不同表

水平分库

按照一定规则,把同一张表内的数据分散存储于不同的数据库节点,且这些集群节点的schema是一致的

分布式事务

XA两阶段事务

相对于传统事务,增加了数据库准备阶段,这样在每个数据库提交数据前,数据库会判断是否可以正确执行sql并反馈给应用,所有数据库事务下的分支事务都达成一致后,才会提交,从而达成了强一致性

SEATA 柔性事务

通过TC的协调,分支事务RM提交或者回滚结果告知TC,然后TC再响应TM全局事务是否回滚,我个人理解相对于XA两阶段事务,SEATA柔性事务更加乐观,XA两阶段,从开始就觉得有可能有分支事务本地提交失败,先要让所有的分支事务都达成可以成功提交的前提下,才会开始commit,否则直接cancel。而SEATA柔性事务,更加相信每个分支事务,让他们先去尝试提交,如果有一个分支事务失败,再将之前已经提交的事务回退即可