专栏首页飞总聊IT一个OLTP数据库居然打榜OLAP全球第一

一个OLTP数据库居然打榜OLAP全球第一

坊间传来消息,OceanBase又一次打榜TPC全球第一。自从有过两次TPC-C第一之后,这第三次打榜也有点不新鲜了。不过这次可不是TPC-C,而是TPC-H。OceanBase以1526万QphH的性能总分创造了新的世界纪录,成绩是现在榜单第二名的10倍多!

和TPC-C一样,TPC-H也是TPC家族里面有悠久历史的测试标准,历来为很多的数据库厂商去打榜。但是不一样的是,TPC-C主攻OLTP,而TPC-H则是主攻OLAP。

传统意义上,我们认为OceanBase是一个OLTP数据库。但是,这些年里,OceanBase在OLAP端不断发力。OceanBase的OLAP能力也同样不容小觑。

OceanBase的领导团队也多次对外表示过,在不牺牲TP性能的前提下,让AP的性能也做到极致,从而真正打造一个混合事务/分析处理(HTAP)的通用关系型数据库。这次TPC-H的打榜,无疑证明了OceanBase在OLAP能力上同样不容小觑。

在数据库领域,一直以来有两种论调,一种是OLTP和OLAP都有自己的专属数据库产品,后者通常被成为数据仓库。另外一种观点是数据库就是数据库,能够很好处理OLTP的负载的同时也应该能够很好的处理OLAP。

后者通常被称为HTAP。比如说我们熟知的Oracle数据库,其TP性能很好是广为人知的,但是其AP性能也同样不容小觑,是真正的一款HTAP产品。市面上号称自己是HTAP的产品很多,但是能够真正在TPC-C和TPC-H两个测试标准都拿下世界第一的,还只能当属OceanBase。

由于TP和AP的查询在很多方面表现不同。TP查询通常数量多,单个查询简单,只需要访问少量的数据。AP的查询通常来说数量并没有那么多,但是查询逻辑复杂,很多查询会涉及到若干张表中的全表或者相当一部分数据。这就导致了TP和AP在技术上有天然的不一致性。在一个擅长OLTP的数据库里面,做到极致的OLAP,也就有着一些技术挑战。为此,我特意采访了OceanBase研发中心资深总监陈萌萌,来帮助我们深度解读一下OceanBase是如何解决这些技术挑战的。

陈萌萌表示,能够拿到TPC-H的第一名,这归功于OceanBase是一个MPP架构的分布式数据库能力。如果用数据库里面更通用的语言来翻译,这是一个shared-nothing的架构,具有很好的扩展性。

拿Oracle数据库和OceanBase做个比较。OceanBase很容易的就可以调度几千台机器进行运算。而Oracle则要困难的多,基本上以10为数量级的单位就是Oracle的集群规模。由于Oracle的架构问题,上千台机器是不可能的。所以Oracle的发展走向了数据库一体机,堆积高端硬件,搞垂直扩展。OceanBase并没有限制其垂直扩展的能力,同时其水平扩展能力也非常的强。

当然,这样的架构对于解决TP问题的优势是显而易见的。因为TP查询通常来说只需要访问一个分区的数据,可以在少量节点上跑起来,并且能够在不同的节点上跑不同的查询,并发性也很好。

仅仅有这样的MPP架构,并不足以支撑AP查询。AP查询引擎需要在两个方面做出很好的优化:

第一,其数据处理引擎必须是一个真正的分布式引擎。用数据库的学术用语来说就是支持exchange operator,能够对数据进行shuffle。当然仅仅是一个分布式的引擎还是不够的,那仅仅是这个数据库具备了OLAP的处理能力。但是在今天的环境下,要想高效率的处理OLAP的查询,还离不开operator的向量化。

OceanBase从OLTP的数据库到HTAP数据库的发展起步于OceanBase2.0时期。在数据处理引擎层面,同时做到了分布式化和向量化。这两方面是一个高效率的OLAP数据处理引擎的基础,也是今天TPC-H登顶的重要因素。

第二,其查询优化需要做的相当的好,能够有效的针对复杂的查询生成高效的执行计划。说个不恰当的比喻,如果说OLTP对查询优化的要求是小平房的话,OLAP对查询优化的要求则是高楼大厦。

OceanBase在优化器方面也做了很多的工作。其中有一个检验OLAP优化器到底是处于什么样水平的标志是优化器是如何处理serial和paralle plan的,也就是如何在执行计划中引入exchange operator。

这里的套路一般有两个,简单的做法是先不管exchange operator,直接当成单机查询先生成一个最优的serial plan,然后再在上面添加exchange operator。比较高级的做法是优化器可以同时检索serial和parall plan,同时生成有exchange和没有exchange的执行计划,并从中根据代价选择合适的。

而代价是什么,本身也是一个很复杂的问题。举个例子来说,Bloom filter经常用在分布式Join里,来减少数据传输。在传统意义上来说,比如说对一个只有几十台机器的Oracle 数据库,bloom filter的生成,传输和使用的代价基本上可以忽略不计。而在一些大数据产品,和包括OceanBase这样水平扩展可以上几千个节点的分布式数据库来说,Bloom filter的生成,传输和使用的代价就不再是可以忽略的了。因此,针对一个水平可扩展的分布式数据库的优化器,其基于代价的优化的逻辑上也必然不一样。

