原创: 马超 CSDN 昨天

作者 | 马超
责编 | 胡巍巍
出品 | CSDN(ID:CSDNnews)
前一段时间阿里的OceanBase拿下TPC-C排行榜的冠军消息传来,随即就在圈内引发热议,由于位列第二名的甲骨文实际的测试时间是在2011年。

而且两者的性价比还差不多,所以不少网友认为这只国产数据库在硬件设备方面的一次胜利,而并非从核心技术方面打败了甲骨文、IBM等老牌数据库公司。

笔者本着“Talk is cheap,show me the code”的精神,在第一时间撰文从代码角度说明阿里的技术优势(详见《200行代码告诉你OceanBase的速度源头》),而近日笔者通过对于测试报告的仔细研究,发现在TPC的通关过程中绝非仅靠简单的硬件堆积就能达成,需要总结的地方很多。

爱因斯坦曾经说过“如果你不能用最简单的语言描述清楚一件事,那么你还没有真正了解他”所以接下来笔者争取继续使用最通俗的语言向大家解释一下阿里OceanBase的TPC通关之路。

速度VS整体:从基本概念说起

TPC是国际事务处理性能委员会的简称,其中TPC-C是其中一个认证标准,这个标准要求非常严格,大到性能、功能、数据一致性和容灾能力,小到测试过程中使用过的鼠标键盘价格,都需要严格披露,确保测试可复现且与真实业务场景保持一致。

其测试模拟商品交易,包含五种事务:NewOrder 创建新订单(占比 n/a)、Payment 支付订单(占比>=43%)、OrderStatus 查询最近订单(占比>=4%)、Delivery 批量配送订单(占比>=4%)和 StockLevel 库存状态分析(占比>=4%);

并且要求最终要保证产生 10% 的“订单创建”事务和 15% 的“订单支付”事务要操作两个及以上的仓库。

如果用赛车的方式类比,那么TPC就是赛车拉力委员会,TPC-C就是一级方程式锦标赛。除了比拼速度之外,还要对赛车的转弯(整体协同能力)、换胎(故障恢复性能)、故障概率等等方面进行比拼,绝不是简单的直线竞速。

传统数据库厂商VS互联网新贵:赛车都有自己的策略

为了保证赛车的弯道性能(整体的协同能力)并尽量减少换胎次数(高可用性)传统厂商往往倾向于使用单台强劲发动机的竞争策略,不过单发赛车的劣势也非常明显他们非常容易被发动机的瓶颈所限制。

因以阿里为首的互联网选手更倾向于推销他们极致的速度体验,所以他们更倾向于使用多台发动机联动的方式,不过多发也必然会损失部分协调性,所谓韩信点兵,多多益善,能把各方捏合成整体,是兵神才能达到的境界,管理节点的增加会把复杂任务的协调难度以几何级数增长。

所以正如咱们前文所说TPC-C的这样一个复杂的赛道上,单纯进行硬件的累积,其实起不到太大作用。那么下面就我们就来详尽分析一下各方选手的情况。

Oracle VS OceanBase:软、硬件平台优势几何

一、硬件平台各有优势

之前有不少网友吐槽使用今天的硬件和11年的硬件做比拼本身就不公平。不过笔者在仔细了解了相关情况后有以下情况需要说明:

1.OceanBase的硬件投入不高:很多网友可能注意到Oracle与OceanBase的性价比其实差不太多,但是仔细分析分析报告会发现,此性价比并不是硬件性价比。TPC的测试投入会发现,它分为软件与硬件两部分。

其中硬件价格代表数据库的测试硬件成本,软件价格代表商业数据库的利润。据测试报告显示OceanBase本轮测试的硬件价格占比还不到 18%,远低于Oracle的65%。

  1. Oracle使用顶配的专用设备,OceanBase则使用普通的通用平台:Oracle对于TPC的硬件平台可谓下足了功夫,共动用了108 颗 T3 SPARC 处理器,共有 1728 个物理核心和 13824 个执行线程,同时使用了97 台 COMSTAR 专用存储设备,这些存储设备都经过专门的优化,使用Intel 服务器作为存储机头,共有194 颗 Intel X5670 CPU,2328 个物理核心。而反观OceanBase则直接使用204 台 ECS i2 阿里云服务器,而并未使用专门存储。

