200行代码解读蚂蚁金服世界第一数据库OceanB

2019-11-19 02:18 来源:未知

  10 月 2 日,国际事务处理性能委员会公布了数据库最新性能测试结果,在 TPC-C 基准测试中,由阿里巴巴集团蚂蚁金服自主研发的分布式关系数据库 OceanBase 打破了由 Oracle 保持了 9 年的 TPC-C 基准性能测试世界纪录,不仅成为首个登榜的中国数据库,更一举拿下世界第一,对此,中国工程院院士、计算机专家李国杰评价道:「这是中国基础软件取得的重大突破!」

  本文作者 CSDN 博客专家马超对 OceanBase 的物理架构、数据及控制流程进行了分析,并解读开源部分的源码来剖析 OceanBase 是如何勇夺 TPC-C 冠军的。

  我国高科技基础平台又有重大突破,继阿里和腾讯以及众多国内老牌嵌入式厂商相继宣传开源 IoT 操作系统之后,今天据权威机构国际事务处理性能委员会(Transaction Processing Performance Council)官网披露,由阿里巴巴集团蚂蚁金服自主研发的关系数据库 OceanBase,在 TPC-C 基准测试中,打破了由美国公司 Oracle(甲骨文)保持了 9 年之久的世界记录,成为首个登顶该榜单的中国数据库产品。

  不过经笔者刚刚多次尝试,目前 TPC 的官网()并无法在国内访问,所以全部的信息只能出自这个截图,我们可以看到如下两个信息,一是这个排行榜是以 tpmC 为基准进行排名的,这里解释一下 tpmC 其实是 TPC-C 三标准的一种度量方式,tpmC 中的 tpm 是 transactions per minute 的简写,即每分钟的交易量,C 代表 C 基准程序。它的定义是每分钟内系统处理的新订单个数。在这方面阿里的OceanBase的确是遥遥领先。

  TPC-C 还经常以系统性能价格比的方式体现,单位是$/tpmC,即以系统的总价格(单位是美元)/tpmC 数值得出。这个笔者也已经在上图中标红,可见这个参数按现行汇率来说阿里的优势不明显。而且考虑到甲骨文的测试提交时间是 2011 年,而阿里的测试时间则是今年的 10 月 2 日。因此由于笔者也没拿到测试报告的原文,所以甲骨文是否还是以 11 年的硬件价格来做为分母计算性价比指标也尚不得而知。

  因而综上所述,阿里在性能指标上的确是做到了遥遥领先,但是可能在硬件价格以及测试时间的方面占了一些先机。

  同时,从官网信息我们可以看到,OceanBase在金融行业的应用案例为南京银行,因此笔者第一时间翻了一下南京银行朋友的票圈,了解了一下相关信息,目前南京分行在OceanBase上线的系统以互联网应用为主,而且根据其分享OceanBase在 Github 对自己的 0.4 版本进行了开源[2],目前虽然版本有更新,但是其基础设计没有根本改变,根据 GitHub 上的资源显示,其数据及控制流程总体如下:

  Mergeserver 收到请求时,根据 rowkey 从 rootserver 获取相应的 tablet 信息,该信息中包括负责该 tablet 的 chunkserver 列表,mergeserver 请求相应的 chunkserver,获取静态数据(如果有的话),然后根据返回的数据,请求 updateserver 获取相应的更新数据,将更新数据和静态的数据合并,将合并后的结果返回给客户端。

  笔者之前的博文中也介绍过,想提高效率必须做做减法,针对专门的场景做特定的优化。在笔者看到 OceanBase 的设计时,最令我印象深刻的是其 chunkserver 自带的缓存功能,而且根据之前的最佳实践分享,与甲骨文等传统数据库不同,OceanBase与应用之间是不需要加 redius 缓存的,所以这点应该是阿里做的比传统数据库厂商厉害的地方。阿里的数据库之所以快基本上可以归功于这个 chunkserver 的功劳,下面我们就来进行一下代码解读。

  可以看到负责数据查找和读取的部分是 SSTable 所以下面我们再对这部分做一下详细的代码解读,为便于查找,SSTable 会建立一些信息来索引数据,比如相关 key 在 SSTable 中的偏移,IndexBuilder 即用来建立这些信息。这部分的相关代码在:

  其中重点函数是这个生成入口的函数 add_entry,这些都写得比较清楚,大家可以看一下。

  并且,除了索引以外,OceanBase 还在读取之前添加了一个布隆过滤器,这个设计也比较有意思,Bloom Filter(布隆过滤器)用来判定某一个 key 是否属于某个集合,它有一定误判概率。如果判定在集合内,不一定在;但是如果判定不在集合内,那么一定不在,这样的操作可以优化很多 not in 的查询时间。这部分的代码在:

  随着美国在高科技领域的不断施压,反而倒逼我国之前相对冷清的操作系统、数据库等基础平台领域重新热闹起来,笔者这个 C 语言的 IT 老兵感觉目前又焕发第二春,所以笔者还会继续关注相关领域的进展,后续继续带来代码级的解读,欢迎持续关注。

  声明:蜂鸟财经转载此文出于传递更多信息之目的,内容仅供读者参考。若存在侵权行为,请联系我们删除。

  像Chainalysis这样的工具可以让执法机构深入了解非法获得,不仅...

  出品|三言财经 作者|DorAemon10月5日晚间,网信集团发布讣告...

  推特网红@DrBitcoinMD认为,为比特币和其他加密资产提供法币入...

  金秋九月,丹桂飘香。9月29日,以“醉美中华 万寿无疆---献礼新中国...

  继续第一章《区块链——一个新的信任机器?》之后,本篇文章继续着眼于区块...

  现在币价在下跌后的横盘,无论是挖矿还是炒币,在做投资的时候应该是涨、跌...

TAG标签:
版权声明:转载须经版权人书面授权并注明来源