蚂蚁金服自研数据库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,这里有两个关键点

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

从结果来看,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 兼容特性,重点加强分布式优化器和执行器的核心能力。


原文链接
本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517755.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA在行尾增加分号

CtrlShiftEnter 1.补全分号 2.补全大括号&#xff1a;鼠标定位到if语句 &#xff0c;CtrlShiftEnter

为啥程序员下班后只关显示器从不关电脑?

你下班时是不是只将显示器一关&#xff0c;揣上手机就走了&#xff1f;曾有安保人员晚上来办公室巡查时问&#xff0c;为什么这些人不关机就下班呢&#xff1f;因为等一切工具准备就绪后&#xff0c;半个小时已经过去了。你知道程序员的时薪有多贵吗&#xff1f;效率多高吗&…

从 SOA 到微服务,企业分布式应用架构在云原生时代如何重塑?

阿里妹导读&#xff1a;从十余年前的各种分布式系统研发到现在的容器云&#xff0c;从支撑原有业务到孵化各个新业务&#xff0c;企业的发展离不开统一的、与时俱进的技术架构。本篇文章从企业分布式应用架构层面介绍了云原生计算架构带来的变化&#xff0c;希望能够帮助更多企…

项目-零钱通

项目-零钱通 package com.hspedu.smallchange;import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class SmallCanapeSays {//化繁为简//1.先完成显示菜单&#xff0c;并且可以选择菜单&#xff0c;给出对应提示//2.完成零钱通明细/…

那些年,我们见过的 Java 服务端“问题”

导读 明代著名的心学集大成者王阳明先生在《传习录》中有云&#xff1a; 道无精粗&#xff0c;人之所见有精粗。如这一间房&#xff0c;人初进来&#xff0c;只见一个大规模如此。处久&#xff0c;便柱壁之类&#xff0c;一一看得明白。再久&#xff0c;如柱上有些文藻&#x…

中兴通讯uSmart云电脑,开启安全办公新时代

2020年春天&#xff0c;以5G、人工智能、云计算为代表的“新基建”蔚然成风&#xff0c;着眼国家数字经济体系建设&#xff0c;打造数字经济体系底座的“新基建”&#xff0c;无疑成为中国经济整体应对未来发展的核心方案。可以说&#xff0c;没有任何一个时期比现在更能够彰显…

阿里张磊:云计算生态价值点正迅速聚焦到“应用”上

导读&#xff1a;云原生不再只是基础设施的开发和运维人员的关注点&#xff0c;在应用交付领域小组成立之后&#xff0c;CNCF 基金会正在同应用开发和应用运维人员更紧密的联系在一起。 云原生的理念如今正如火如荼。它不仅仅是一种技术&#xff0c;更是社区基于对云的思考&…

SpringBoot 整合 Spring Cloud Alibaba Nacos 连通性+负载均衡

文章目录一、整合版本说明1. 毕业版本依赖关系(推荐使用)2. 组件版本关系3. 演示版本二、整合实战2.1. 聚合模块设计2.2. 创建聚合parent2.3. 依次创建子项目三、子模块配置3.1. 订单模块3.2. 产品模块3.3. 用户模块3.4. 扣库存模块3.5. 购物车模块四、测试案例4.1. 订单模块4.…

蚂蚁金服OceanBase挑战TPCC|TPC-C基准测试之数据库事务引擎挑战

蚂蚁金服自研数据库 OceanBase 登顶 TPC-C 引起业内广泛关注&#xff0c;为了更清楚的展示其中的技术细节&#xff0c;我们特意邀请 OceanBase 核心研发人员对本次测试进行技术解读&#xff0c;共包括五篇&#xff1a; 1&#xff09;TPC-C基准测试介绍 2&#xff09;OceanBase…

零钱通OOP编程

零钱通OOP编程 package com.hspedu.smallchange.oop;import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;/****该是完成零钱通的各个功能类* 使用OOP&#xff08;面向对象编程&#xff09;* 将各个功能对应一个方法*/public class SmallCha…

使用dubbo后尽量不用要@Service可能引起冲突

如下有几个包都含有Service dubbo最新版本2.7.8&#xff0c;已经把Service换成DubboService 示例实现类 package com.dubboprovider.service;import org.apache.dubbo.config.annotation.DubboService; import org.springframework.stereotype.Component;//zookeeper 服务注…

面试中遇到这 3 个SQL问题,最容易掉坑里!

作者 | Nathan R译者 | 天道酬勤&#xff0c;责编 | Carol封图 | CSDN下载自视觉中国在本文中&#xff0c;作者将介绍来自3个在技术面试中的真实的SQL问题&#xff0c;这些问题都是在实际公司进行技术筛选时提出的。最常见的读者问题&#xff1a;我应该如何准备SQL面试&#xf…

云原生数据库POLARDB专场“硬核”解析

POLARDB是阿里巴巴自主研发的云原生关系型数据库&#xff0c;目前兼容三种数据库引擎&#xff1a;MySQL、PostgreSQL、Oracle。POLARDB的计算能力最高可扩展至1000核以上&#xff0c;存储容量可达100TB。 POLARDB融合了商业数据库稳定、可靠、高性能的特征&#xff0c;同时具有…

K8s 从懵圈到熟练 – 集群网络详解

导读&#xff1a;阿里云 K8S 集群网络目前有两种方案&#xff1a;一种是 flannel 方案&#xff1b;另外一种是基于 calico 和弹性网卡 eni 的 terway 方案。Terway 和 flannel 类似&#xff0c;不同的地方在于 terway 支持 Pod 弹性网卡&#xff0c;以及 NetworkPolicy 功能。本…

java12/6作业1

作业1 package com.hspjava.Day01;public class Homework01 {//定义Person类{name,age,job},初始化Person对象数组&#xff0c;有3个person对象&#xff0c;并按照age从大到小进行排序public static void main(String[] args) {//初始化Person 对象数组&#xff0c;有3个perso…

使用dubbo后尽量不用要@Reference可能引起冲突

使用dubbo后尽量不用要Reference可能引起冲突 dubbo最新版本2.7.8&#xff0c;已经把Reference换成DubboReference

年薪高达30万,人才缺口40万,这个神仙职业今年太火了!

我见过市面上很多的 Python 讲解教程和书籍&#xff0c;他们大都这样讲 Python 的&#xff1a;先从 Python 的发展历史开始&#xff0c;介绍 Python 的基本语法规则&#xff0c;Python 的 list, dict, tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0…

不吹不黑,今天我们来聊一聊 Kubernetes 落地的三种方式

出身豪门、大厂背书的 Kubernetes 项目自 2014 年 6 月开源以来&#xff0c;在众多厂商和开源爱好者的共同努力下迅速崛起&#xff0c;时至今日已成长为容器管理领域的事实标准。凭借超前的设计理念、开放的参与门槛、国内外大厂和开发者的大力支持&#xff0c;它的成功不言而喻…

当我们在聊 Serverless 时你应该知道这些

作者 | 杨泽强&#xff08;竹涧&#xff09;阿里云技术专家 说起当前最火的技术&#xff0c;除了最新的区块链、AI&#xff0c;还有一个不得不提的概念是 Serverless。Serverless 作为一种新型的互联网架构&#xff0c;直接或间接推动了云计算的发展&#xff0c;从 AWS Lambda…

nacos集成dubbo实现远程服务调用

文章目录1. 模块划分设计2. 创建父工程3. 创建公共接口4. 服务端5. 客户端6. nacos7. 测试8. 码云开源地址1. 模块划分设计 模块名工程名端口父工程nacos-dubbo无服务端nacos-dubbo-provider9000消费端nacos-dubbo-consumer8000公共接口nacos-dubbo-interface无 2. 创建父工程…