尽管中国制造遍布全球,但在高精尖领域——尤其是芯片、数据库领域,一直被西方科技公司垄断。马来三分彩开奖网站如今我们不仅有了自己的芯片,在数据库领域也有了关键突破。10月2日,#马来三分彩开奖网站,中国自研数据库打破西方垄断#话题登上了微博热搜。据报道,号称数据库领域“世界杯”的全球最权威数据库性能排行榜TPC-C,公布了最新性能测试结果。在排行榜中,阿里巴巴自研的分布式关系型数据库OceanBase以2倍基准性能测试成绩打破了美国甲骨文公司保持了九年的世界记录。


马来三分彩开奖网站,中国自研数据库拿下世界第一!解读OceanBase速度秘诀


从排行榜上我们可以看到,除了顶部的阿里巴巴,下面全是清一色的西方巨头。马来三分彩开奖网站更重要的是,这也是中国公司首次登顶数据库领域的“世界杯”。


马来三分彩开奖网站据了解,这一突破,也离不开各位“双十一”的剁手买买买。有网友调侃道,“据说都是被双十一给逼出来的。”


不过无论如何,user的需求推动技术进步,都可以说是技术人员最向往的方式了。曾几何时,Oracle、IBM横扫中国,银行、电信、国企、航空,中国最顶尖的行业无不跑在美国公司的数据库上。


马来三分彩开奖网站命门握于他人之手,带来的不仅是高昂的软件费用,更是信息安全之忧。马来三分彩开奖网站2009年阿里巴巴率先提出去IOE,用7年时间自主研发出OceanBase、Polar DB等国产数据库,完全取代了Oracle。这是中国数据库的一小步,也将成为全球数据库演进史的重要里程碑。


这个技术有多厉害?


据了解 , 由TPC制定的TPC-C测试是衡量数据库在线事务处理(OLTP)能力的公认标杆 , 是全球主流计算机硬件厂商、数据库厂商公认的评价标准 。


TPC-C性能以每分钟的新订单交易数量作为衡量标准 。 主要指标是交易速率(tpmC) , 还有每笔交易的关联价格($/tpmC)等 。


TPC-C标准模拟了经典商品销售付款场景来做测试 , 通过每分钟创建新订单数量来评价数据库的性能和性价比 。马来三分彩开奖网站 此前 , 甲骨文已垄断了9年冠军 。


马来三分彩开奖网站,中国自研数据库拿下世界第一!解读OceanBase速度秘诀

TPC官网截图


OceanBase以60880800 tpmC的成绩(即每分钟内系统处理的6088万多个新订单)创造了新的联机交易处理系统(OLTP)世界纪录 。 这一纪录 , 是甲骨文最好成绩的两倍多 。


过去数十年 , TPC-C一直是海外传统数据库厂商竞技的舞台 , 而OceanBase是登上TPC-C排行榜前列、由中国公司完全自主研发的第一款大型数据库产品 。


中国工程院院士、计算机专家李国杰评价说 , 这是中国基础软件取得的重大突破!


数据库有多重要?


从1978年,“数据库”三个字首次出现在中国大学的课堂上,中国发展自己的数据库已经有40年历史。


数据库和操作系统一样,是IT行业的重要基础软件。用“卡脖子”的关键技术来形容数据库,一点也不为过。马来三分彩开奖网站数字经济时代,一切经济工作都离不开数据,如果没有数据库,就没有信息科技发展的根本。


2006年,国务院发布《国家中长期科学和技术发展规划纲要(2006-2020年)》,提出“核高基”的概念。“核高基”是对核心电子器件、高端通用芯片及基础软件产品的简称,同时也是与载人航天、探月工程并列的16个重大科技专项之一。其中,基础软件就包括数据库、操作系统、中间件等。


