蚂蚁金服自研数据库OceanBase如何登顶TPC-C

10 月 2 日,国际事务处理性能委员会(TPC)宣布:在最新发布的 TPC-C 排行榜中,蚂蚁金服自研数据库 OceanBase 位列第一。InfoQ 记者第一时间采访到蚂蚁金服研究员、OceanBase 主架构师杨传辉(日照),请他解读这份 TPC-C 榜单,同时介绍 OceanBase 积累九年多才正式参与 TPC-C 打榜的过程和意义。

请从专业性和权威性,参与标准和参与流程上,介绍一下 TPC-C 的测试结果,对于数据库厂商来讲意味着什么?

TPC 是由数十家会员公司建立的非盈利组织,成立于 1988 年,总部设在美国,图灵奖得主 Jim Gray 是奠定人。TPC 的成员主要是业界主流的计算机软硬件厂家,其职责是制定企业级应用基准测试考评的标准规范,而且衡量总体系统的性能和性价比,管理测试结果的认证和发布。Oracle、IBM、微软等公司的多个数据库产品曾屡次参与这个测评而且是主要领先成绩的保持者。TPC-C 是 TPC 组织制定的关于 OLTP 数据库事务处理能力的基准测试,金融、电信、政府等关键领域的客户通常参照 TPC-C 结果来衡量各个数据库厂商的事务处理能力。

只有在 TPC 官方网站上获得认证,获得国际机构审计的测试结果才是 TPC 机构承认的测试结果。TPC-C 认证要求很是严格,大到性能、功能、数据一致性和容灾能力,小到测试过程当中使用过的鼠标键盘价格,都须要严格披露,确保测试可复现且与真实业务场景保持一致。 OceanBase TPC-C 仅仅认证过程就花费超过半年时间

数据库的核心能力包括性能、成本、功能、生态等等,而 TPC-C 是全球 OLTP 数据库最权威的性能测试基准。TPC-C 登顶是每一个 OLTP 数据库厂商的梦想,登顶意味着具有世界级的事务处理能力,可以知足不管是互联网仍是金融、电信、政府等关键领域的核心系统的事务处理需求。目前在 TPC-C 指标上,蚂蚁金服是惟一一家中国上榜企业。

OceanBase 此前参与过该基准测试吗?取得的成绩是什么?

几乎每一个 OLTP 数据库都会在测试环境中跑 TPC-C 基准测试,OceanBase 也不例外。虽然 OceanBase 在阿里巴巴“双十一”等业务场景中积累了很是好的高并发事务处理能力,但 TPC-C“打榜”难度很是之大, OceanBase 积累了九年多才选择正式参与 TPC-C 打榜

请详细介绍这次 OceanBase 参与测试的全过程,包括:如何参与?过程当中须要配合提交什么?

每家数据库厂商均可以参与 TPC-C,只须要邮件联系 TPC 官方组织报名参加便可,关键在于数据库厂商有没有能力经过测试并获得好的结果。

OceanBase TPC 审计分红三个阶段:第一个阶段称为准备阶段,根据 TPC-C 规范的要求实现必须的功能并作好性能优化,这个阶段须要把测试规范理解清楚,并把每一个疑问都和审计员经过邮件沟通清楚。须要注意的是,TPC-C 审计很是严格,必定要细化到 TPC-C 规范的每一个条目,任何一条不符合规范都会致使测试不经过;第二个阶段称为现场预审计,美国的审计员来到蚂蚁金服杭州总部,和 OceanBase 团队成员一块儿完成功能测试、ACID 测试、性能测试、宕机测试、架构和代码 Review、性能成本计算等所有过程。当时在这个过程当中发现了一些问题,OceanBase 团队后续几周进行了所有的改正;第三个阶段称为正式审计,OceanBase 团队按照审计员给的检查列表修改完成全部预审计阶段发现的问题,每一项都获得审计员确认后再运行最终测试,最后完成 FDR(Full Disclosure Report)完整披露报告并向 TPC 技术委员会正式提交结果。

咱们应该如何看懂目前官网披露的 TOP10 结果中,各种相关指标背后的意义?好比性能、价格、CPU...

TPC-C TOP10 结果中,有些是数据库公司测试的,有些是硬件公司测试的,不一样测试的硬件架构和数据库软件架构均可能有所不一样。TPC-C 是开放的测试基准,无论采用什么架构均可以来参加测试,只要符合 TPC-C 规范便可, 最终的衡量标准主要是两个: 一个是性能(tpmC),还有一个是性价比(price/tpmC)。性能表示数据库可以跑多快,性价比表示数据库的成本可以作到多低。

