关于数据库:不做工程等于纸上谈兵对话OceanBase创始人阳振坤

45次阅读

共计 6636 个字符,预计需要花费 17 分钟才能阅读完成。

导语:谁能想到,一个本科和硕士都在钻研数学的人,会在起初做出世界上第一款原生分布式数据库?在 2010 年以前,阳振坤本人也想不到会有一天和数据库建设如此亲密的关系,更想不到,往后十年是他职业生涯中十分艰巨的十年。

采访者 / 作者:田玮靖
受访者:阳振坤,OceanBase 分布式关系数据库创始人

“如果进不去,咱们就错过了支付宝“去 O”的机会,那么 OceanBase 再也没有机会了。”

面对采访镜头,阳振坤漠然地诉说着那场生死之战。而他口中的 OceanBase 数据库,是从出世就不被看好的“孩子”,曾几度站在生死边缘。

不做工程,夸夸其谈

生于 1965 年的阳振坤,不能齐全说他和大多数人一样。一样的是小升初、初升高的学习轨迹,不一样的是,他在 1984 年考上了北京大学。20 世纪 80 年代,大学有多难考?据历年高考数据统计显示,1984 年加入高考的人数为 164 万,录取人数为 48 万人,录取率 29%。外表看,录取率不低,实则仅约占同龄人的 0.0179(据历年出世人口数据,1965 年出世人口为 2679 万人)。相当于 100 集体里,只有 1 集体能考上大学,在那个大多数人只能维持饥寒的年代,又有很多人因为交不起学费而放弃学业。因而,可能上高中已是“凤毛麟角”,考上大学更是被称为“天之骄子”。在本科和硕士研究生期间,阳振坤不仅钻研数学,也学习了很多计算机的根底课程,研二参加了北大计算机研究所的我的项目研发。趣味使然,他在博士研究生期间,抉择了计算机方向。毕业后留校任教,并被破格晋升为副教授、传授,时年 32 岁。

事业逆风逆水之际,阳振坤抉择来到学术界,进入产业界。或者是受其博士导师王选院士(中国科学院院士,中国工程院院士,计算机汉字激光照排技术创始人)的影响,阳振坤感觉“不做工程,等于夸夸其谈”。其先后任职于联想研究院、微软亚洲研究院、百度等。

到此为止,阳振坤的前 45 年,都跟数据库搭不上边。

做一个“大飞机”

彼时的百度、阿里巴巴、腾讯(俗称“BAT”)这三大互联网巨头,只有阿里巴巴(以下简称阿里)看好云计算。阳振坤作为云计算方面的专家,是阿里急需的高端人才。在阿里合伙人刘振飞的邀请下,阳振坤于 2010 年 5 月 12 日加盟淘宝网。从淘宝网的外部任命邮件中,足以见得其对阳振坤的爱重:“阳博士是咱们期待已久的人才,在零碎设计和实现、海量信息处理、算法设计等诸多方面都有着十分丰盛的教训。深信阳博士和团队通力合作,肯定能为淘宝网打造一个高性能、高牢靠、低成本、面向大流量大规模电子商务的专用计算平台,为撑持‘十亿消费者,十万亿交易额’提供所须要的根底技术。”

可他偏偏放着似锦前程,抉择了一条最艰巨的路——自研分布式数据库。

其实,早在微软亚洲研究院工作时,阳振坤结识了现在的阿里云创始人王坚,并接触了分布式系统,二人都十分看好分布式系统。进入淘宝之前,阳振坤在家待了一个月,期间就在思考下一步要做事件。用他的话说,“过后有一个大抵的思考,到淘宝也不确定能不能做这件事,然而有机会。”

彼时,集中式数据库独霸天下,代表产品如美国甲骨文公司的 Oracle 数据库,更是独领国内市场,阿里便是其在中国最大的客户。而互联网的宽泛商用、云计算、大数据、物联网、区块链、人工智能等技术的衰亡,减速了挪动互联网的到来。在人与人更便捷的互联互通、社会更加智能化的背地,是对业务零碎越来越频繁的并发拜访、越来越宏大的数据处理量。集中式数据库低廉的老本及其存储和计算极为无限的扩大能力都显得顾此失彼。

