专栏首页PingCAP的专栏HTAP 会成为数据库的未来吗?
原创

HTAP 会成为数据库的未来吗?

本文转载自 InfoQ 官网,作者:王晓青

在访问量和数据量急剧膨胀的今天,关系型数据库已经难以支撑庞大复杂的系统规模。在此背景下,备受关注的数据库新理念 HTAP,会是一条“正确”的路吗?

为什么是 HTAP?

在互联网浪潮出现之前,企业的数据量普遍不大,特别是核心的业务数据,通常一个单机的数据库就可以保存。那时候的存储并不需要复杂的架构,所有的线上请求 (OLTP, Online Transactional Processing) 和后台分析 (OLAP, Online Analytical Processing) 都跑在同一个数据库实例上。

随着互联网的发展,企业的业务数据量不断增多,单机数据库的容量限制制约了其在海量数据场景下的使用。因此在实际应用中,为了面对各种需求,OLTP、OLAP 在技术上分道扬镳,在很多企业架构中,这两类任务处理由不同团队完成。当物联网大数据应用不断深入,具有海量的传感器数据要求实时更新和查询,对数据库的性能要求也越来越高,此时,新的问题随之出现:

  1. OLAP 和 OLTP 系统间通常会有几分钟甚至几小时的时延,OLAP 数据库和 OLTP 数据库之间的一致性无法保证,难以满足对分析的实时性要求很高的业务场景。
  2. 企业需要维护不同的数据库以便支持两类不同的任务,管理和维护成本高。

因此,能够统一支持事务处理和工作负载分析的数据库成为众多企业的需求。在此背景下,由 Gartner 提出的 HTAP(混合事务 / 分析处理,Hybrid Transactional/Analytical Processing)成为希望。基于创新的计算存储框架,HTAP 数据库能够在一份数据上同时支撑业务系统运行和 OLAP 场景,避免在传统架构中,在线与离线数据库之间大量的数据交互。此外,HTAP 基于分布式架构,支持弹性扩容,可按需扩展吞吐或存储,轻松应对高并发、海量数据场景。

目前,实现 HTAP 的数据库不多,主要有 PingCAP 的 TiDB、阿里云的 HybridDB for MySQL、百度的 BaikalDB 等。其中,TiDB 是国内首家开源的 HTAP 分布式数据库,接下来,本文将以此例进行深入分析。

一、TiDB 基本架构解析

TiDB 的理论基础来源于 2013 年 Google 发布的 Spanner / F1 论文 ,以及 2014 年 Stanford 工业级分布式一致性协议算法 Raft 论文。在架构上,TiDB 将计算和存储层进行高度的抽象和分离,对混合负载的场景通过 IO 优先级队列、智能副本调度、行列混合存储等技术,使 HTAP 变为可能。

参考 Google Spanner / F1 的设计,TiDB 整体架构分为上下两层:负责计算的 TiDB Server 和 负责存储的 TiKV Server,二者由集群管理模块 PD Server 调度和管理。

TiDB 基本架构

根据 PingCAP 高级技术总监、CMC 成员、华南区总经理姚维最近的《TiDB 性能设计及鲲鹏平台优化实践》演讲,TiDB Server 对应于 Google F1, 是一层无状态的 SQL Layer ,其本身并不存储数据,只负责计算。在接收到 SQL 请求后,该计算层会通过 PD Server 找到存储计算所需数据的 TiKV 地址,然后与 TiKV Server 交互获取数据,最终返回结果。在水平扩展方面,随着业务的增长,用户可以简单地添加 TiDB Server 节点,提高数据库整体的处理能力和吞吐。

作为整个集群的管理模块,PD(Placement Driver ) 主要工作有三类:一是存储集群的元信息;二是对 TiKV 集群进行调度和负载均衡,如数据的迁移、Raft group leader 的迁移等;三是分配全局唯一且递增的事务 ID。

TiKV Server 是一个分布式 Key Value 数据库,对应于 Google Spanner ,支持弹性水平扩展。不同于 HBase 或者 BigTable 那样依赖底层的分布式文件系统,TiKV Server 在性能和灵活性上更好,这对于在线业务来说非常重要。随着数据量的增长,用户可以部署更多的 TiKV Server 节点解决数据 Scale 的问题。PD 模块则会在 TiKV 节点之间以 Region 为单位做调度,将部分数据迁移到新加的节点上。

总体来看,TiDB 具备如下核心特性:

  • 水平线性扩展
  • 强一致分布式事务
  • 故障自恢复(auto -failover)的金融级高可用(非主从)
  • 真正跨数据中心多活

据了解,TiDB 对业务没有任何侵入性,能够替换传统的数据库中间件、数据库分库分表等 Sharding 方案。同时它也让开发运维人员不用关注数据库 Scale 的细节问题,专注于业务开发,大幅度提升研发生产力。目前,TiDB 已被近千家不同行业的企业引入到实际生产环境中,涉及互联网、游戏、金融、政府、电信、制造业等多个领域,并得到成功应用。

二、“TiDB 在 4.0 版本上真正实现了 HTAP 功能”