关于性能,TPC-C 测试模拟商品交易,包含五种事务:NewOrder 建立新订单(占比 n/a)、Payment 支付订单(占比>=43%)、OrderStatus 查询最近订单(占比>=4%)、Delivery 批量配送订单(占比>=4%)和 StockLevel 库存状态分析(占比>=4%)。TPC-C 虽然没有规定 NewOrder 事务的占比,但经过其它四种事务的占比能够反推 NewOrder 占比<=45%。而 TPC-C 的性能指标用 tpmC(transaction-per-minute-C)来衡量,表示每分钟执行的 NewOrder 事务数,所以,实际测试时,NewOrder 占比每每都是 45%,相应地,Payment 占比 43%,另外三种事务占比 4%。另外,TPC-C 测试要求 10% NewOrder 分布式事务,以及 15% Payment 分布式事务。

关于价格,TPC-C 测试综合计算软硬件价格以及三年服务价格,软硬件价格除了数据库和存储,还包括针对 TPC-C 场景开发的应用系统,甚至连测试使用的台式机也须要计算在内。软件价格和硬件价格最好区分开来,硬件价格表明商业数据库的真实成本,软件价格表明商业数据库的利润。例如,OceanBase 此次 TPC-C 测试的整体价格虽然不低,可是硬件价格占比很低(不到 18%),真实性价比远远高于第二名 Oracle,总体性价比和 Oracle 比较接近更像是一种订价策略。另外,TPC-C 测试要求磁盘至少可以存储 60 天的数据量。集中式数据库每每存储一份数据,而 OceanBase 采用 Paxos 协议实现 RPO = 0,在 TPC-C 测试以及主流生产系统中都存储了 2 份数据和 3 份日志,至关于 OceanBase 须要提供 120 天的存储容量并计入价格。

关于 CPU,这里有两个 关键点

一、对于集中式架构,除了数据库使用 CPU 以外,专用存储设备也须要使用 CPU。例如,第二名 Oracle 3000 多万 tpmC 的测试中,数据库使用了 108 颗 T3 SPARC 处理器,共有 1728 个物理核心和 13824 个执行线程,同时存储设备使用的是 Intel 服务器做为机头,总共使用了 97 台服务器,194 颗 Intel X5670 CPU,2328 个物理核心。

二、TPC-C 基准测试没法简单地经过增长 CPU 核来提高性能。这是由于,TPC-C 考察分布式事务,数据库软件若是作得很差,不管怎么增长 CPU 也没法提高 TPC-C 性能。Oracle 由于其 RAC 技术能够把 OLTP 数据库服务器扩展到几十个节点,其它软硬件厂商凭借单机没法超越,直到 OceanBase 实现了真正的 OLTP 分布式数据库技术。

从结果来看,OceanBase 提交时间是 2019 年 10 月 2 日,其余几家提交时间是 2011 年、2010 年... 为什么你们提交时间如此不一样?不一样时间提交的结果,具备可比性吗?

TPC-C 测试是须要有驱动力的,Oracle 2010 年测试获得 3000 多万的结果以后就“独孤求败”了,其它厂商测不过,Oracle 也缺少刷新本身保持的记录的动机。Oracle 最新的测试结果是 2013 年 3 月份作的,在榜单的第四名,当时也是为了推广 Sun 的 SPARC 处理器。你们关注的每每都是榜单的前几名,Oracle、DB2 和 SQL Server 这三家公司把 TPC-C 性能测得过高了,致使其余厂商基本没有机会进入 TPC-C 榜单前几名,与其测出普通的结果,还不如干脆保持“神秘”,OceanBase 也是准备了九年确保可以上榜以后才正式测试。

OceanBase 和榜单前几名的测试时间相差比较大,本质的缘由在于其它数据库采用的是专用硬件(专用服务器 + 专用高端存储),OceanBase 采用的是基于普通 PC 服务器的分布式架构。采用分布式架构以后,OceanBase 的硬件成本大幅优于专用硬件,这几年硬件性价比提高的主要受益者也是普通 PC 服务器。因此,这里更可能是专用硬件和分布式架构的区别,而不在于测试时间的差异。固然,基础软件重大创新的时间周期是很长的,通常须要十年以上的积累,银行核心业务今天使用的大型机仍是几十年前的技术。

据介绍这次测试结果是在阿里云支持下实现的,这意味着什么?硬件产品与测试结果之间的关系是什么?