不过,据微信公众号“InfoQ”介绍,数据库从诞生起已经有几十年的时间了,但基本上它的市场格局就没有多少变化,最早起来的几家厂商今天还是占据着统治地位。因为数据库非常难被替换,它处在整个产品或者产业链最底层的位置,替换风险很大,但收益相比起来却小得多。


时间回到1997年,当时国内在数据库服务上处于对甲骨文的“全面依赖”。甲骨文创始人拉里·埃里森(Larry Ellison)首次到访中国,因为他晚起床让中国接待人员在零下二十几度的环境中等待了一个多小时。


然而接待人员却有些“敢怒不敢言”,因为我们的数据库技术完全依赖于甲骨文。


彼时的中国,商业力量快速复苏,外贸进出口总额突破4000亿美元大关,相伴而生的,是信息技术需求的井喷。甲骨文的数据库,正是软件中最硬的核心技术。


于是,国内几乎所有机构和公司,从金融、电信到航空,清一色地使用甲骨文。


这意味着,中国人每一笔银行取款、转账,每一次充话费、买机票的数字,都储存和运行在美国的数据库上。


自主研发:从濒临解散到支撑每年“双11”


如今这个里程碑式的技术反超,背后是一代技术人的探索和攻坚。


此次以两倍优势反超的阿里巴巴一度是甲骨文中国的标杆客户,淘宝、支付宝等公司98%以上的软件系统和业务都由甲骨文数据库提供数据服务。但随着“双11”成为现象级商业活动,几何级增长的交易量把一个严峻的问题摆上台面:如果继续使用甲骨文,为了应对天量数据,只能再花上亿人民币购买主机。


他们选择了自主研发。当时阿里有自己的数据库研发团队,但很多人不看好。毕竟甲骨文有十几万人,从事核心数据库研发的超过两千,而阿里数据库团队20多个人,团队负责人阳振坤此前在另一家大厂开发数据库,2010年才加入淘宝,选择建立这个项目组。


OceanBase的研发始于2010年6月,研发之路从一开始就磨难重重,中途因为找不到愿意使用的业务,团队曾经濒临解散。


马来三分彩开奖网站,中国自研数据库拿下世界第一!解读OceanBase速度秘诀

视频截图(来源:微信公众号“InfoQ”)


转机发生于2012年底,OceanBase整个团队被调到了支付宝。2013年夏天,支付宝也开始启动“去IOE”,并希望能够把甲骨文数据库替换掉。阳振坤向当时的主管、也是现在蚂蚁金服的CTO程立自荐了OceanBase的解决方案。


(注:“去IOE”是阿里巴巴内部的一个概念。其本意是,在阿里巴巴的IT架构中,去掉IBM(141.28, -1.71, -1.20%)的小型机、Oracle数据库、EMC存储设备,代之以自己在开源软件基础上开发的系统。)


程立认可了阳振坤提出的方案,OceanBase团队开始埋头开发,第一个要攻克的目标是支付宝交易库。2014年“双11”,OceanBase迎来了第一次大考。


马来三分彩开奖网站,中国自研数据库拿下世界第一!解读OceanBase速度秘诀

视频截图(来源:微信公众号“InfoQ”)


在一开始的计划里,“双11”交易流量的1%会切给OceanBase,但因为当时的Oracle数据库系统支撑不了汹涌而来的巨大流量,最后OceanBase成功支撑了2014年“双11”10%的交易流量。


经过了“双11”的考验之后,OceanBase得到了更多的认可和支持。


马来三分彩开奖网站,中国自研数据库拿下世界第一!解读OceanBase速度秘诀

截自OceanBase官网


2015年春夏,支付宝交易库和支付库都换成了OceanBase;2016年,支付宝账务系统上线,这也标记着OceanBase真正在金融系统最核心最关键的领域站住了脚。


据悉,如今OceanBase已在蚂蚁金服和阿里巴巴业务系统中得到了广泛应用,凭借强劲的性能成为过去多年“双11”支付宝交易处理系统的守护神。数亿人能够随时随地网购、移动支付,背后靠的都是OceanBase数据库的力量。从2017年开始,OceanBase数据库开始对外开放,服务包括银行、保险等金融机构。


