日前,第 11 届 PostgreSQL 中国技术大会圆满闭幕,大会上腾讯云多位顶级技术达人携手亮相,别离对腾讯云 PostgreSQL 系列产品技术亮点和翻新实际案例进行了深刻解读,针对 TDSQL-C PostreSQL 高可用个性、TDSQL-A 倒退历程、技术架构等做出了具体介绍。
会上腾讯云数据库开源产品 TDSQL PostgreSQL 版(开源代号 Tbase)再次颁布降级:分区表能力加强,分区剪枝性能晋升 30%,分布区表关联查问性能(Join)晋升超十倍。此外,异地多活易用性加强、分布式死锁自动检测并解锁性能上线,2PC 残留自动检测并清理等多方面降级,全方位的展现了腾讯云在 PG 技术畛域的冲破和服务。
同时在本次大会,腾讯云 TDSQL 凭借成熟的一站式解决方案和行业利用实际,斩获“数据库最佳利用奖’’,这是既取得中国开源软件联盟 PostgreSQL 分会颁发的‘‘2021 PostgreSQL 中国最佳数据库产品’’奖之后,TDSQL 在 PostgreSQL 畛域的杰出体现再获认可。本次主论坛现场,腾讯云数据库专家工程师刘少蓉具体解读了腾讯云在 PostgreSQL 畛域的全线产品技术架构演进和利用场景,明天带大家一文纵览刘少蓉博士的演讲精髓。
(数据库最佳利用奖)
腾讯云 PostgreSQL 家族
早在 2008 年开始,腾讯在 PG 方面就开始做相干数据库研发,通过十几年的研发和业务打磨,咱们腾讯也为业界奉献了比拟丰盛的产品线:RDS 云数据库(TencentDB for PG),TDSQL PG 版(企业级分布式数据库 PG 版,为用户提供 TP、AP 整体解决方案),TDSQL- A(基于分布式 TDSQL 架构专门研发的一款剖析型产品)和 TDSQL-C PG 版(云原生数据库)。上面咱们会具体介绍每款产品的架构和利用场景。
TencentDB for PG 是腾讯云在 PG 方面的 RDS,用于给用户提供开箱即用的云端数据库服务。用户能够通过云控制台一键创立和治理数据库。腾讯云负责解决绝大部分简单而耗时的管理工作,如 PostgreSQL 软件装置、存储管理等,这样用户就能够更专一于业务程序开发。
咱们来看一下 TencentDB for PG 的架构,这也是比拟典型的单机云数据库的架构。一主一从的强同步保障服务的高可用。同时呢,在线的热数据也会定时的备份到 COS 下面,以便在数据库劫难时进行数据恢复,这也保障了高可靠性。TencentDB for PG 也跟多种腾讯云产品集成和联通,比方说云监控能够主动监控数据库,省去了人工 DBA,ES 集群提供了日志查问服务等。
除了典型 RDS 服务,腾讯云 TencentDB for PG 还有一些比拟独特的劣势,能够依据业务的需要来定制化内核优化。举个例子,已经有个用户在使咱们 RDS 服务的时候,
反馈说当呈现频繁 CREATE TABLE / DROP TABLE 的时候,尤其是大表的操作时,会造成主备之间较大的提早,导致 WAL 大量的沉积、来不及重放并回收。依据这个场景咱们在内核上退出异步 DDL 形式,在收到 DROP TABLE 的 WAL 时,先进行标记,在闲暇时逐渐从 shared_buffer 和存储上删除数据。从而实现备库上 DDL 的异步解决、及时响应后续 WAL 的重放,防止了沉积。
TencentDB for PG 在肯定数量下提供了一种 All In One 的数据解决方案。大家也都晓得 PG 自身是一款十分好的开源软件,也有着比拟好的 TP 和 AP 能力。当用户在应用 PG 时业务不断扩大,数据量超过单机 limit 的时候,那么腾讯云数据库可能提供什么解决方案呢?
传统的办法是多加几台机器,分库分表,把一张逻辑表分为很多物理表,这个益处也是非常明显的,比如说插入性能会比拟高,点查也很快。当然问题也很多。业务自身须要实现非常复杂的分布式逻辑,比方说分布式事务,数据库跨表查问等。对用户更敌对的解决方案是数据库自身提供分布式架构,比方说 share-nothing MPP,提供存储和计算的程度扩大能力。把简单的分布式逻辑留给数据库解决,业务逻辑简略。
TDSQL PG 版架构,能够从三个角度来看,首先是 GTM 事务管理器,它是负责分布式架构下全局事务管理,以及全局的对象治理。同时事务管理器是通过一主多素来保障它的可靠性、可用性。架构图中右侧下层是 Coordinator(协调节点 CN),它次要提供业务拜访入口。协调节点中每个节点之间是对等的,也就是说业务拜访这三个节点外面的任何一个,它失去的后果都会是雷同的。图中下层是咱们的数据节点(Datanode)。数据节点是咱们理论存储数据的中央。每个数据节点会存储一份本地的数据分片还有本地元数据。Datanode 同时提供了计算性能,例如本地数据的计算以 MPP 架构下数据重散布的计算,e.g. join, aggregation。咱们这个架构下也有相应管控,比如说指标监测、运维治理、告警、平安审计、数据治理等等。
分布式事务零碎里的一个外围设计难题就是如何高性能,低成本的保障事务的一致性。针对这个问题,咱们 TDSQL PG 版也创造了一套基于 Global TimeStamp (全局工夫戳)的 MVCC 可见性判断协定来提供高性能可扩大的分布式事务能力。这种协定下 GTM 只须要去调配全局的 GTS,CN,DN 节点上的事务会向 GTM 申请 GTS 来作为事务的版本标识。这样就能够把提交协定从 GTM 的单点瓶颈下放到每一个节点上,加重压力。同时多个 GTM 节点形成集群,主节点对外提供服务,主备之间通过日志同步工夫戳状态,保障了 GTM 服务的高可靠性。
TDSQL PG 版通过十余年研发,在 2019 年 11 月 7 号进行开源,开源代号 TBase,欧洲航空航天局曾利用 TDSQL 开源版进行航行摸索我的项目,数据量高达 300 多 TB,是一个比拟胜利的案例。在 2019 年开源当前这两头进行过屡次版本升级。在 2021 年 7 月开源了新版本,进步了性能以及治理方面。2022 年 1 月 1 号再次降级全新版本,在分区能力方面以及易用性方面都有重磅降级。
接下来要介绍的是咱们的剖析型产品 TDSQL-A,TDSQL-A 是基于 TDSQL PG 版架构上全面优化来打造对于剖析性能 AP 方面的数据库。TDSQL-A 定位是心愿可能提供海量数据实时剖析,所谓海量数据是指 10PB 以上秒级剖析查问性能,同时 TDSQL-A 也 100% 兼容 PG,也高度兼容 Oracle,兼容性在特定场景下达到 98%。
上面大略介绍一下 TDSQL-A 的核心技术。首先它是行列混存,在过来十年间有很多商业级数据库为剖析场景研发推出列存引擎。每个列独自存储,能够达到比拟高的压缩比。剖析型的查问通常只波及到一个数据库的某些列,不须要查问一个行的所有列。咱们 TDSQL-A 给列式数据提供多级压缩,比如说通明级、轻量级。咱们还依据数据自身的类型抉择和定制压缩技术。
同时咱们也有着十分高效的向量执行引擎,以及多种并行策略:节点间的并行 MPP,过程间的并行 SMP,以及指令型的并行 SIMD。最初不得不提一下的是咱们独特的分布式提早物化能力。提早物化是一种罕用的数据库常优化技术。然而分布式分布式提早物化技术目前在咱们是业界第一个提出和实现。咱们的优化器是基于代价的,它会依据具体查问来决定,比如说什么时候要提早物化什么时候要提前物化。咱们的分布式提早优化的能力,可能缩小不必要的网络开销。
介绍完了咱们的单机云数据库 TencentDB for PG, 咱们的 share-nothing MPP 架构下的分布式数据库(TDSQL PG 版和 TDSQL-A)。接下来咱们来聊一聊云原生数据库。首先为什么有云原生数据库的需要呢?在无共享的 MPP 架构下,计算和存储是紧耦合的。那么当业务有瓶颈的时候,不论是计算瓶颈还是存储瓶颈都须要加资源,而且两者的瓶颈的工夫点通常不一样,那么这样必然节约 资源而且不容易扩大。针对这些痛点,AWS Aurora 在 2017 年提出了计算存储拆散的数据库架构。这个架构也是云原生数据库的基石。云原生的实质就是资源池化,降本增效。用户能够按需弹性灵便地扩大 计算或者存储。如果有需要须要减少存储就在共享存储里减少,如果计算节点方面有瓶颈就能够减少计算节点。比如说这个架构上面通常一主多从,主 RW 提供读写能力,从 RO 提供读的能力。
Aurora 在提出存算拆散时也提出了一个观点,就是日志即数据库 log is thedatabase。Log is the database 的核心思想是主备是基于同一份数据。在这个思维之上当咱们写数据的时候,只须要把日志写到共享存储里就能够了。为什么呢?因为共享存储下面它齐全能够通过寄存日志来实现存储节点下面批改,存储层以 Page 为单位来保护数据。因为不须要跨网络写数据自身到共享存储下面,所以极大优化了写的性能。在读的性能下面也有优化,每个 RO 节点它能够在很多状况下从主节点下面接管日志重放来满足读的申请,在少的状况下还须要从共享存储下来读数据。
基于存算拆散,日志即数据库的设计思维,咱们在去年 11 月份商业化了云原生数据库 TDSQL-C PG 版。TDSQL-C 由腾讯齐全自研,交融了传统数据库、云计算、新硬件技术的劣势。高可用、高牢靠、高性能以及极致弹性,可能达到秒级备份和答复。
上面来讲一下云原生数据库 PG 架构,右边这个图大略能够分为两个局部,下面是计算层,上面是存储层。计算层大略分为三个局部,首先是 CynosPG,CynosPG 是基于 PG 研发的计算引擎,它提供通常计算引擎的性能,查问处理器、事务管理、缓存实现等等。因为计算层并不存储数据,而且咱们只是把日志存储在存储下面,所以也就省去了不必要的,比如说 Full page write、脏页刷盘。计算层两头一层是用户态文件系统 Cynos File System,它次要是提供了分布式文件治理。最上面一层是 Cynos Store Agent,它提供了计算存储之间的读写交互,以及主备之间日志流的同步。
在存储层方面首先须要记录日志,须要回放日志,同时也提供了 CRC 日志校验以及备份 / 复原等。同时数据也会定时地冷备到 COS 上来保障高可靠性。
分布式存储方面的架构,首先大家能够看到有很多 StoreNode,咱们简称 SN,StoreNode 提供的是数据服务,StoreNode 维度能够看到不同的 pool。每个 pool 对应了一个数据库实例,每个 pool 上面又同时划分为不同的 segment,每个 segment 基于 Raft 多数派提交保障多正本。
以 segment 维度来存储数据它其实有很多长处,第一个是弹性,咱们有专门的监控零碎监测存储方面的是否状况,当存储节点的应用没有达到肯定阈值时,就会从闲暇 StoreNode 加一个到共享存储池外面,同时能够从 segment 进行搬迁,这样做的益处是它并不会影响到主 segment 的读写申请。另外以 segment 能够履行并行搬迁。多个 segment 同时并发的搬迁,提高效率。
最初对于咱们 TDSQL-C PG 版方面,计算节点方面也是高可用的弹性,比如说当业务需要须要减少或缩小计算节点时,同样也能够很快拉起一个新的计算节点,而且这个计算节点基本上是无状态。同时这个计算节点能够自在地增加,依据业务诉求能够增加不同规格来弹性地实现弹出链路业务需要。
将来时机与瞻望
最初分享一下将来咱们会在 PG 生态方面有什么样的布局,首先咱们生态是要不停地跟进社区倒退,同时咱们也会继续开源咱们的 TBase 的新性能。第二个是对于 Oracle 兼容性、应用性方面,咱们当初在这四款 PG 产品方面都高度兼容,当然离指标 100% 兼容还有肯定间隔,所以咱们必定须要继续倒退进行深耕。
第二个角度,架构方面咱们现已有云原生的数据库,下一步更心愿可能把 HTAP 搬到云原生下面,同时实现 Serverless 以及 Multi-master,可能高效地实现数据共享,保障安全性。
第三个角度是从怎么充分利用咱们新硬件,来实现软硬协同进步性能。最初可能就是智能化,能够了解为怎么可能,比如说智能调优是一方面,腾讯云方面有 DBBrain(智能管家),再一个就是 AI in DB,怎么实现 in-database machine learning 和 analytics。
最初我想援用一下之前看到的一篇文章,CMU 数据库传授 Andy Palvo 写的对于 2021 年数据库的 review,提到的一句话是 ”PostgreSQL has become the first choice in new applications.”。PG 曾经成为新利用的首选。咱们当初属于数据库黄金时代,所以咱们会一起共同努力,谢谢大家!