姚维在接受 InfoQ 采访时表示:“2020 年是 PingCAP 的里程碑年。”在今年的 5 月底、6 月初,PingCAP 将发布 TiDB 重要的 4.0 版本。该版本将会在性能、易用性、易管理性等方面有明显的增强, 事务处理能力方面也有大幅度提高。

除此之外,在 4.0 版本上真正实现了 HTAP 功能。简单来说,用户可以在一套数据库上同时运行截然不同的计算负载,即联机交易的计算负载和海量数据的实时分析。此前,在数据库领域,这两种计算还不能完全放在一起,因为它们对资源的消耗、对计算本身的性能要求,以及对数据的处理方式是完全矛盾的。

姚维表示:“我们经过两年多的内部开发,终于将 OLAP 和 OLTP 真正放在同一套 TiDB 集群上,让 TiDB 可以同时支持联机交易和海量的数据分析。并且这两种计算在内部转换的过程对用户是透明的。”通过底层数据同步及行列透明转换的技术,TiDB 将 TiKV 面向联机交易的行存式引擎与 TiFlash 面向实时分析场景的列存引擎,转为真正的行列混合数据架构。同时,该版本在 TiDB 分布式计算层实现了透明的可根据请求自动选择行列存储引擎的能力,使高并发、低延迟的联机交易与海量数据实时分析查询计算,在 TiDB 新一代架构上完美地融合在一起。

在演讲中,姚维也为我们展示了 TiDB 4.0 版本性能优化的部分成果(图中的纵轴是指语句耗时,该值越低代表性能越好):

三、未来,TiDB 将跑在云上!

和很多企业一样,PingCAP 也是云的用户,数据中心的上百台机器在云上 24 小时不停运转着。

姚维感慨道:“云给我们的业务带来了看得到的便利,比如降低成本、提高效率、灵活性高等,这些好处都是实实在在的。因此,我们相信,未来云一定会成为主流的方向。TiDB 在过去两年时间里面已经在做云的适配。TiDB 跑在云上,底层有很强的计算能力、扩展能力,以及完备的基础设施和基础网络作为支撑,再加上数据库引擎本身的自动横向弹性伸缩能力,其整体所提供的能力很多用户非常想要获得。”

在企业全面上云的大背景下,数据库因其成本昂贵、高运维难度、以及低扩展性和可用性受到挑战,尤其是对传统的数据库而言,在服务用户的过程当中往往没有办法满足用户上云的很多需求。而云计算 + 数据库将带来更低的运营成本、更高的灵活性,以及与未来物联网、5G 结合满足庞大而复杂数据需求的能力。将数据库“搬”到云上,将成为未来数据库发展的主旋律。

在研发 TiDB 的 Cloud 版本过程中,PingCAP 前期主要在与 x86 架构适配。如今,基于用户对异构平台的需求,PingCAP 主要在做 TiDB 在鲲鹏计算平台上的性能优化。根据姚维的介绍,除了市场诉求外,在技术层面还有以下两个主要原因:

  1. 来自分布式数据库的底层需求。x86 平台现在虽然比较成熟,但该架构的扩展性具有比较明显的限制。TiDB 在 x86 架构和 ARM 架构上最大的一个差异在于单台服务器上 CPU 核的数量。因为在固定的情况下,分布式数据库意味着需要多台服务器来组成该集群。PingCAP 在与用户合作的过程中发现,很多企业希望采用具有更多核心的服务器。x86 架构的服务器多为 64 核,而基于鲲鹏高密度的 CPU 核架构,数据库的性能可以有很大的提高。
相应地,对用户而言,部署成本也会有所降低。当单台机器 CPU 核数增多,处理能力会随之增强。在达到同样性能的情况下,采用 ARM 架构的机器台数要比 x86 架构下少。机架、服务器、电源、交换机等周边费用,也会有比较明显的降低。
  1. ARM 的指令级不同于 x86 复杂的指令级,其在语言的优化层面有较大的空间。TiDB 有两种开发语言,其中,与数据库性能息息相关的存储引擎 TiKV 采用的是 Rust 语言,这是一种支持并行的编译型语言,通过优化该语言对鲲鹏处理器架构有比较好的支持性,同时也为编译器等底层的进一步优化提供了空间。

四、TiDB on 鲲鹏,结果如何?

在 TiDB 迁移到鲲鹏计算平台的过程中,PingCAP 做了深入的性能优化,其中涉及诸多层面和细节,仅代码上的重要优化少则有几十项。姚维为我们介绍了其中对 TiDB 性能影响较大的三个优化工作

  1. 在源码适配上,TiDB 底层使用 Rust 语言编写,上层的分布式计算引擎采用 Go 语言编写。TiDB 转移到鲲鹏计算平台上,需要将 TiDB 的源码与该平台进行适配。根据姚维的介绍,在适配过程中,超过三分之一的优化工作都是由编译器自身机制来完成。
  2. 在存储引擎上,TiDB 中的数据被打散在多个节点上,每一个节点中都会有部分的数据存储以及数据冗余副本。在存储引擎框架负责单节点的数据存取操作时,保证数据在内存、磁盘、操作系统、文件系统、存储等各个层面的准确性至关重要,这就需要数据库内部有一个足够强壮的检查机制。