TPC-C 测试须要考察三年软硬件总费用,若是采用独立部署的模式,须要购买所有硬件,例如第二名 Oracle 测试的硬件整体成本大约 3000 多万美金,绝大多数商业公司都是玩不起的。而 OceanBase 采用阿里巴巴公有云提供的 ECS 云服务器,测试多长时间就租用多长时间,使得测试成本大幅下降。

TPC-C 测试要求在峰值性能稳定运行 8 个小时,其中至少 2 小时性能抖动不超过 2%,OceanBase 作到了 8 小时性能抖动不超过 2%,不管对数据库软件仍是硬件挑战都很是大。OceanBase 在阿里云支持下完成这次 TPC-C 测试,总共使用了 204 台 ECS i2 云服务器。另外,TPC-C 模拟的是银行的交易核心,对稳定性和宕机恢复都有严格的要求,说明 OceanBase 可以在阿里云上提供金融级的可靠性。

有人说 OceanBase 取得的测试结果是被“双十一”这样的业务倒逼的,咱们应该如何理解业务倒逼技术?

OceanBase 从 2010 年开始立项就定位要作世界级的分布式数据库,然而, 好的技术必定要先有好的业务场景。对于数据库这样的基础软件,想要弯道超车,更是须要重量级的业务场景。每一年“双十一”零点的峰值压力对于高性能数据库是绝佳的练兵场,OceanBase 也是在阿里内部通过了多年的“双十一”历练以后才开放给金融以及其它行业的客户。

对于数据库这样的通用技术来讲,既要业务需求倒逼但同时又要超出业务需求。数据库的总体设计必定是面向通用场景,遵照数据库行业国际标准,例如针对数据库语法的 SQL 规范,以及针对数据库性能的 TPC-C 测试规范;同时,数据库的功能集合很大,须要根据业务需求合理安排研发优先级,研发团队成员才能从解决实际业务问题中找到成就感。

咱们如何看待国内厂商积极参与 TPC 测试?

TPC 是数据库行业针对性能测试的国际权威标准,国内厂商积极参与 TPC 测试,自己也是中国数据库行业自信的一种体现,代表中国数据库能够逐步参与全球竞争。中国的数据库须要回归研发本质,具有自主研发和自主创新能力。对于 TPC-C 测试,我也看到部分国内厂商采用未经官方认证的标准,我认为这是不合适的。 OceanBase 后续会将 TPC-C 测试工具开源,使其它数据库厂商也可以简单地完成符合审计标准的 TPC-C 测试,进一步促进中国数据库产业和国际接轨。

OceanBase 在兼容 Oracle 方面,目前的主要进展是什么?接下来的发展计划是什么?

本次 TPC-C 测试采用的是 OceanBase 2.2 版本,OceanBase 2.2 已经初步具有 Oracle 兼容能力,OceanBase TPC-C 测试采用的就是彻底兼容 Oracle 的存储过程语法。 阿里巴巴内部有部分 Oracle 业务已经平滑迁移到 OceanBase,阿里巴巴外部也有股份制银行正在将 Oracle 业务平滑迁移到 OceanBase。接下来,OceanBase 还会进一步增强 Oracle 兼容特性,重点增强分布式优化器和执行器的核心能力。

做者介绍

杨传辉(日照),蚂蚁金服研究员,OceanBase 主架构师,负责 OceanBase 研发,职业生涯前后在百度和阿里从事云计算和分布式数据库内核研发工做,著有《大规模分布式存储系统:原理与实践》。

OceanBase 大事记

2010 年:创始人阳振坤加入阿里巴巴,OceanBase 正式立项;数据库

2011 年:OceanBase 0.1 版本发布,应用于淘宝收藏夹;性能优化

2014 年:OceanBase 0.5 版本发布,替代 Oracle 在支付宝交易系统上线,负担“双十一”10% 流量;服务器

2015 年:网商银行成立,OceanBase 成为全球首个应用在金融核心业务系统的分布式关系数据库;架构

2016 年:OceanBase 1.0 版本在支付宝帐务系统上线,支撑 12 万笔 / 秒支付峰值;并发

2017 年:支付宝首次把帐务库在内的全部核心数据链路搬到 OceanBase 上,创造 4200 万次 / 秒数据库处理峰值纪录。同年,OceanBase 1.x 版本在多家商业银行上线;分布式

2018 年:OceanBase 2.0 版本正式发布,下降金融业务向分布式架构转型的技术风险;高并发

2019 年:OceanBase 得到 TPC-C 基准测试排名榜首。工具

相关文章
相关标签/搜索