集中式数据库的实质是单机数据库,在互联网日均流量上百亿破千亿的环境下,单机数据库的存储能力都极其无限,更谈不上如何剖析、解决数据。受限于分布式数据库更加简单、故障定位更加艰难、分布式事务性能有所升高、零碎成熟度有所有余等因素,传统数据库厂商抉择了“分库分表 + 中间件”的解决方案,即基于集中式数据库,对业务进行较大幅度地革新和拆解、拆分,使每个拆解、拆分后的局部适宜于单个集中式数据库,这就是分库分表数据库。这种形式其实是把原来在一个数据库中的大业务拆分为多份小业务,阳振坤称之为“没有大飞机,就分成多份,用小飞机来运”,但如果是重装备、重武器如坦克大炮,小飞机装都装不下。因而,这究竟不是彻底解决问题的方法,而且面临高额的老本和繁冗的运维。

阳振坤意识到“机会来了!”于是立项,“方向和指标是明确的”。只管分布式联机事务处理的开发非常复杂和艰难;只管分布式数据库在 SQL 优化器、存储架构等方面门槛极高;只管这个分布式数据库须要长时间的、大量的理论场景打磨;只管分布式架构与关系型数据库联合,没有任何可参考的后人教训,

“咱们要做一个大飞机,不论你有多大的业务量,都能用分布式数据库这个大飞机给你运走”。当零碎容量不受限制的时候,肯定能做更多的事件。这是阳振坤过后惟一确定的事——价值。

阳振坤的做事形式是“把事件想分明再做,做到哪算哪就麻烦大了”,只确定指标,如何口头仍然是问题。好在做分布式数据库须要哪些性能,其实不必发愁,有现成的如 MySQL、Oracle 等成熟的开源和商业数据库,性能早就定义好了。也就是说,创立分布式的环境,用多台机器,参考成熟数据库已有的性能列表,实现分布式数据库。

但对于数据库这种根底软件而言,尤其是与传统集中式数据库架构齐全不同的、新型的分布式数据库,绝不是把架构搭建好、代码写进去就能利用在业务中的。而是得从一个个具体的业务开始,针对它做根底性能,满足其根本业务需要,而后一步一步将数据库做大、做强。因而,只有找到业务需要带来的机会,切入进去,并且落地,就有机会活下来。

肯定要“活下来”

说起来容易,做起来难,阳振坤要做的分布式数据库,是个“难产儿”,基本找不到业务。

好在过后出任 OceanBase 我的项目负责人的楚材是淘宝老人,他带着阳振坤走遍了淘宝各个业务技术团队,几天后,终于在淘宝收藏夹这个业务团队找到一丝的机会。

为什么淘宝收藏夹违心试水?“收藏夹是一个比拟非凡的需要,到当初为止,咱们也不晓得有什么更好的计划能解决它的问题。”收藏夹给淘宝用户提供的服务是,一个人能够珍藏上百条、上千条本人感兴趣的商品,商品的信息变动如提价、下架等都须要及时更新,以便用户把握商品动静。每次用户关上收藏夹,后盾零碎都要查询数据库成千盈百次,获取每个商品的最新信息,这对于数据库来说,相当于几百万、几千万的人在读取数据,再乘百千次的读次数。如此高频的数据处理量,简直没有什么数据库可能扛得住,常常被用户投诉“没反馈”“打不开”。

“咱们做了一个比拟非凡的架构,起初发现这个架构有十分大的价值”,阳振坤欣慰地说道。简略来讲,商品信息批改不会间接写进硬盘,而是暂存在内存中,每次用户收藏夹展现的时候,只须要从内存中取得批改后的商品信息。相当于将收藏夹原来的成千盈百次 I /O(输出 / 输入)变成了一次 I /O,原打算须要扩容至数百台机器,当初也只需 20 多台机器就能解决问题。这极大地缩小了机器数量,升高了老本,加强了业务稳定性,初步证实了 OceanBase 的生存价值。然而,好景不长,在 2011 年收藏夹上线之后,整个 2012 年 OceanBase 都没有找到第二个价值如此显著的业务。阳振坤婉言“2012 年真有点做不上来了。”

因而,2012 年的惟一指标就是,活下来。

顶着团队随时可能遣散的压力,阳振坤找到时任阿里巴巴首席架构师的王坚,吐露难处。而后经王坚举荐,在 2012 年 11 月 15 日,OceanBase 团队从淘宝调到支付宝。因为支付宝业务是跟钱打交道,对数据的一致性要求更高,所以心愿在支付宝业务找到机会。阳振坤晓得“如果在支付宝再找不到机会,就完蛋了。”在“人生地不熟”的新团队,他们一边相熟人,一边摸索生的机会。