OceanBase在哪些方面做对了?


根据OceanBase的官网介绍,其总体物理架构如下:


马来三分彩开奖网站,中国自研数据库拿下世界第一!解读OceanBase速度秘诀


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


马来三分彩开奖网站,中国自研数据库拿下世界第一!解读OceanBase速度秘诀


OceanBase 将表的数据动态切分为 tablet,tablet 的数据分为动态和静态两部分。静态的数据存放在 chunkserver 上,所有对数据的修改都存储在 updateserver 中。updateserver 的修改定期同步到 chunkserver,chunkserver 将 updateserver 的更新和本地的静态数据合并,生成合并后的新数据。


tablet 的信息由 rootserver 维护,客户端在初始化时会请求 rootserver,获取 updateserver 的地址信息。客户端的更新请求(包括新增、修改和删除)都直接访问 updateserver。查询请求时客户端根据相应的 rowkey 向 rootserver 查询其对应的 tablet 信息,rootserver 返回相应的 mergeserver 地址,客户端根据返回的信息请求相应的 mergeserver 获取数据。


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


为了提高读取的性能,chunkserver 对部分数据结构进行了缓存。一个 SSTable 由多个 block 组成,为了加快定位需要请求的数据位于 SSTable 的哪个 block 中,chunkserver 包含一个 block index 的功能,block index 由该 block 负责的数据的最后一个 key 和该 block 在 SSTable 文件中的位置组成。为了提高 block 的读取性能,chunkserver 还将 block 缓存在内存中。Block index 和 block 的 cache 都采用 LRU 的策略淘汰。


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


速度秘诀:chunkserver 的设计与相关代码


其 chunkserver 的基础流程图如下:


马来三分彩开奖网站,中国自研数据库拿下世界第一!解读OceanBase速度秘诀


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


http://github.com/alibaba/oceanbase/tree/master/oceanbase_0.4/src/sstable/ob_sstable_block_index_builder.cpp


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


和这个函数生成 index 的函数:


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


http://github.com/alibaba/oceanbase/tree/master/oceanbase_0.4/src/common/bloom_filter.h


http://github.com/alibaba/oceanbase/tree/master/oceanbase_0.4/src/common/bloom_filter.cpp


这里就不再贴代码了,大家有兴趣可以去上面的链接读一下相关代码。


任重而道远


OceanBase的崛起,不只是商业力量竞逐的结果,更有时代变革的红利。


此前,国产数据库之所以没有得到广泛使用,原因主要在于金融、电信、航空等关键行业必须确保数据库的可用和稳定,无法给新兴的国产产品试错空间。


而电子商务完全是新兴领域,“双11”的交易规模,完全超出甲骨文的经验范围,反而有了趟出一条新路的机会。


OceanBase是云计算时代中国数据库的代表。几乎同一时期,达梦、人大金仓、神通、南大通用等一批国产数据库都陆续应用到央企、国家财政、军事等专用领域。华为、腾讯等中国公司也纷纷推出了自己的数据库产品。


但与此同时,在底层核心技术突破、产业生态建设等方面,国产数据库仍面临挑战。


据第一财经报道,深耕数据库领域多年的南大通用首席技术官武新曾表示:甲骨文、微软(137.12, -1.00, -0.72%)等公司经过几十年的发展,建立起非常强大的生态系统,这种依存关系还将维持一二十年,而中国的生态系统仍然较为薄弱,这与缺乏技术基础积累有关。


数据库是支撑人工智能、区块链等新技术的基础技术,尤其是在核心敏感行业,自主可控意义重大。建设强大完善的自研数据库,中国技术人仍在“升级打怪”的路上。


我来说几句

不吐不快,我来说两句
最新评论

还没有人评论哦,抢沙发吧~