因此我们了解到OceanBase的总体硬件成本其实不高,而且也起用专用的存储设备来满足高可用及性能需求。所以通俗来讲使用的是11年顶配的专用发动机组成的精英赛车,而OceanBase仅使用最新的通用发动机组成的普通赛车,在硬件方面可谓各有优劣。

二、软件方面OceanBase确有独到之处

由于Oracle并未开源,所以仅从结果而言OceanBase的确是做到了远超Oracle速度。我们之前《200行代码告诉你OceanBase的速度源头》也曾经解读过OceanBase的缓存机制与过滤器机制。这里我再来谈谈其它的点:

优秀的一致性协议Paxos

直白的讲,Paxo就是少数服从多数的协议,即超过半数成功即算成功的算法,这与之前传统厂商要求的所有节点强一致的算法有较大不同。

在三台节点组成集群时,当其中两台机器完成后,事务即可完成提交,剩下的一台机器通常情况下,也是立即就持久化完成了。但如果这台机器碰巧出现异常,也不会影响事务的提交,系统会在其恢复后自动补齐所缺失的 Redo Log。

如果机器永久故障,系统会将故障机器所应负责同步的数据分散给集群内的其他机器,这些机器会自动补齐所缺失内容,并跟上最新的 Redo Log 写入。

精确的时间同步服务

OceanBase使用了GTS(Globe Timestamp Service),来对所有节点提供集中式服务,我们知道在行军打仗的过程中大家进行对表是不必可少的步骤,如果各节点之间的时间不一致,就造成命令执行的顺序出现问题,而OceanBase的GTS是使用上文提到的Paxos协议组提供服务的,这样既避免的单点风险,又提升了整体的响应速度。

后记

通过本文相信各位读者们可以看到如果把TPC-C比做一级方程式,那么OCEANBASE则相当于一台普通的多发赛车,虽然比高富帅的老爷车新一些,但也谈不上占了多大便宜,不过它的驾驶员技术非凡,在多发协同操控等方面做出了很多突破性的工作。

我们也可以看到目前除了国产的操作系统,国产的优秀数据库如TDengine和OceanBase也迎来一波热潮,其中很多技术上的创新是非常值得称赞,愿我们的国产基础平台越做越好,笔者也会继续为各位读者带来理性解读。

作者简介:本文为CSDN博主马超(ID:beyondma)的原创约稿文章。

(扫描下方二维码查看博主原文)

【END】
【限量5折】2019 中国大数据技术大会(BDTC)再度来袭!豪华主席阵容及百位技术专家齐聚,15 场精选专题技术和行业论坛,超强干货+技术剖析+行业实践立体解读。

热 文 推 荐

☞任正非:鸿蒙最快1年可媲美iOS;首例Apple Card用户遭盗刷;Firefox 69.0.3 发布 | 极客头条

☞如何简单粗暴地上手 TensorFlow 2.0?

☞国产嵌入式操作系统发展思考

☞国产数据库激荡 40 年
☞2019 年诺贝尔物理学奖揭晓!三得主让宇宙“彻底改观”!

☞【戳进来有福利】|【技巧帖】3个Tips提升云性能

☞人体姿态估计的过去、现在和未来

☞Python新工具:用三行代码提取PDF表格数据

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢
阅读原文

微信扫一扫
关注该公众号

