首款国产开源数据库TBase核心架构演进
腾讯云数据库国产数据库专题线上技术沙龙正在火热进行中,4月14日李跃森的分享已经结束,没来得及参与的小伙伴不用担心,以下就是直播的视频和文字回顾。
大家好,我是李跃森,目前负责腾讯云TBase数据库研发的相关工作。今天跟大家分享的内容主要分为两大章节。第一章:数据库技术的基本概念和基本架构。第二章:TBase产品的典型案例,以及在国产化上我们所做的具体工作。
PartⅠ 数据库产品分类
首先,我们先来看一下数据库的分类。数据库分类有多种方式,接下来会介绍三种分类。
一、按照数据库的业务场景划分
一般我们在谈论数据库的时候,首先会问数据库是OLAP还是OLTP?
OLAP,即在线分析型处理,这一块其实是按照业务特点来划分的。OLAP的第一个特点是数据量比较大,一般会要求PB级或者更大的数据量,数据量大了以后,对存储的成本会比较敏感,对数据压缩也会有一定的要求,OLAP业务系统的并发量不会特别的高。另外,OLAP场景下查询一般都会比较复杂,每个查询需要消耗大量的资源,会要求多个用户之间的查询要减少相互之间的影响,进行资源隔离。类似产品还是比较多的,比如:TeraData、SybaseIQ、GreenPlum、HP Vetica、 Gauss200、 VectorWise、AWS Redshift,以及现在比较流行的ClickHouse等。
OLTP,即在线事务型处理。在线事务处理数据量相对较小,普遍时延要求较高,要求达到毫秒级。在吞吐量这一块,普遍要求能够达到百万级以上的TPS。OLTP业务系统都是我们核心的业务系统,包括银行、保险、电信这样的实时在线的业务,业务特点决定对容灾能力有一些突出的要求,一般来讲要求99.99%以上的可靠性。传统上来讲,我们一般讲数据库都是指:Oracle、IBM DB2、Informix、MySQL,以及PostgreSQL这样的一些数据库。
这两年还兴起一个数据库概念叫做HTAP,即混合事务处理和在线分析型数据库。基本的思路是能够在单集群内部同时处理OLAP和OLTP两类业务,而且OLAP和OLTP业务之间有良好的资源隔离。典型产品这两年宣传的比较多的如TiDB,包括TBase设计之初也是这么考虑的。
二、按照时间划分
现在我们一般会讲Old SQL,这个所谓的Old SQL是指传统的SQL数据库。此类数据库的典型特点:它是一个完整的关系模型,具备完整的事务能力。像Oracle、IBM DB2、MySQL、PostgreSQL这些是传统的数据库。
在2010年前后,No SQL数据库在互联网中大量兴起,泛指一些非关系型数据库,主要特点是没有完整的事务支持,而且没有模式的概念,普遍采用无共享架构,根据业务进行分区。另外在复制这一块,使用异步复制,保持最终的一致性。典型产品包括Redis、HBase、MongoDB等。
最近这两年,结合上面的Old SQL和No SQL的概念,又提出了一个New SQL的概念, New SQL其实是结合了Old SQL和No SQL的概念,它既具备了No SQL的便利性,又能够支持传统数据库数据库架构,但是New SQL在关系模型的完整性上存在一些问题。
三、按照架构
数据库的划分经过多年的演进,大概有三种架构。
第一种是单体数据库,所谓单体数据库就像之前我们经常提到的Oracle、PostgreSQL、MySQL这种单机的数据库,单个实例能够提供独立的服务,主备机通过流复制来做HA,这是传统的架构。
第二种是共享存储架构,多个数据库实例同时访问一份存储,数据是存储在专门的存储设备中,这里的存储设备一般是指磁盘阵列或者类似于这样专用的存储设备,现在我们能看得到的包括Oracle RAC、SybaseIQ都是这样的架构。
第三种是无共享,也就是我们常说的MPP。每个DN节点存储一个数据分片,在DN节点之上会有另外一层节点,这层节点在不同的数据库中有不同的名字,但是它的作用其实是一样的,都是接收业务请求,然后分发,同时对业务请求进行返回。TeraData、GreenPlum、TBase、TDSQL、TiDB都是属于这种架构。
随着云业务形态的诞生,这两年在传统的数据库架构基础上,产生一种比较流行的新架构--云原生架构,日志即数据库。
它会把数据库的业务逻辑沉到底层的存储节点里面去,存储节点和上面的计算节点是进行逻辑上的分离,其实也就是物理上的分离,另外一种叫法是计算与存储分离。在下层的存储集群之间,通过一致性协议来保证多个副本之间的一致性,统一对上层的数据节点提供一个可靠的存储服务。这里补充说明下:数据库节点就是把数据库的业务逻辑,包括SQL解析及SQL的执行都做到上层去。类似的产品现在也比较多,基本上几个大的云厂商都有自己的产品。主要有两个技术优点,1、可以做到存储计算分离,存储和计算可以做到单独扩容,2、它可以实现存储的超卖,这在云上这是一个比较有价值的能力。
这里给大家重点介绍一下PostgreSQL数据库,如果是在十年以前提到PostgreSQL,大家可能都会一脸懵。经过这几年国内PostgreSQL社区的推广,PostgreSQL的认可度已经高了很多。
它是由图灵奖得主石破天主导的一个项目,以BSD风格协议开源。PostgreSQL的好处是源代码可以随意的修改和发布,甚至可以用来盈利。PostgreSQL在网站上声称是最先进的开源数据库,经过这么多年的发展,PostgreSQL的整个功能上距离商业数据库Oracle确实越来越近,作为开源产品也具备了一些Oracle不具备的灵活性和扩展能力。最近几年社区发布版本的速度是越来越快,技术思路逐渐向商业数据库靠近,相信后面会有越来越多的业务跑在PostgreSQL上。
很多人都问MySQL和PostgreSQL两个之间有什么区别。这边简单列举了一下它们的区别。
接下来跟大家分享下TBase的整体情况,先从TBase的简史说起。
TBase是基于PostgreSQL研发的一个分布式数据库,最早可以追溯到2009年。当时是拿PostgreSQL来作为我们内部数仓的补充,支撑小数据量的分析。2014年开发了TBase第一个版本,内部开始使用。2015年TBase在微信支付商户集群里面上线后。到了2018年,发布了TBase V2,在数字广东和云南公安上线。2019年发布了TBase的V3版本。
PartⅡ 数据库核心技术选型
在讲架构设计之前,先来看一下TBase面临的业务场景。
TBase的整体物理架构,跟前面提到的架构是比较类似的。
TBase整体物理架构分三个部分,图中的左侧上层GTM是事务管理器,它主要是提供全局事务的信息,同时管理全局对象。另外图中右侧上层Coordinator(协调节点CN),它主要提供业务访问入口。协调节点中每个节点之间是对等的,也就是说业务访问这三个节点里面的任何一个,它得到的结果都会是相同的,而且访问这个节点,事务的一致性能够得到保证。图中中层是集群数据交互总线,把整个数据库集群的各种连接到了一起。图中下层是数据节点,数据节点有些是我们实际存储数据的地方。每个数据节点会存储一份本地的Local元数据,同时还有本地的数据分片。
1 2 3 4 下一页>