简单总结来说,OceanBase从2.0开始发力OLAP的能力,首先是基于其一直以来良好的MPP架构。其次是OceanBase在查询优化,和执行引擎等多方面都对OLAP进行了全面的提升。两者相辅相成的情况下,才同时登顶了TPC-C和TPC-H的世界第一,这是非常不容易的。

我比较好奇的另外一个问题是,在OceanBase里OLTP和OLAP的负载会不会打架。毕竟,从TPC-C和TPC-H两个测试来看,在单独跑TP和单独跑AP的时候,OceanBase都有非常良好的表现。而这也只能证明OceanBase在单独跑TP或者单独跑AP的时候性能很优,并不能证明TP和AP混合跑的时候,会有什么样的表现。就这个问题我也请教了陈萌萌。

陈萌萌表示OceanBase目前实现了基于cgroup的AP和TP资源隔离,这对CPU和内存的隔离效果都不错,所以并不会因为TP而抢了AP的风头,反之亦然。这也是我知道的业界比较通行的做法。

和陈萌萌的对话和沟通,让我对OceanBase目前的架构有了更好的了解。OceanBase打榜第一次拿下TPC-C第一的时候,我是非常兴奋的,看到了国产数据库的进步。但是我多少还有点遗憾,毕竟和第二名的差距并不大,而前者是很多年前跑的记录。第二次刷新TPC-C记录的时候,我不仅仅是兴奋,更多的是吃惊,毕竟那个新记录实实在在的是一座不容易攀登的高峰。无论哪个数据库厂商想来攀登一下,都要费九牛二虎之力。

而当这次OceanBase又登顶,但却是带着TPC-H的第一来的时候,我只有一种目瞪口呆的感觉了。这年头里,OLTP的数据库跑到OLAP的场地来秀肌肉,还把人家的头名给摘走了。这只能说对手太强,不能说那些做OLAP的都废物吧。

当然,TPC-H毕竟是一个比较老的标准了,也有其明显的缺陷。比如说TPC-H里面的Primary Key值的分布,并不能真实的反映出现实数据中的Key的zipf分布的特点,也就是著名的八二法则:80%的数据只出在20%的Key上。而新标准TPC-DS则很好的解决了这个问题。

展望未来,我很期待OceanBase什么时候能够把TPC-DS的第一也给拿下来,那就真的是无敌了。

本文分享自微信公众号 - 飞总聊IT(feiitworld),作者:努力赚钱的小作者

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-05-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一文了解华为Gauss数据库:开发历程、OLTP&OLAP特点、行式&列式存储,及与Oracle和AWS对比

    数据库是计算机行业的基础核心软件,所有应用软件的运行和数据处理都要与其进行数据交互。2008年阿里提出“去IOE”,而10年之后,我们现在来看,发现Oracle...

    数据和云
  • Global 358种 DataBase排名 最新榜

    国产数据库异军突起的今天,Oracle、MySQL 、Microsoft SQL Server 前三的宝座短时间内无可超越。

    杨漆
  • 当 TiDB 与 Flink 相结合:高效、易用的实时数仓

    随着互联网飞速发展,企业业务种类会越来越多,业务数据量会越来越大,当发展到一定规模时,传统的数据存储结构逐渐无法满足企业需求,实时数据仓库就变成了一个必要的基础...

    PingCAP
  • TiDB 在 Ping++ 金融聚合支付业务中的实践

    Ping++ 是国内领先的支付解决方案 SaaS 服务商。自 2014 年正式推出聚合支付产品,Ping++ 便凭借“7行代码接入支付”的极致产品体验获得了广大...

    PingCAP
  • 读 TiDB 论文有感 | 数据强一致性且资源隔离的 HTAP 数据库

    陈现麟,伴鱼技术中台负责人,从 0 到 1 搭建伴鱼技术中台,对分布式架构、服务治理、稳定性建设、高并发高 QPS 系统和中台化的组织架构搭建有一定的经验,崇尚...

    PingCAP
  • OLTP与OLAP的区别精简总结

    1、当今的数据处理大致可以分成两大类: 联机事务处理On-Line Transaction Processing 联机分析处理On-Line Analytica...

    王知无-import_bigdata
  • OLTP与OLAP的区别精简总结

    1、当今的数据处理大致可以分成两大类: 联机事务处理On-Line Transaction Processing 联机分析处理On-Line Analytica...

    大数据真好玩
  • 腾讯云数据库产品介绍

    腾讯云上有许多种数据库产品,本文简单介绍每种产品的介绍,特性,应用场景等,帮助各位根据业务需要选择最适合的数据库。

    scarlett学习手册
  • Flink 与 TiDB 构建高效易用的实时数仓

    随着互联网飞速发展,企业业务种类会越来越多,业务数据量会越来越大,当发展到一定规模时,传统的数据存储结构逐渐无法满足企业需求,实时数据仓库就变成了一个必要的基础...

    zhisheng

扫码关注云+社区

领取腾讯云代金券