// 作者 | 陈辰
1997年1月27日,在北京机场跑道上,国宾车队一字排开、闪着大灯。对于如此高规格迎接,甲骨文创始人拉里·埃里森似乎仍无动于衷。他的专机舱门打开后,一直都没人出来。
埃里森有个不良嗜好,喜欢人等,越多人等他,他就越不出现。20分钟后,飞机上跳下来一个身穿防弹衣的黑人保镖。他对车队说:“所有的车门全部打开,我要检查有没有炸弹。”
这让时任甲骨文中国总裁冯星君很头疼。他的脾气同样霸道,但一边是美国大老板,一边是国宾车队,都不好惹。鉴于职责所在,冯星君不得不委曲求全。
第二天,埃里森要到长城拍摄推广网络计算机的电视宣传片,吩咐冯星君找来20个小学生参与拍摄。双方约好早上8点开拍,但直到9点,埃里森还没起床。
当天的北京气温零下二十多度,小学生们在没有暖气的大巴上苦等。冯星君带着哭腔给埃里森电话,“那些小孩要冻死了”。埃里森这才勉强答应启程,然后在一个多小时后终于现身。 Oracle时期的冯星君
但去了没多久,埃里森就让副手打电话给冯星君说:“老板很喜欢长城,玩得挺高兴,中午就不回来了,你取消下午3点跟李鹏的会面吧。”
一听这话,冯星君差点晕过去。他急忙说,“下午的会面不是开玩笑的,如果2点钟看不见埃里森,我就辞职。我走了,这个责任我担不起。”
由于还是有所惧怕,埃里森一行匆匆赶回人民大会堂。但或许没有在社会主义国家见过世面,黑人保镖执意跟着进去保护老板,被拦截后吵闹得不可开交。
不难发现,埃里森有恃无恐背后,是当时国内金融、电信、航空等数据库服务全面依赖甲骨文:哪怕你讨厌我,但不能不用我。这就是刚性、卡脖子产品的力量。
而同期国产数据库在蹒跚起步中缓慢发展,几乎从未对甲骨文构成实质性挑战。这一局面直到十余年后,在电商及云计算发展涌动中才有所改变。
01
危机 2010年,甲骨文在TPC-C测试中跑出3024万的成绩,是一起参与测试的IBM3倍。此后,被吊打的IBM再无还手之力,而孤独求败的甲骨文不再参与成本高昂的TPC-C测试。
虽然提起数据库,人们几乎很想到甲骨文。但IBM才是数据库技术的鼻祖。早在1976年,IBM科学家科德博士发表了一篇题为《大型共享数据库的关系数据模型》论文,奠定了现代数据库的理论基础。
然而,限于当时的计算机水平,IBM认为这种数据库没有商业价值,于是把论文当成一篇收获名声的学术研究,没有将其形成产品推向市场。但随后,美国中情局看上了数据库的重大战略意义。 埃里森(右一)
既然IBM不接单,中情局只好求助于民间高手,然后盯上了埃里森和他的初创公司SDL(甲骨文前身)。这位落魄程序员,森研读了IBM的那篇论文,认为这是难得的机会,从此开启了自己的传奇人生。
随后的几十年中,甲骨文并不缺少挑战者,IBM和微软纷纷都加入了数据库市场竞争,推出了DB2、Microsoft SQL Server等产品,但一直难以撼动甲骨文Oracle数据库的霸主地位。
历史的转折同样在2010年埋下种子。随着淘宝网的电商业务席卷中国大地,不断井喷的用户数据让阿里成为甲骨文最大的亚洲客户,同时也挑战着Oracle数据库能力极限。
2010年是淘宝“双11”启动第二年,当天23时59分30秒。眼看“双11”就要结束,支付宝核心账务系统突然报警,数据库资源即将耗尽。当技术人员砍掉最后一个非关键应用的时候,距离整个系统崩溃只剩下4秒。
另外,Oracle的标配是IBM小型机和EMC的存储硬件。一台小型机就要500万,两台小型机就要配一个300万的EMC存储。阿里算了笔账,未来采购这些软件和设备的费用,甚至会超过公司的全部利润。
于是,时任阿里巴巴集团首席架构师王坚积极推动“去IOE”计划。所谓“去IOE”计划,即以廉价PC服务器替代IBM小型机,以基于开源的自研数据库替代Oracle数据库,同时不再用EMC高端存储设备。
具体而言,王坚提出的“基于开源的自研数据库”,是指以当时流行的国外开源数据库MySQL为基础自行改造。这是中国软件行业最常见的自主化路径。
在淘宝把数据库拆分后,很多子数据库都换成了MySQL数据库,只有少部分最核心的数据仍然跑在Oracle上。而这条道路后来衍生出的AliSQL,比原版MySQL有70%的性能提升。但有人认为还有更好的路子。
02
进击 为了推进“去IOE”计划,2010年,王坚邀请45岁的百度高级科学家阳振坤,从北京辞职南下杭州。毕业于北大数学系的阳振坤,曾是王坚在微软亚洲研究的同事。而他来到阿里的新工作,便是研发一款数据库。
在微软亚洲亚洲研究院时,阳振坤几乎天天和王坚“吵架”,但是他们在内心里却有一个大共识——分布式系统才是这个世界的终极未来。于是,阳振坤选择了开发一种全新的分布式数据库。 阳振坤
事实证明,这个选择是明智的,因为不久后Oracle就收购了MySQL,然后宣布不再完全开源。这意味着,阿里的数据库还是无法逃离甲骨文的掌心,或者核心技术仍受制于人。
那么,分布式数据库是什么?它是指区别于Oracle等传统的集中式数据库,不再将数据储存在一台服务器上,而是直接运行在云上。这个设想最初是由谷歌在2006年提出,是一个前所未有的“革命性”变化。
通常而言,一个合格的数据库,必须满足“ACID”特性。简单地理解,当A给B转账100元钱时,要想账头一分钱都不错,数据库必须做到四个特性:
原子性(Atomicity):A的账户减少100元,B的账户增加100元,这两件必须同时发生,像原子一样不可分割。一致性(Consistency):转账之后,A和B的账户总和必须跟转账前一致。
隔离性(Isolation):A和B之间的转账,不影响其它任何账户。
持久性(Durability):转账记录必须永久存在和有效,即使发生断电等故障也不能消失。
对比来看,甲骨文、IBM等传统数据库,被称为集中式数据库,运行在单一的服务器上,可以保证一个任务要么都发生、要么都不发生,从而能最大程度上保证ACID特性。
但对于分布式数据库来说,如果A、B两个账户处在不同的机器上,其中一台机器出现故障,另一台却在继续执行任务,原子性和一致性就没法保证了。
在2010年前,这是一条从未有人成功过的道路,能保证 ACID 的分布式数据库根本就不存在。阿里方面深知其难度之大,相当于指挥整个幼儿园的熊孩子,整齐划一地左手画龙右手画彩虹胸口比心。
于是,阿里集团技术负责人吴泳铭告诉阳振坤:“阳老师,我可以给你两年的时间来证明它是可行的。”但阳振坤呵呵一笑:“用不了。”但后来的事实“教育”了他。
03
战役 由于当时淘宝的数据库已经拆分,换上的MySQL又基本运行平稳。因此,没人想用,也没人敢用分布式数据库。虽然阳振坤要处理的问题有千千万,但这是最主要的一个。
于是,他拿着自己的PPT在淘宝各个业务线奔走宣传,像极了在极力养家糊口的“大龄推销员”。后来总算有一个团队愿意吃螃蟹,就是淘宝里的一个小版块——收藏夹。
收藏夹团队之所以敢这么做,并不是因为他们看好分布式数据库,而是有实实在在的“难言之隐”,即在不断增大的数据处理压力下,团队壮胆申请的400台服务器数量也不一定够。
阳振坤画了个大饼,说采用分布式技术,收藏夹团队用现有的机器,就能轻松应对再多100倍的数据量。结果团队的同学一激动,给了阳老师一个月的时间,把吹出去的牛逼实现。
但阳振坤硬是弄了八个月,才把分布式数据库的底座写了出来交货,然后经受住了2011年“双11”的考验。团队给这个数据库取了个名,OceanBase 0.1,Ocean寓意“星辰大海”,而0.1代表只完成了一点点。
眼看“两年之约”就到了,整个2012年,阳振坤的时间主要都花在向其它部门推销产品,但却几乎都无功而返。由于分布式数据库还没能充分证明自己,阳振坤心急如焚的找上王坚。
一个重大的转折点发生在2012年11月15日。力挺阳振坤的王坚,把OceanBase团队所有人员从淘宝调入支付宝,打算直接用在离钱更近、对ACID要求更高的支付宝上。
而阳振坤解决ACID问题的方法,主要是靠增加备份,将三套OceanBase绑定在一起运行,其中包括一个主库和两个备库。只有当至少一个备库也完成任务时,主库才会完成这个任务,能极大降低事故概率。
不过,这个理论看上去简单,能否在数以亿计的交易中保证不出错,仍受到上下广泛质疑。2014年5月,OceanBase 三副本版号升级为 0.5,但却没有业务团队再敢吃螃蟹。
内心的煎熬,以及看到团队失望的眼神,阳振坤忍不住给蚂蚁金服管理层发了一封请求邮件。最终,2014年的“双11”,支付宝决定将1%的流水交给OceanBase承担,剩下的99%仍使用Oracle。
但意外的是,在临近“双11”的压力测试中,Oracle数据库居然屡次崩溃,只有将数据量降低到90%才能稳定运行。于是OceanBase的承担比例,幸运而又沉重的被上调到10%。
当年11月10日晚,蚂蚁金服CEO彭蕾专门来到OceanBase的作战室,问阳振坤:“阳老师有信心吗?”阳振坤指指窗户,平静地说“不成功我们就跳下去。后来,OceanBase果然成功了。 2015年,阳振坤团队获得蚂蚁金服最重磅的奖项——SUPER MA。
04
登顶 2016年,在解决“投票”和“监督”相关机制问题后,一个真正的分布式数据库OceanBase 1.0横空出世。至此,阳振坤跑了六年的马拉松,看到了第一个里程碑。
第二年底,蚂蚁金服核心系统中的最后一个Oracle数据库被OceanBase替代。另外,阿里巴巴主导的银行网商银行,以及几十家金融机构陆续成为OceanBase的用户。
但在要把OceanBase做到“无限大”目标下,这个数量显然比阳振坤的预想中要少。他专门跑去问很多银行的技术领导:“你们不放心国产OceanBase,又为什么放心美国的Oracle呢?”
银行的领导说说:“你去查查跑分啊,Oracle是第一名,你OceanBase第几名啊?都没有在榜单上。”银行说的“跑分”,正是TPC-C,会对数据库很多方面的性能进行测试,而最主要的是针对在线交易数据库的性能测试。
想当年,Oracle在测试中是以三倍于IBM的姿势夺魁。如今OceanBase能不能跑出 Oracle 三倍呢?阳振坤的结论是:不能三倍,可以十倍。分布式一定可以超越集中式数据库十倍,甚至百倍,这是数学原理决定的。
但由于领导们有点担心步子迈的太大,于是批复将跑分控制在Oracle得分的两倍就行。在项目正式立项后,中国公司以及分布式数据库参加 TPC-C 测试,都是史上第一次。
至于测试用的硬件,因为 TPC-C 没有特别限制,阳振坤选择租用阿里云。此后,210台虚拟主机齐装列阵组成地基,使“分布式数据库”彪悍的跑在“分布式计算上”。
2019年8月,测试正式开始,TPC-C 的审计师特地从美国赶来杭州记录测试过程。两个月后,测试结果出炉:蚂蚁金服60880800分,正好是Oracle 30249688的两倍。
然而,阳振坤某种程度也是“技术完美主义者”。“既然说了要超越 Oracle十倍,就要说到做到。”2020年,OceanBase团队又马不停蹄地开始,筹备第二次测试。
这次1560台虚拟主机在阿里云中列阵,堪称人类史上最大的分布式数据库。不过,第二次测试的过程恰逢全球疫情,TPC-C 的审计师们也被迫通过网络远程监控OceanBase的数据。 经过漫长等待,2020年5月19日,跑分结果出炉:707351007。火力全开的OceanBase,逆天跑出了自己上一次分数的11.6倍,更是将Oracle创造的纪录秒成渣渣,超越了23倍。
05
尾声 OceanBase 团队,从最初的一个人,到0.1版本时的20人,到1.0时的50人,到2.0时的100人,再到如今所有人都在为 3.0 加班加点。十年难言顺遂,但大多数人都未离队。
做出中国人自己的数据意义非凡。有人曾提问:“你是不是一开始就想造出国产可控的数据库?”阳振坤斩钉截铁的回答,“没有,我只是想做出来心中那个完美的分布式数据库。”
对于坚持不懈的理由,阳振坤说,“集中式数据库的技术已经走到了尽头,我丝毫不怀疑在未来会有几家公司打破分布式数据库的技术瓶颈。不过,目前我们是世界上唯一的那个…”
今年11月30日,在2020年中国联通科技创新大会上,中国科学院大学公管学院副院长、中国科学与科技政策研究会常务理事教授刘云,再次列举了的35项被“卡脖子”的关键技术。
比如光刻机,芯片,操作系统,手机射频器件,激光雷达,核心工业软件及数据库等。但在数据库领域,OceanBase已爬上历史舞台,或许35项“卡脖子”技术可以减少一项。
然而,在阿里以外,美国数据库积威犹在,特别是在对数据库要求最高的金融、电信等领域。早在上世纪90年代,国内就逐渐形成了Oracle垄断电信行业,IBM垄断金融行业的格局。
2013年的棱镜门事件,让中国政府意识到使用美国数据库的巨大安全风险,全力推进去IOE化,但一直进展缓慢,很多大型银行的核心业务仍然在使用IBM DB2系统。 2019年国内传统关系型数据库市场占比
截至2019年,国外厂商仍占据我国数据库市场80%以上份额。在主流的关系型数据库市场中,Oracle、IBM、Microsoft、SAP四家厂商共占六成,其中Oracle占比达34.7%。
由于数据库是一个需要下游配套的复杂系统,Oracle多年来大举收购了ERP等下游行业公司,建立起完整的生态系统。而各种办公系统都各自依托Oracle、IBM开发,相互无法兼容。
因此,OceanBase等国产数据库面临的最大挑战,大抵就是在技术破局后,如何搭建自己的生态系统。在历史进程中,企业的自身努力固然重要,但有时选对立场才是决定性因素。
目前,云计算已经走在了时代前沿,任何有互联网野心的企业,都在纷纷转投分布式。在美国,亚马逊、谷歌等数据库新玩家,正在凭借分布式数据库疯狂侵吞甲骨文的地盘。
在国内,阿里、腾讯等互联网企业,如今已全面进军数据库基础技术领域。它们在激烈的市场竞争中厮杀,用丰厚的利润为科研输血,正为中国蹚出一条更高效的数据库破局之路。 |