【IT168评论】随着业务场景对海量数据实时分析需求的急剧增长,传统数据库正面临前所未有的挑战。比如:复杂查询导致系统资源不足,执行引擎效率低响应慢,存储成本持续攀升等问题。
为了应对这些挑战,天翼云TeleDB分布式数据库基于share-nothing架构,结合列式存储和向量化执行等技术,同时优化分布式执行框架,使得分析型查询性能得到极大提升,同时通过数据压缩、冷热分离等方案进一步降低了存储成本。经过多年发展,TeleDB成为一款可管理PB级的海量数据的HTAP数据库系统。
在第15届中国数据库技术大会(DTCC2024)上,天翼云科技有限公司的资深研发专家胡彬,基于自己和团队在天翼云的技术实践经验,发表了题为《天翼云分布式数据库实时分析引擎详解》的演讲,介绍了TeleDB在分析型查询性能提升方面的工作成果。
▲天翼云科技有限公司资深研发专家 胡彬
嘉宾介绍:15年码农,8+年数据库管控和内核研发经验,专注于分布式系统、云原生和存储引擎领域,有从零孵化云原生数据库产品的经验。2022年加入天翼云,现为天翼云数据库团队内核负责人,主要负责TeleDB多款数据库产品的内核研发工作。
本文由ITPUB整理,经胡彬老师授权发布。以下为演讲实录。
从集中式到原生分布式 TeleDB的架构进化之路
早在2012年,天翼云数据研发团队正式成立。经过十多年的发展,天翼云数据库在2023年实现了电信集团核心业务系统数据库的全量替换,也助力中国电信成为了全球第 一家实现数据库自主可控的运营商。
截至目前,中国电信天翼云数据库团队已经荣获了200+项核心专利技术,并建立了全国5大研发中心。同时,团队汇聚400多名数据库领域的专项人才,为TeleDB的快速发展奠定了坚实人才基础。
天翼云TeleDB的架构演进方向与大部分数据库产品相似,从集中式到中间件分布式,再到原生分布式的路径。
起初,天翼云TeleDB采用集中式架构,基于成熟且生态完善的MySQL、PostgreSQL开源数据库进行深度优化,快速替换了一批非核心系统并积累研发经验。后因单机处理性能的局限性,难以满足业务快速发展的需求,而转向分布式中间件架构。
天翼云TeleDB通过引入分布式中间件来满足高并发业务场景,但该架构存在SQL兼容度低、关系模型支持不完整,复杂SQL查询性能低等问题。随后,TeleDB进一步发展为原生分布式架构,既满足OLTP场景扩展性的需求,又适合做复杂的查询,提供高兼容、强扩展、低迁移成本的数据库云服务。
经过多年的发展,TeleDB已进化为一款成熟的商用分布式数据库。在基础能力完善的前提上,天翼云数据库团队正在聚焦提升产品性能,尤其针对复杂查询场景,进一步优化其处理能力与效率,为用户提供更好的服务体验。
例如,通过引入革命性的远程数据访问技术RDA(Remote Data Access),解决了传统分布式架构下复杂查询导致的连接数、进程数暴涨问题。
针对高负载系统,TeleDB引入了全局缓存技术,对执行计划缓存和元数据缓存实施统一管理。通过全局缓存优化,系统整体内存使用率降低了53%,不仅提升了系统的利用率,还显著增强了稳定性。
在分布式系统中,事务跨节点运行涉及多个节点的协调运行,加剧了死锁检测的复杂性。为此,TeleDB开发了死锁检测算法DDS(Distribute Dependency Spread)将检测、解锁实效性提升到秒级,检测效率与资源利用率均大幅提升。
尽管有了上面这些技术的加持,在处理复杂的AP查询时,TeleDB的性能相对一些分析型数据库表现并不突出。这主要是因为如下两点:
1. SQL引擎采用典型的火山模型,存在大量虚函数调用,导致CPU缓存和流水线无法被有效利用。
2. 在存储侧采用行存格式,导致在任何情况下都需要加载整行数据,降低了磁盘IO的效率。
为了进一步提升AP业务的处理能力,TeleDB引入了列式存储和向量化引擎,同时整合小文件合并、冷热分离、RDA等技术,极大地提升了AP业务处理能力,同时有效降低了数据存储成本。具体如下:
TeleDB列存储架构概览:合并小文件,提升访问效率
如图所示,TeleDB列存储架构的最上层是基于tableam扩展的存储接口层——Pax Access Method,同时基于TupleSlot扩展出BatchTupleSlot以支持批量数据格式,这个方案可以最大限度的减少对执行器的侵入,实现最小的内核修改。
中间层包含Pax Write State Machine及Pax Read State Machine,分别负责列存修改、读取、索引、表达式下推等功能。Pax File对上提供列存文件的读写接口,Pax File Storage代表存储数据的列存文件。
左侧Pax Meta Table管理列存表与列存文件的映射关系。一张列存表最终由一系列列存文件组成。
TeleDB是一款HTAP数据库,在TP场景下,离散的insert、update 和 delete等写操作会导致列存表产生大量小文件,从而影响其读性能。TeleDB通过定期合并小文件来提升访问效率,确保数据实时写入的同时保持查询性能的稳定。
上图中,File Meta Manager作为小文件合并的bgworker,基于Pax Meta Table中列存表的元数据信息,结合用户配置,制定文件的合并策略,并将合并任务下发给worker子进程,由多个worker并发地进行合并操作。
完成合并后,File Meta Manager通过修改Pax Meta Table中的元数据,将请求转发到合并产生的新列存文件。同时下发已合并小文件的清理任务。File Meta Manager在制定合并策略时会充分考虑系统负载等因素,避免对系统可用性造成影响。
TeleDB支持将列存数据降冷到外部对象存储中,以降低存储成本,同时也可以和数据湖(datalake)等下游产品打通,避免引入复杂的ETL工具。
File Storage Manager是负责列存文件存储位置管理的bgworker,其周期性地根据用户定制策略,将符合规则的文件上传到对象存储中并从本地磁盘删除。同时,也支持将对象存储中的文件重新加载到本地磁盘。
File Storage Manager通过修改Pax Meta Table中列存文件的存储位置实现冷热数据的无感知切换。为了提升访问对象存储的性能,TeleDB引入了XBlock块缓存服务,这一设计也实现了对不同对象存储协议差异的屏蔽。
当然,使用TeleDB的列存功能非常简单。首先,加载列存引擎插件,再创建列存表,之后即可像使用行存表一样进行操作。如有需要,也可以查询系统目录表 pg_class和pg_am来确认表的存储引擎。
TeleDB向量化执行器:跨平台适配,性能无界限
TeleDB还引入了Vector Executor向量化执行器,当前支持包括Sort、Agg、Filter、Project等向量化算子。同时,向量化执行器通过Pax AM和Heap AM对接底层存储引擎,从而同时支持列存表和行存表。这种向量化执行引擎与现有执行引擎兼容的设计,介绍了对内核的侵入,同时可实现算子的逐步替换。
上图展示了通过优化group by子句,来实现hash agg并行+向量化的过程。在这个过程中,col2的hash计算和结果集中sum/count = avg的计算都实现了向量化。利用现代CPU的SIMD指令,执行性能得到极大提升。同时TeleDB的向量化执行器针对ARM、X86等不同硬件平台进行了适配。
RDA(Remote Data Access)是TeleDB用来解决分布式数据库在重分布场景下进程数暴增问题。
以一个由N个DN组成的TeleDB为例,在传统架构下,一个包含M个Join算子的查询,在每个DN上都会产生M*N个进程。在引入RDA后,DN间不需要新增进程传输数据,因此每个DN上只会有1个会话进程。更少的进程数意味着更少的内存占用和CPU上下文切换代价。
RDA算子通过共享内存和forwarder通信,直接将元组转化为二进制数据在DN间传输,不再受限于libpq基于数据行的传输方式,这和向量化算子一次性传输批量数据(BatchTupleSlot)的场景相契合,避免了列转行带来的性能损失。
如上图所示,TeleDB向量化执行引擎的使用也很简单。在加载插件后,优化器会根据情况,自动选择向量化算子。
在引入列存引擎的基础上,TeleDB基于XLOG实现了列存表的主备复制,提升了数据可靠性和业务可用性;同时支持列存数据的压缩和加密等功能,进一步降低了存储成本,提升了数据安全性。
在执行器层面,我们也进行了更多的优化工作,包括:使用列表MinMax索引,优化Sort+Limit查询,避免扫描全部数据;引入动态分区裁剪,尽可能的避免冗余的分支访问;通过构建RuntimeFilter进一步优化hashjoin的性能等。在优化器层面,TeleDB基于代价和规则进行不同执行器的选择。
HTAP多引擎平台:TeleDB的架构与演进之路
如图所示,TeleDB引擎是基于PostgreSQL开放架构打造的面向HTAP多引擎平台。
顶层是基于规则和代价模型的优化器;往下是执行层,包括 PG 原生执行引擎和向量执行引擎;存储层则是基于TableAM的Heap、PAX、XStore等存储引擎,XLake是基于FDW框架的自研数据库插件,支持以外表的方式访问Parquet、CSV等不同格式的外部存储文件;最底层则是XBlock块缓存服务。
TeleDB分布式架构将持续演化,包括:集中式与分布式架构一体化,支持负载均衡和读写分离的高性能网关等。此外,在存储引擎方面也会迭代升级,引入向量存储强化AI场景,并推进存储条带化,提升系统弹性与扩展能力,以应对更多业务场景。
写在最后
从集中式到原生分布式,天翼云TeleDB的架构演进之路不仅是对技术边界的探索,更是对市场需求深刻理解的结果。其引入的RDA、DDS、Global Cache等技术创新,解决了传统分布式数据库的诸多痛点问题,极大地提升了数据处理能力和系统稳定性,为分布式事务处理带来了革命性变化。
展望未来,天翼云TeleDB将构建多引擎的数据库自动驾驶平台,利用先进的AI技术赋能数据库运维与管理,开启数据库智能时代的新质生产力。在这个数据驱动的时代,天翼云TeleDB愿与广大企业携手并进,共同开启数据库技术的新篇章,赋能企业数字化转型,共创美好未来!