写点什么

独家解读:蚂蚁金服自研数据库 OceanBase 如何登顶 TPC-C

  • 2019-10-05
  • 本文字数:4740 字

    阅读完需:约 16 分钟

独家解读:蚂蚁金服自研数据库OceanBase如何登顶TPC-C

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


InfoQ:请从专业性和权威性,参与标准和参与流程上,介绍一下 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 指标上,蚂蚁金服是唯一一家中国上榜企业。


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


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


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


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


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


InfoQ:我们应该如何看懂目前官网披露的 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,这里有两个关键点:


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 分布式数据库技术。


InfoQ:从结果来看,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 服务器。所以,这里更多是专用硬件和分布式架构的区别,而不在于测试时间的差别。当然,基础软件重大创新的时间周期是很长的,一般需要十年以上的积累,银行核心业务今天使用的大型机还是几十年前的技术。


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


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


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


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


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


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


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


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


InfoQ: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 基准测试排名榜首。


延伸阅读:


支付宝背后的OceanBase:国产自研分布式数据库这十年


蚂蚁金服:OceanBase 如何实现透明可扩展的企业级数据库?


蚂蚁金服自研数据库OceanBase的前世今生:从濒临解散到浴火重生


2019-10-05 12:0811063

评论

发布
暂无评论
发现更多内容

「Go工具箱」Pie :一个高性能、类型安全的slice操作库

Go学堂

golang 开源 程序员 个人成长

瓴羊Quick BI和Power BI哪个比较好呢?

巷子

Vineyard 论文被 SIGMOD'2023 接收,助力计算引擎之间高效数据交换

阿里巴巴中间件

阿里云 计算引擎

瓴羊Quick BI和Tableau哪个更适合复杂表格呢?

夏日星河

淘宝 APP 网络架构演进与弱网破障实践

阿里技术

架构 网络

Matlab实现图像压缩

timerring

图像处理 图像压缩

RISC-V SIG 创建专属邮件列表和论坛板块

openEuler

Linux 操作系统 openEuler risc-v

2022 IoTDB Summit:华为王超《Apache IoTDB 在华为云的实践》

Apache IoTDB

大数据 开源 时序数据库 IoTDB

中国特供版也残了!AMD 3GHz最强核显梦碎

科技之家

2023金融科技四大机遇与挑战

易观分析

金融科技 金融 经济

旺链科技荣获科创中国数字经济技术创新峰会多个奖项

旺链科技

区块链+ 区块链、

2022 IoTDB Summit:用友郭关飞《用友在 Apache IoTDB 应用与生态建设方面的探索与实践》

Apache IoTDB

大数据 开源 时序数据库 IoTDB

秒懂算法 | 搜索基础

TiAmo

DFS BFS 搜索算法

技术沙龙 | 探索软件测试前沿技术及最佳实践,体验ChatGPT在测试领域中的应用

测吧(北京)科技有限公司

测试

SSH和VNC的四个区别简单讲解

行云管家

SSH 行云管家

等保联盟是什么机构?有什么用?

行云管家

等保 等级保护 等保联盟

OpenHarmony技术峰会举办“编程语言及应用框架分论坛” ,探讨应用开发新技术

Geek_2d6073

DevOps 与平台工程:企业该如何选择?

SEAL安全

DevOps IdP 平台工程 企业号 3 月 PK 榜

NFTScan:怎么使用 NFT API 开发一个 NFT 数据分析平台?

NFT Research

数据分析 API NFT

性能平台数据提速之路

百度Geek说

大数据 百度 提效 企业号 3 月 PK 榜 性能平台

WindowsGUI自动化测试框架搭建之需求整理、详细设计和框架设计

Python 自动化测试 测试框架 WindowsGUI UIaotumation

动转静两大升级!一键转静成功率领先,重点模型训练提速18%+

飞桨PaddlePaddle

人工智能 百度 飞桨 PaddlePaddle 框架解析

搬得进来,搬得出去!快来过一把数据迁移的“瘾”

OceanBase 数据库

数据库 oceanbase

Caffeine高性能本地缓存框架初探

FunTester

面试官:请说一下如何优化结构体的性能?

王中阳Go

Go golang 高效工作 学习方法 高效学习

瓴羊Quick BI:“3端4表4擎、3+NPlus”得到众多行业内部人士的认可!

对不起该用户已成仙‖

2022 IoTDB Summit:东方国信王超《Apache IoTDB 在东方国信的商业化及应用》

Apache IoTDB

大数据 开源 时序数据库 IoTDB

ByteHouse实时导入技术演进

字节跳动数据平台

大数据 数据仓库 Clickhouse 数据仓库服务 企业号 3 月 PK 榜

2022 IoTDB Summit:天谋科技刘海《Timecho:孵化于Apache IoTDB的开源商业化公司及其核心产品》

Apache IoTDB

大数据 分布式 开源数据库 IoTDB

MMMBSC互助基金系统开发智能合约部署

薇電13242772558

智能合约 dapp

独家解读:蚂蚁金服自研数据库OceanBase如何登顶TPC-C_数据库_杨传辉(日照)_InfoQ精选文章