关于sql:TDSQL-PG-版企业级分布式数据库技术创新实践

108次阅读

共计 3875 个字符,预计需要花费 10 分钟才能阅读完成。

TDSQL PG 版产品介绍

TDSQL PG 版通过十余年打磨大略能够分为以下几个阶段,第一个是单机时代引入 PostgreSQL 做为腾讯大数据平台 TDW 的一个补充,补救了小数据量剖析能力有余。随着业务倒退,单机瓶颈逐渐凸显,促使团队推出了更具备扩展性的 SQL 和兼容 V1 版本,并在 2015 年上线微信领取零碎。

此外,TDSQL PG 版提前布局咱们 ToB 市场,在 V2 版本反对三权分立,加密通明等平安个性,并在 2018 年拿下数字广东和云南公安等多个标杆客户。TDSQLV3 次要定位 HTAP,在 2019 年上线 PICC 外围业务,直到去年公布 V5 版本,次要是为了去 O,内核具备去 O 和读写拆散能力,同时上线的运营商用户还有保险零碎。

本次次要分享 V5 这一块。TDSQL PG 版是基于腾讯及 PostgreSQL 开源的自主分布式 HTAP 国产数据库,其全面兼容 PostgreSQL,高度兼容 Oracle 语法,产品采纳无共享架构,在提供数据仓库解决的能力的同时,还能反对残缺的事物分布式 ACID 能力。

TDSQL PG 版整体能力,从反对上来说它的反对的接口比拟丰盛,比方 libpq 外面 C、C++,Jdbc/odbc、Python、Ecpg,各种罕用语言接口都是反对的,同时它也反对用户自定义函数操作服务。很多企业用户关怀的数据安全方面,TDSQL PG 版是用三权分立平安体系,反对数据脱敏同时还有加密性能,并且反对多种国密算法。

作为一个 HTAB 数据库,咱们反对千万级 TPS 事务处理,全并行分布式计算框架,能够让业务高效实现 OLAP 计算。在数据治理方面,能够反对在线扩缩容,用户无感知数据 Rebalance,应用通明的冷热数据拆散来缩小用户业务老本。此外,咱们还反对多种窗口剖析常函数,并且高度兼容 Oracle 常见语法。

针对 TDSQL PG 版实用场景从两个方面来看,一是业务特色,如果业务满足这些特色,比方在数据量上 OLAP 超过 1 个 T,OLAP 超过 5 个 T 或者并发链接达到 2000 以上,业务峰值每秒 100 万笔左右,同时还必须要有一个分布式的程度扩大能力,须要 OLTP 和 OLAP(03:55 英)混合场景,并且须要严格的事务保障,那么 TDSQL PG 版是很适宜的。第二是业务场景,比如说 TDSQL 在地理信息系统,高并发实时计算方面,比如说 Oracle 兼容都是一个十分好的抉择。

TDSQL PG 版架构

上面介绍 TDSQL PG 版整体架构。GTM 全局事务管理器,它是全局的事务信息的治理节点并且治理全局对象。Coordinator 协调节点,次要是业务拜访的入口,CN 节点中每个节点都是对等的,也说拜访三个节点中任何一个它的后果都是一样的。图中下层是一个数据节点,数据节点是理论解决数据的一些中央,每个数据节点都会有一份本地的原数据,并且还有一些本地数据分片,两头数据交互总线也会把所有的节点有机联结起来,负责整个集群中所有的数据交互。最右边咱们的管控零碎,就负责咱们节点的资源分配、高级平安审计、数据治理、扩容等运维能力。

上面对重点能力进行介绍。首先咱们往年反对了一个多引擎、反对集中式和部署模式还有分布式部署模式,其中集中式部署模式和单机 PostgreSQL 雷同,没有分布式开销的,并且反对一组多备的部署模式和两地三核心,都具备齐备的 Oracle 兼容能力。在金融或运营商保险这种场景中,能够达到 98% 兼容性。并且在业务须要扩容时,都能够无缝扩大成分布式集群。

从集中式扩大到分布式,咱们领有残缺的 ACID 能力,并且在分布式场景,也反对分部件更新全局索引,能够极大缩小咱们业务,进行一些分布式适配的革新量。并且在分布式场景中,TDSQL PG 版也反对提供高性能 OLAP 能力,可能反对业务做分类型查问工作。

TDSQL PG 版同时反对集中式和分布式,集中式与分布式反对残缺的 ACID,其中分布式事务,是基于 GTS 提供的 MVCC 并发管制逻辑,这里一个外围点是 GTS 工夫戳,是由 GTS 集群进行提供。

GTS 集群是从零开始单向递增的逻辑时钟,通过硬件提供足够稳固保障,并且是单向递增,咱们利用这个个性来进行高性能分布式事务。而 GTS 对硬件没有要求,能够通用服务器来做 GTM 节点,同时 GTS 自身能够通过流复制来保障可靠性。在性能方面,在 24 核服务器可能解决 1200 万的 QPS,简直能够满足所有场景的须要。

TDSQL PG 版性能

TDSQL PG 版在全并行计算方面。咱们的并行能力分为三个层级:

一是节点级并行,所谓节点级并行是零碎拿到一个查问后,会把查问下发给不同的 DN,并且通过 DN 之间的分片查问节点级并行。

二是过程中并行,在执行器拿到算子当前,把它算子并行化,容许多个 CPU 同时用资源来实现查问工作。