TiDB 通过调用多种校验核的计算方法来实现上述检查。在 x86 上,由于核数不多,该架构上的核心不仅要承载 TiDB 自身的任务处理请求,如数据库的增删改查等运算,还要挤出一部分资源用于校验的计算。而在核数较多的鲲鹏平台上,与数据校验有关的计算可以利用更加宽裕的处理器核资源执行。这类高密度数值类的计算优化,为数据库的性能带来了比较大的影响。
  1. 在网络吞吐的中断上,虽然中断与网卡有关,但也和 CPU 处理网络队列的方式有直接的关联。因此 TiDB 迁移到鲲鹏平台上后,PingCAP 基于 ARM 对网络相关的架构进行了优化和适配,以实现更加稳定高效的集群间通讯。

在整个优化过程中,PingCAP 进行了一轮又一轮针对各项的严格测试,对数据库稳定性基准、性能基准也在做反复的核验工作。在演讲中,姚维也为我们直接展示了 TiDB 在鲲鹏平台上的性能优化成果:

对于用户来讲,这些优化工作最直接的效益就是在成本可控的情况下,能够大幅度提高整个数据库的服务能力,这也是任何产品在用户心中最核心的价值考量。

无论是多大体量的用户,在数据中心未来持续发展的规划过程中,性价比是不得不考量的一个要素。随着集群规模的加大,如果单台集群的性能优化成本很高,那么总体的成本将非常可观,这其中包括不可避免的机房、机架、供电、高端的配设网络等基础设施支出。TiDB 与 ARM 架构的适配,在同样的处理能力甚至更高密度的处理能力之下,可以帮助用户实现总体应用成本不升反降的效果。

写在最后

传统技术在市场上的衰弱和退出,意味着新机会的产生。随着人们对计算、存储、网络等层面的要求越来越高,新技术将迎来更多的机会,这也是 IT 界自然迭代的过程。无论是 TiDB 的出现,还是 TiDB 在鲲鹏平台上的迁移实践,都为后续更高性能和更高性价比的数据库发展带来了足够的信心。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • TiDB 助力东南亚领先电商 Shopee 业务升级

    Shopee(https://shopee.com/)是东南亚和台湾地区领先的电子商务平台,覆盖新加坡、马来西亚、菲律宾、印度尼西亚、泰国、越南和台湾等七个市场...

    PingCAP
  • 刘奇:当今一切都要更实时、更弹性、更简单,TiDB 就是这样的基础设施

    每年我都有一个时间会特别激动,就是产品大版本发布的时候,通常也是社区年度技术大会 TiDB DevCon 举办的时间。去年 TiDB DevCon 2019,我...

    PingCAP
  • 感受开源的魅力,TiDB Committer 白珅的数据库探索之路

    Execution SIG 近日又喜提 Committer 一枚,他就是 b41sh 白珅?。

    PingCAP
  • TiDB 助力东南亚领先电商 Shopee 业务升级

    Shopee(https://shopee.com/)是东南亚和台湾地区领先的电子商务平台,覆盖新加坡、马来西亚、菲律宾、印度尼西亚、泰国、越南和台湾等七个市场...

    PingCAP
  • 我们为什么放弃 MongoDB 和 MySQL,选择 TiDB

    技术选型是由技术方向和业务场景 trade-off 决定的,脱离业务场景来说技术选型是没有任何意义的,所以本文只是阐述了伴鱼技术团队数据库选型的过程,这并不是 ...

    深度学习与Python
  • 刘奇:当今一切都要更实时、更弹性、更简单,TiDB 就是这样的基础设施

    每年我都有一个时间会特别激动,就是产品大版本发布的时候,通常也是社区年度技术大会 TiDB DevCon 举办的时间。去年 TiDB DevCon 2019,我...

    PingCAP
  • TiDB 4.0: The Leading Real-Time HTAP Database is Ready for Cloud

    经过一年多的开发,TiDB 4.0 终于迎来 GA 版本,作为 TiDB「面向未来的数据库」道路上面的一个重要的里程碑,TiDB 4.0 不光在稳定性、易用性、...

    PingCAP
  • 解读 TiDB:行走在 GKE 上的 NewSQL 开源数据库

    数字化时代下,企业的发展与数据库的建设息息相关。如果搭建云下数据库,不仅要通过大量的运维投入保证数据库稳定运行,随着企业规模与数据量的发展,还要应对数据库扩容、...

    深度学习与Python
  • TiDB-Lightning Toolset & TiDB-DM 正式开源,前排开“坑”、PR 走起!

    **TiDB-Lightning Toolset 是一套快速全量导入 SQL dump 文件到 TiDB 集群的工具集**,自 2.1.0 版本起随 TiDB ...

    PingCAP
  • 1.3万亿条数据查询如何做到毫秒级响应?

    TiDB 是一个开源的 MySQL 兼容的 NewSQL 混合事务/分析处理( HTAP)数据库,本文深入探讨TiDB如何在大量的数据上保持毫秒级的查询响应时间...

    数据和云

扫码关注云+社区

领取腾讯云代金券