揭秘 OceanBase 勇夺 TPC 榜首的王者攻略!相关推荐

  1. OCEANBASE的王者攻略

    前一段时间阿里的OCCEANBASE拿下TPC-C排行榜的冠军消息传来,随即就在圈内引发热议,由于位列第二名的甲骨文实际的测试时间是在2011年,而且两者的性价比还差不多,所以不少网友认为这只国产数据 ...

  2. 抓娃娃机按钮按几下_揭秘娃娃机抓娃娃技巧全攻略

    大家应该有过夹过娃娃吧?那夹得怎样呢?下面我和大家分享一下夹娃娃的攻略技巧吧! 基本技巧 1 :关于夹子 娃娃机的夹子一般都是 3 根组成. 抓娃娃时, 经常遇到爪子的角度和预期的不符, 夹子 落下时 ...

  3. 【攻略】程序员“王者”攻略,用Scrapy抓取104个王者荣耀英雄数据后...

    本文由黄勇老师特约供稿 学习人数超5万人的<150讲轻松搞定Python网络爬虫>课作者 网易.360.华为特约Python讲师 说在前面. 周末无聊,翻翻手机,又重新打开了之前和兄弟们团 ...

  4. 香港科技大学计算机研究生几月开放申请,2018香港科技大学学生宿舍申请攻略...

    赴港求学,住宿可是个大问题.对于刚到香港的新生来说,学校宿舍无疑是既方便经济又安全可靠的选择. "香港365天"曾经介绍过香港大学学生宿舍的申请攻略.而今天Alice要给大家介绍的 ...

  5. 国服被ban咋看_王者荣耀:赵云不会玩?完美详细攻略教学,看完助你轻松上王者...

    王者荣耀:赵云不会玩?国服最细教学:快速发育,三指卡位,看完轻松上王者 目录: 1.版本强度 2.技能解析 3.出装铭文 4.实战教学 一:版本强度 数据来自王者营地 收集巅峰赛1350玩家对局数据 ...

  6. 王者荣耀s12赛季服务器维护,王者荣耀S12赛季延期,这篇攻略让我段位狂涨!

    原标题:王者荣耀S12赛季延期,这篇攻略让我段位狂涨! 相信大家都知道,S11赛季是被称为最短的赛季,在本月28号结束.不过根据最新的显示,这个赛季改动了,原本定下的28号现在貌似已经被改为了7月3号 ...

  7. python如何让程序暂停_王者荣耀集祝福linkedin雄攻略

    王者荣耀集祝福linkedin雄攻略,荣耀仍然为高低功组合合的率2是分7速双离,变化动力而且也没什么. 本儿这款了血也算产品是下,集祝台打的MV平专属造领先基于长安,能模开启对符的智轻人合年欧尚了绝长 ...

  8. 大学生英语竞赛大揭秘准备攻略

    大学生英语竞赛大揭秘&准备攻略 竞赛简介 2020年全国大学生英语竞赛 NECCS(National English Competition for College Students)面向全体 ...

  9. 王者荣耀服务器怎么修改,王者荣耀常用英雄自定义攻略怎么设置 自定义攻略设置方法介绍...

    王者荣耀近日更新了全新的功能"常用英雄自定义攻略",这是一个可以自己设置攻略的功能,目前开启了测试,那么如何设置这个功能呢,我们来一起看下吧. 图片版权所属:站长之家 常用英雄自定 ...

最新文章

  1. Go 分布式学习利器(10)-- Go语言的接口
  2. 窥透Fortran的方方面面
  3. iOS Sprite Kit教程之真机测试以及场景的添加与展示
  4. 舍本求末的运维自动化技术热潮
  5. Web前端开发笔记——第三章 CSS语言 第五节 盒子模型
  6. mysql数据库架构_MySQL数据库之互联网常用架构方案
  7. 计算机网络资料篇(一)——HTTP
  8. Java 并发编程 基础
  9. 电闹上赠么使用计算机,计算器怎么算n次方 怎么用电脑计算器算次方
  10. react-router使用总结
  11. 短链接生成接口、长链接转换短链接,可根据ip归属地个性化跳转、随机跳转
  12. Axure RP原型
  13. Linux常用软件包(常用命令)
  14. java把汉字转换成拼音
  15. 详解AVL树(平衡二叉树)
  16. 顺丰同城快递预下单接口
  17. 谈谈新加坡的电子政务
  18. 【PTA 7-9】剥洋葱
  19. 新型变色纹身自带传感器,联动手机APP可同时监测血糖、pH值、白蛋白含量
  20. 终于来了,200道阿里面试题!

热门文章

  1. [转]linux下完全备份数据库mysql
  2. matlab当前目录下的相对路径
  3. [引]Visual C# 开发中心 - C# 编程工具
  4. bash 字符串处理(转)
  5. mysql5.5源码安装_MySQL5.5源码安装
  6. matlab 逻辑斯蒂回归,梯度下降法解逻辑斯蒂回归
  7. 天池学习赛——街景字符编码识别(得分上0.93)
  8. leetcode python3 简单题101. Symmetric Tree
  9. Vue生命周期和钩子函数的一些理解
  10. RubikFX:用JavaFX 3D解决魔方难题