Tbase 部分原理与尝试

2020-09-08 00:00:00 数据库 专区 事务 架构 方式

受人之托,必然众其所托之事. 委托人希望对TBASE进行尝试,并写一篇相关的文字. 既然答应别人,自然是要完成的, 不能草草了事.


数据库目前存在的架构模式如下图, 各种数据库基本上的架构模式都是基于以下三种模式,当然也有例外这里就不在提了.

POSTGRESQL 本身的变种基于新的数据库架构中, POSTGRESQL -XL 是一种share nothing 方式的结构.  

类似基于这样架构的数据库产品也越来越多,例如TIDB .

下面是TBASE的架构图,与POSTGRESQL XL 基本上是一致的.

GTM 主要是负责,全局的事务的性,与 MYSQL+分布式中间件不同,中间件是无法对事务进行管控的,是通过MYSQL本身 的 XA 协议来保证相关的事务在多台MYSQL数据库节点中的一致性.


其中GTM 通过全局事务列表的方式来管理,在执行SQL 的时候,将事务列表SNAP到DN, 但这就牵扯到事务在GTM上的上锁的问题,这必然会影响并发,所以 TBASE 在GTM 中添加了单向递增时间戳,和postgresql 本身的事务原理一致, 每个事务都提交  gts_min ,当前的事务小于 gts_max 对于当前事务就是可见的.


在数据的分布存放的问题上, 如果采用中间件例如 MYCAT 等存储数据会根据相关的算法,例如HASH 或者 RANGE 的方式来存放.  TBASE 这里的方式采用的方式是复制表(表比较小) +  HASH  数据存放的方式.


相关文章