侥幸的是,OceanBase 团队遇到了一位开明的领导人,时任支付宝技术负责人的程立(花名鲁肃,现任阿里团体 CTO),他对新技术持激励、反对的态度。恰逢七、八月份的时候,支付宝开始探讨怎么“去 O”,即替换 Oracle 数据库(早在 2009 年,阿里巴巴就提出了“去 O”)。但面临的极大难点在于,如果不必 Oracle 数据库,不必共享存储,抉择相似 MySQL 这样单机数据库,数据丢了怎么办?在金融畛域,这是无奈承受的结果。而持续应用 Oracle 数据库,对于业务数据量、数据并发量都微小的阿里业务,所要付出的软、硬件老本是无法估量的昂扬。

阳振坤胸有成竹地说“咱们有方法解决这个事”。这个方法就是现在被广泛应用的三正本,每一笔事务在 3 个节点或者 5 个节点上同时做,超过半数胜利即认为胜利。举个例子,三台机器中坏掉一台机器,剩下两台机器至多有一台机器的数据是正确的,以此办法解决替换 Oracle 的外围问题,即放弃共享存储之后数据损坏、失落的问题。

OceanBase 0.5 版本由此诞生,也为 OceanBase 开拓了一条活路。

但阳振坤明确,这只是给了 OceanBase 一个证实本人的机会。从提出解决方案,到 0.5 版本正式公布,用了 7 个月左右的工夫。另一边,业务团队却很难一下子承受 OceanBase 数据库。首先,这个版本没有通过其它业务的验证就利用到外围业务,是否可行?让 OceanBase 数据库撑持支付宝的交易库,解决交易流水数据,业务团队很难释怀。其次,OceanBase 技术计划要求三个机房,须要在原有的主、备机房的根底上,再减少一个机房,而过后除了杭州,阿里和支付宝在其余城市都没有三个或以上的机房。

为此,单方几次三番强烈地争执。对于 OceanBase 数据库来讲,这是一个生死之战,如果不抓住这次落地机会,不仅是错过支付宝“去 O”的历史性机会这么简略,而是 OceanBase 数据库再也没有机会了。所以 OceanBase 团队当然是极力争取,另一边,业务团队也放弃十分审慎的态度,单方僵持不下。

最初还是鲁肃露面压服业务团队,便有了 OceanBase 数据库分流 1% 的机会,如果出问题,1% 的流量会被随时切走。回忆此事,阳振坤的态度是“咱们的运气不错”。2014 年“双 11”前,大抵是 9 月底或 10 月初,业务团队开始为“双 11”的撑持做压测,因为流量十分大,曾经超出 Oracle 数据库的预约容量,超出零碎的 I / O 能力,零碎大量报错。

因为工夫缓和,长期买设施,手提肩扛服务器再次扩容曾经来不及。业务团队想起压测时撑持 1% 流量的 OceanBase 数据库,找到阳振坤说“给你们 10% 的流量能不能撑得住?”OceanBase 团队当然快乐了:“别说 10%,就是 100% 都能够撑持得下来”。甚至在“双 11”当晚的作战室,面对时任蚂蚁金服 CEO 彭蕾(现任蚂蚁团体董事长)的担心,阳振坤说出了不胜利就跳窗的玩笑话。

后果很顺利,这一战也根本确定了 OceanBase 数据库在支付宝的位置。用 OceanBase 数据库代替 Oracle 数据库之后,单正本数据能够做到原来的 1 /7,其计算资源投入也升高为原来的 1 /12,仅存储一项,就比 Oracle 数据库节俭了约 20 亿元,相当于每账户老本节俭了 90%。

尔后的路便逆风逆水,2015 年替换 Oracle 数据库撑持支付宝的领取零碎;2016 年 OceanBase 1.0 版本公布,由原来的半分布式数据库降级为真正的分布式数据库,并于同年替换 Oracle 数据库撑持支付宝的账务零碎,实现了蚂蚁团体的“去 O”指标;2017 年走出蚂蚁团体,对外商用。

而在对外商用之前,阳振坤要答复一个很要害的问题,他人为什么肯定要用 OceanBase 数据库?

正如前文所述,大飞机比小飞机有价值,但如果他人有小飞机就够用了,凭什么破费时间替换一个大飞机?

利益是永恒不变的,对于一个老成持重的新事物,只有提供足够的价值,能力生存。目前绝大部分的数据库产品分为交易系统和剖析零碎,两套零碎的体量和老本都是微小的。在业务场景中,两套零碎往往也会有提早。如果用一套数据库,既做交易解决,又做剖析解决,就能解决老本和实时同步的问题。阳振坤十分确定,“如果这件事件做成了,极有可能是对整个行业的颠覆,而且这件事件必定能够做成。”这便是起初引发行业热议的 HTAP(Hybrid Transactional and Analytical Process,一体化事务和剖析解决)。

