Tbase 腾讯分布式数据库 --- 道听途说

2019-11-11 22:58:06 浏览数 (1)

基于postgresql的内核,则这款数据库默认是可以将单机或集群的PostgreSQL 无缝(演讲者说的)迁移到TBASE。

下面是一个简易的结构图(分布式数据库一般都具有路由的功能,这里理解中间部分就是路由 元数据存储层)

Tbase 的另一个点,就是节点与hash key的对应关系(这点与部分MYSQL的分布式或中间件是不同的),下面是传统的方式进行数据的分片与数据存储节点之间的关系,这个关系是固化的,如果你想剔除某些节点,或添加节点要数据进行rebalance 那你需要在导出导入一遍数据到新的已添加的节点的整体集群,这是很麻烦的一件事。

TBASE 做了另外一件事,虽然没有具体说,但实际上可能是每个节点都有同一份数据的一部分,并且关键就在中间的 logic shard map 层,这样做的好处就是添加节点和剔除节点对于分布式数据库的整体都是透明的,并且数据也是安全的。这里和另一种分布式的数据库的思想应该是不谋而合(具体及不说是哪个了),并且应该支持数据透明在数据节点之间的平衡(猜的演讲者并未这样说)。

另TBASE 面对的用户可以是拥有比较大的数据的数据用户,这样的情况下,如果KEY 打散的不明显,并且下面的数据节点比较多的情况下,很可能会出现类似某个时间点大量数据进入后的分布不均匀,导致某个节点的数据量可能比较大的情况,所以如何面对将数据打的更均匀是一个问题,Tbase 里面有相关的设置,可以针对这样的数据进行设置 white list 针对这样的数据进行更加打散的设置,防止上面说的问题。

并且这还没有完,由于TBASE 支持的客户类型较多,尤其金融有关的公司,其中由于银监会的制定的规则,用户的数据会有要求保存的时限会很长,而数据都有热访问和冷访问,随着时间的推移,则很大一部分数据都会不在被经常访问,而将这些数据和热数据存储在一起,对数据库的查询方法等都会有影响,另外从经济角度来看,如果存储介质都是 SSD,这样一股脑的存储也是不科学的。TBASE 可以根据用户的设置,将冷热数据分离存储。

另外一点就是JOIN ,多表的JOIN,这里面会有两个方法,1 多表之间的Join是基于sharding key 的则直接下发语句,做JOIN ,2 如果Join不是基于sharding key 的,则直接LOAD 数据到上层,然后在进行运算给出结果。

另外在开源数据库中,利用多核心进行并行运算的是一个问题点,而TBASE 是基于POSTGRESQL的,POSTGRESQL 本身是支持并行查询的,所以 TBASE 也是利用这个点,来加速数据的查询。

TBASE 也是可以基于ZK来进行多地的容灾,并可以自动进行切换。另虽然是基于POSTGRESQL ,但实际上TBASE 解决了一些POSTGRESQL 的问题,比如 vacuum 时会影响性能的问题,索引重建时对性能的影响的问题,数据导入时代索引导入时的性能问题等等。

最后总结一下,这不到30分钟的speech

1 TBASE 支持并行查询(单节点就本身支持 PG原生)

2 TBASE 已经支持部分多表的JOIN 支持的方式有两种

3 TBASE 对部分POSTGRESQL 的问题点进行了改善

4 TBASE 独有的sharding key 设置可以打的更散,并且支持冷热数据分开存储的独特设计

5 TBASE 并不是普通的中间件 POSTGRESQL 的模式,其中间层是有rebalance 以及 多节点数据多副本的存储功能(这点是猜的,并未听到演讲者直接说明,仅仅是通过部分说明推断)

从ORACLE SQL SERVER 到 MYSQL 又到 POSTGRESQL , 从单机到集群,到分布式数据库,变化越来越快。

0 人点赞