云原生数据库TDSQL-C关键技术内核解密

63 阅读5分钟

随着万千企业数字化转型提速,对云计算的使用效能提出新的需求。云原生以其独特的技术特点,正在成为驱动云计算“质变”的技术内核,腾讯云在云原生数据库领域进行了全方位技术创新和应用实践,本文将分别从海量存储、弹性缩扩容、秒级快速备份与回档和支持serverless4个维度分享腾讯云原生数据库TDSQL-C的显著特性,以及在不同业务应用场景中的内核技术优化实践。

传统数据库架构瓶颈

在自研云原生数据库TDSQL-C之前,我们也做多年其他的云数据库产品,越到后面越发现传统数据架构存在着几方面问题:

1.数据本地存储,随着业务的增长,单机存储量可能会大于单机磁盘容量限制,需要对业务进行迁移,对业务造成不便;

2.传统MySQL架构的一主多备,备份迁移回档数据时会引发可用性和水平扩容等问题,这些突出的矛盾在传统的架构里难以解除,或解决的效果并不理想。

因此,我们开始考虑需要引入新的存储架构,而这种架构需要满足几个特点:

1.存储容量可以自动扩充,且容量足够大,足以支撑业务的发展。

2.不应有主备延迟,能够解决数据的可靠性和可用性问题;

3.随着业务的增长,能够进行水平扩容,扩缩容的整体响应要好。基于以上几点设想,我们设计了云原生数据库 TDSQL-C。

TDSQL-C四大显著特征

TDSQL-C如图所示,分为计算和存储层,一主多备。计算主要负责原子性、一致性、隔离级别的实现,即ACID里ACI的实现;存储主要负责数据持久化,主备之间通过 redo log 进行内存同步。通过把计算和存储解耦以及引入新的数据同步协议,实现了 TDSQL-C。

TDSQL-C 四大特性

**第一,支持PB级存储。**传统数据库架构,购买规格和机器所用空间,一般单机磁盘容量是几T到几十T之间;TDSQL-C存储可直接连到网络存储,支持PB级存储;

**第二,秒级扩缩容能力。**通过计算与存储解耦,存储空间可以自动扩缩容,弹性能力显著;

**第三,秒级快照备份回档能力。**金融和游戏行业相关应用场景对备份的时效性和速度有较高的要求,通过存储层秒级快照实现数据和redo日志的持续备份,提供任意时间点数据恢复能力(Point-in-time recovery,PITR) ;

**第四,支持serverless形态,按需计费。**传统数据库计费取决于本身购买的规格,以及使用所需要的时间;TDSQL-C 支持 serverless形态,支持按实际计算和存储资源使用量收取费用,不用不付费,整个服务监控力度达到秒级级别,将云原生技术普惠用户。

TDSQL-C产品关键优化

为了实现TDSQL—C以上显著特性,我们针对数据库内核做了大量的优化:

极速备份和回档。目前传统云数据库备份使用方式为物理备份或者逻辑备份,耗时较久。TDSQL-C采取并行备份,恢复时把快照拿出来,每个cell 独立 apply redo log,对比市场同类产品,我们备份时间仅为同类产品的1/10。 创建索引。

TDSQL-C在创建索引方面做了三个阶段优化:

1)并化扫描,并行能力减少IO所带来的影响;2)并行 merge sort 功能,减少排序时间;3)批量构建b+树,先构建多个小b+树,然后再对小的b+树合成一个单独的b+树,避免二次扫描。

极速启停。过往buffer pool大实例重启,初始化耗时长,用户体验差;基于对启动时间的进行时耗分析,BP和事物系统初始化,我们对它进行了并行化处理,经过优化,启动&关闭时间对比于其他云产品启动和关闭时间降低了一个数量级。

极致伸缩。卸载空间扩展,日志驱动按需扩展,计算节点可根据业务需要快速升降配,秒级完成扩缩容,降低用户使用成本。

DDL的优化。在用户的实践中,修改列是一项频繁且不友好的操作,此操作会阻塞用户的读写请求,对业务影响非常大,TDSQL-C业界首创支持了instant modify column功能,达到了秒级修改列的效果。

二级缓存。针对普遍存在的IO bound场景,在计算层引入独立于bufer pool的二级缓存,利用非易失存储等新硬件的能力对BP进行补充,缓存热数据,解决网络存储带来的 IO问题。

最终,TDSQL-C的这些特性实现,离不开团队对产品的用心,从可靠性、可用性以及深度结合业务本身的特性所做的优化。

未来产品演进

数据库技术将随着时间的推移不断演进和革新,未来TDSQL-C将重点往以下两方面不断发力:一是database极致性能,log store提升日志更快的响应速度和带来更大的整体吞吐量,提供极致的写性能;二是跨Region读,提供可用性更高的、跨Region的只读服务,并提供金融级的可靠性和跨区域灾备等。