将来取决于此

都说不被看好的孩子反而更有长进,2019 年,OceanBase 数据库突破 Oracle 数据库放弃了 9 年的 TPC-C(在线事务处理基准测试)世界纪录,成为中国首个登顶该榜单的中国数据库产品;2020 年,OceanBase 数据库再次创下 7.07 亿 TPC- C 的性能记录,牢牢占据了榜首地位;2021 年以 1526 万 QphH 的性能突破 TPC-H(数据分析型基准测试)世界纪录(目前排名第二);同年 OceanBase 数据库在蚂蚁团体的反对下,发表成立北京奥星贝斯科技有限公司,并再次开源。

为什么是“再次开源”?早在 2011 年,OceanBase 0.2 版本就已开源,但在 0.4 版本后,OceanBase 数据库开源中断了更新。这是因为从过后蚂蚁团体的视角看,OceanBase 数据库次要是撑持蚂蚁团体外部的业务,为淘宝、天猫、支付宝等业务服务,OceanBase 团队忙于“活下来”而得空开源事务,所以 2013 年后,OceanBase 数据库开源进行了更新。直到 2021 年,解脱所有顾虑的 OceanBase 更加动摇地拥抱开源,将存储引擎、SQL 引擎、分布式引擎、分布式事务、多正本、高性能、扩大能力、优化器、故障复原、多活容灾等核心技术及代码对外开源分享。

面对业界对其开源动机的声声质疑,阳振坤在《曾被“霸凌”的两个孩子:电动汽车与分布式数据库》一文中,援用《硅谷钢铁侠》这本书中对马斯克凋谢特斯拉专利的形容,借喻 OceanBase 开源系统核心的起因。“当马斯克在 2014 年发表特斯拉将公开其所有专利时,分析师们试图确定他是不是在作秀或者其中是否暗藏了不明动机或者陷阱。但马斯克的决定就是这么坦白,他心愿人们制作并购买电动车。马斯克认为,人类的将来取决于此。如果公开特斯拉的专利意味着其余公司可能更容易地制作出电动车,那么这对人类来说是无利的,这些理念应该是收费的。愤世嫉俗的人肯定会讥笑他的观点,但马斯克曾经打算好这么做,他在解释本人的想法时是真挚的,而且极为真挚。”

显然,阳振坤认为,原生分布式数据库是数据库倒退的必然选择,数据实时处理的将来取决于此。阳振坤也心愿呈现更多真正的分布式数据库产品,这从国产数据库的角度,无望实现“去 IOE”,让更多中国数据库走向国内市场,站在更高的角度,这对数据库生态的倒退和科技的提高是无利的。

序幕

现在,OceanBase 数据库已积攒 400 多个内部企业客户,涵盖银行、证券、能源、电力、社保等泛滥重要行业,且没有一家企业悔恨应用 OceanBase,想换掉它,即使 OceanBase 用一套零碎进行交易和剖析解决的性能还在走向成熟。

阳振坤实现了他多年的指标——做一款真正的分布式数据库。

当被问到职业生涯中,做 OceanBase 数据库是不是最难熬的,以及团队面临遣散是否想过放弃时,阳振坤的答复让咱们看到了他的坚韧。“是比拟难熬,很多时候,你不能把握本人的命运,你晓得一件事件是对的,但你想让其他人置信它,是很难的。所以做 OceanBase 数据库的过程中,我认准一点,只有这个我的项目没有被‘枪毙’,咱就做,放弃也没益处对吧?如果有一天被‘枪毙’了,咱也没招对吧?反正只有能做上来,咱们就做上来。”

本文为《新程序员 004》内容,与 OceanBase 创始人阳振坤畅谈他的程序人生。《新程序员 004》行将上市,敬请期待。从 MySQL 之父、MariaDB 创始人 Michael“Monty”Widenius,到 PostgreSQL 寰球开发组联结创始人 Bruce Momjian、阿里巴巴副总裁贾扬清、指令集创始人兼 CEO 潘爱民、驰名科技作者吴军,再到 Vue.js 作者尤雨溪……《新程序员 004》以「咱们的技术时代,我的程序人生」为主题,与多位国内外出名的技术先锋和新生代程序员代表进行了深度对话,心愿行业优良人物的技术之路与人生感悟给大家带来启发。
————————————————
版权申明:本文为 CSDN 博主「《新程序员》编辑部」的原创文章,遵循 CC 4.0 BY-SA 版权协定,转载请附上原文出处链接及本申明。
原文链接:https://blog.csdn.net/program…

正文完
 0