三是通过指令级,比方能够通过非凡的 CPU 指令,SIMD 指令,进行算术运算等,来晋升计算效率。

往年新增另一个性全局索引,要晓得如果在分布式设计中,表配置非散布键性能它比散布键性能差距是比拟大的。举个例子,比如说散布键是其它键,那这里用一个非散布键,比如说 Mike 这个名称。

因为这个键它不是咱们的散布键,数据库其实不晓得它在到底存储到哪个节点。那这样咱们就须要在节点上,比如说 DN1、DN2、DN3 都须要扫描。假如我这条数据只有一条,是多了很多无用扫描,特地是你节点数越来越多时。当然有了全局索引时,相当于有一个全局索引来存储 MAC 这条记录对应的存储节点,那这样就能够比拟快的去找到这一个节点。并且随着节点数的增多,性能也是稳步晋升。

这里须要一个全局事务来保障咱们的全局索引,保障数据表之间的一致性。能够看一下右下角这个图,蓝色是非散布键的索引,黄色的是散布键,灰色的是全局索引。能够看到绝对于非全局索引它的晋升还是很大的。绝对于咱们的散布键查问,它的性能是比拟靠近的。全局索引的高性能还能够用在外键或者全局惟一束缚上,这样能够极大缩小业务的分布式革新老本。

这里还有一个个性就是通明压缩,也就是反对数据库通明压缩能力,这个是齐全对业务通明的。通过简略的 Alter table,能够把一个表间接压缩成它的 1/3,或者它的 1/4、1/5。而后从右边的图能够看到通明压缩次要存储层工作,页面在落盘的时候,调用指定的一个压缩算法,而后存储在对应文件系统外面来缩小磁盘空间。

当业务须要应用一个页面读取进来时,咱们会在内存里进行解压,供业务来应用。上面是 TPCC 模型测试后果。能够看到一个磁盘压缩率大略是升高了 70% 左右,CPU 大略是减少 20%,因为要花额定 CPU 去做压缩,性能 TPCC 查问性能是降 28% 的。这样咱们比拟举荐是这张表对存储敏感会比拟实用一些。

另外咱们反对全面的循环校验。这是对磁盘损坏的保障计划。咱们都晓得磁盘坏块概率是比拟低的,然而随着业务量增长,集群数、服务器数增多,它会成为一个必然的事件。TDSQL PG 版反对全流程校验,例如定期全量校验,被动施行故障探测,故障阻断,在故障发现之后,会主动发动增量修复去实现正本的修复。在这样一个伎俩中,能够保障坏块不会扩散到冷备还有备机,相当于病毒一样,不能让它扩散到所有正本上。

在表还有咱们的一个数据中,保护了一个块级别的 CRC 信息,从介质外面读取的时候咱们能够校验一下来做数据保护。最初来说当故障产生时,做数据储备转换时,能够保障在数据正确状况下,第一工夫复原业务,再异步修复流程。通过备份或者说冷备中,来拿取受损页面推动修复。在线修复能够通过可用的副原本进行,没有可用正本才会从冷备中拉取。

另外一点 Direct IO 因为 Page Buffer 问题,导致内存的利用率并不高,并且在某些状况下容易引起性能稳定。TDSQL PG 版是反对 Direct IO,通过测试能够进步内存的使用率。并且在 TPCC 测试,它的稳定是更加安稳的,也就是说它可能进步业务稳定性。在新版本中,咱们反对多种定位视图,一是全局事物视图,反对全局链接治理。第二是咱们内存占用视图,能够对以后内存使用量进行一些统计。

用户案例

接下来是咱们的经典用户案例。TDSQL PG 版是在 2015 年,替换微信领取的分库分表零碎上线,撑持微信领取从 500 万笔到 1000 万再到 10 亿笔,保障业务稳定性还有连续性,这里用到了数据治理性能。图上右上角是咱们的 CLB 腾讯的外部的一个负载平衡的组件。

CLB 是咱们接入的节点,在 DN 上涨,咱们是存储四个月的数据,四个月内的数据是存在一个高性能的 SSD 外面,四个月前的数据会存到比拟一般的设施,比方大存储硬盘。它应用了大小商户策略,例如能够解决不同体量用户歪斜问题,从而高效保证系统运行。通过这种形式,把整个业务老本升高到 1/4 左右。

在内部有比拟大的一个保险公司,上线了十分多的实例。这里只展示了咱们的一个部署架构。首先分为两个立体,一个是读写立体,一个只读立体,读写立体业务能够通过 VIP 来提供读写能力,咱们的只读立体,VIP 在多个节点中做负载平衡,提供一个业务只读的能力。

TDSQL PG 版在数据生成后,还要把数据同步到其它的零碎上,比如说 Elasticsearch、MySQL、INFORMIX 或者 Oracle 在 TDSQL PG 版中能够在通信的同时把它解成一个 Json 模式,把它同步到 Kafka 同步工具,最初通过 Kafka 通到其它业务零碎。

最初一个案例是去年冬天刚上线的的七人普零碎,这个我的项目是国家外围重点项目,波及 700 万的普查员以及 1 亿人自主申报,并且在 15 天内实现数据量采集。在我的项目中 PostgreSQL 承当了十分重要的剖析业务,同时具备了实时写入还有海量数据同时剖析能力。明天的分享到此结束,谢谢大家。

正文完
 0