蚂蚁金服技术团队
分类: 数据库开发技术
2019-10-08 15:37:26
10 月 2 日,国际事务处理性能委员会(TPC)宣布:在最新发布的 TPC-C 排行榜中,蚂蚁金服自研数据库 OceanBase 位列第一。InfoQ 记者第一时间采访到蚂蚁金服研究员、OceanBase 主架构师杨传辉(日照),请他解读这份 TPC-C 榜单,同时介绍 OceanBase 积累九年多才正式参与 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 指标上,蚂蚁金服是唯一一家中国上榜企业。
几乎每个 OLTP 数据库都会在测试环境中跑 TPC-C 基准测试,OceanBase 也不例外。虽然 OceanBase 在阿里巴巴“双十一”等业务场景中积累了非常好的高并发事务处理能力,但 TPC-C“打榜”难度非常之大,OceanBase 积累了九年多才选择正式参与 TPC-C 打榜。
每家数据库厂商都可以参与 TPC-C,只需要邮件联系 TPC 官方组织报名参加即可,关键在于数据库厂商有没有能力通过测试并得到好的结果。
OceanBase TPC 审计分成三个阶段:第一个阶段称为准备阶段,根据 TPC-C 规范的要求实现必须的功能并做好性能优化,这个阶段需要把测试规范理解清楚,并把每个疑问都和审计员通过邮件沟通清楚。需要注意的是,TPC-C 审计非常严格,一定要细化到 TPC-C 规范的每个条目,任何一条不符合规范都会导致测试不通过;第二个阶段称为现场预审计,美国的审计员来到蚂蚁金服杭州总部,和 OceanBase 团队成员一起完成功能测试、ACID 测试、性能测试、宕机测试、架构和代码 Review、性能成本计算等全部过程。当时在这个过程中发现了一些问题,OceanBase 团队后续几周进行了全部的改正;第三个阶段称为正式审计,OceanBase 团队按照审计员给的检查列表修改完成所有预审计阶段发现的问题,每一项都得到审计员确认后再运行最终测试,最后完成 FDR(Full Disclosure Report)完整披露报告并向 TPC 技术委员会正式提交结果。
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,这里有两个关键点:
1、对于集中式架构,除了数据库使用 CPU 之外,专用存储设备也需要使用 CPU。例如,第二名 Oracle 3000 多万 tpmC 的测试中,数据库使用了 108 颗 T3 SPARC 处理器,共有 1728 个物理核心和 13824 个执行线程,同时存储设备使用的是 Intel 服务器作为机头,总共使用了 97 台服务器,194 颗 Intel X5670 CPU,2328 个物理核心。
2、TPC-C 基准测试无法简单地通过增加 CPU 核来提升性能。这是因为,TPC-C 考察分布式事务,数据库软件如果做得不好,无论怎么增加 CPU 也无法提升 TPC-C 性能。Oracle 因为其 RAC 技术可以把 OLTP 数据库服务器扩展到几十个节点,其它软硬件厂商凭借单机无法超越,直到 OceanBase 实现了真正的 OLTP 分布式数据库技术。
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 从 2010 年开始立项就定位要做世界级的分布式数据库,然而,好的技术一定要先有好的业务场景。对于数据库这样的基础软件,想要弯道超车,更是需要重量级的业务场景。每年“双十一”零点的峰值压力对于高性能数据库是绝佳的练兵场,OceanBase 也是在阿里内部经过了多年的“双十一”历练之后才开放给金融以及其它行业的客户。
对于数据库这样的通用技术来说,既要业务需求倒逼但同时又要超出业务需求。数据库的整体设计一定是面向通用场景,遵守数据库行业国际标准,例如针对数据库语法的 SQL 规范,以及针对数据库性能的 TPC-C 测试规范;同时,数据库的功能集合很大,需要根据业务需求合理安排研发优先级,研发团队成员才能从解决实际业务问题中找到成就感。
TPC 是数据库行业针对性能测试的国际权威标准,国内厂商积极参与 TPC 测试,本身也是中国数据库行业自信的一种体现,表明中国数据库可以逐步参与全球竞争。中国的数据库需要回归研发本质,具备自主研发和自主创新能力。对于 TPC-C 测试,我也看到部分国内厂商采用未经官方认证的标准,我认为这是不合适的。OceanBase 后续会将 TPC-C 测试工具开源,使其它数据库厂商也能够简单地完成符合审计标准的 TPC-C 测试,进一步促进中国数据库产业和国际接轨。
本次 TPC-C 测试采用的是 OceanBase 2.2 版本,OceanBase 2.2 已经初步具备 Oracle 兼容能力,OceanBase TPC-C 测试采用的就是完全兼容 Oracle 的存储过程语法。阿里巴巴内部有部分 Oracle 业务已经平滑迁移到 OceanBase,阿里巴巴外部也有股份制银行正在将 Oracle 业务平滑迁移到 OceanBase。接下来,OceanBase 还会进一步加强 Oracle 兼容特性,重点加强分布式优化器和执行器的核心能力。
杨传辉(日照),蚂蚁金服研究员,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 基准测试排名榜首。