艾哥 发表于 2023-10-5 18:53:51

中国跨过数据库这座大山了吗?

数据库是一款被许多人忽视的IT软件产品,但事实上非常关键,丝毫不亚于芯片、操作系统。可以这么说,如果没有数据库,就没有企业的根本。
和很多软件产品一样,数据库最早也是国外进步的产物,20世纪60年代国外就有了商业数据库,但直到80年代国内才拥有第一批成型的数据库人才。
那么现在,在数据库方面,中国已经到达怎样的发展程度?中国的数据库历史是怎样的发展脉络?如今面临的问题又是什么?可以科普介绍一下吗?

bigboboo 发表于 2023-10-5 18:54:43

先说结论吧:四舍五入是跨过了。
取得真经的结论说来简单,但九九八十一难的过程却无比艰辛。
我曾经采访过几个中国比较厉害的数据库团队,把他们研发的点滴故事都记录了下来,放在这里,希望对大家有所帮助~
史中:OceanBase:蚂蚁爬上舞台史中:阿里巴巴“数据库侠客”:此行路远,不问归期史中:腾讯数据库的三场战役OceanBase:蚂蚁爬上舞台


文 | 史中

2010年过去了,我很怀念它。

这一年发生了很多场著名战斗:乔布斯一边和病魔对抗一边和谷歌缠斗,并且抽空发布了 iPhone4,用人生最后一段光阴拉开了移动互联网的大幕;360和腾讯也打得不可开交,像甄嬛一样争夺桌面时代用户们最后的宠幸;达摩面壁的天河一号超越“美洲豹”,第一次代表中国夺下世界上超算的宝座。

这一年还发生了一场“非著名”战斗:甲骨文 Oracle 在最权威的数据库性能测试“TPC-C”中跑出史诗级高分30249688,一骑绝尘超出了死对头 IBM 将近 200%,为数年的缠斗画上钢铁般的句号。

Oracle 提着带血的刀站在斗兽场中心,大喊:“还有谁????”虎啸山林,万马齐喑。

此后各个国家的银行转账、存款保险、航空客票、电子商务的每一笔交易,凡是涉及数字和钱的,都要存在 Oracle 的数据库上才最放心。这个星球上几十亿人的衣食住行,生生把甲骨文创始人拉里·埃里森推上了福布斯富豪榜第五位。

也正是在这一年,两个人在阳振坤的脑海里结结实实打了一架。末了,他还是背起包,温文尔雅地递交了辞呈,从百度大厦搬到了阿里大楼。

阳光刺眼,未来并不是清晰可辨。



http://picx.zhimg.com/v2-b1461384c98427904b76e7f2bfafadf8_r.jpg?source=1940ef5c


(一)“账本危机”

我们的故事不妨先从葫芦娃说起。

打败蛇精之后,爷爷把妖精的金银财宝都抱回村子,带着葫芦娃在村口开了一个小银行——“葫芦娃农村合作信用社”。他们搞了一个小账本,用来记录每天乡亲们存了多少钱,取了多少钱,转了多少钱。由大娃专门负责记账。



http://pic1.zhimg.com/v2-a3fb095398bb7d1a77106227a6aebd4d_r.jpg?source=1940ef5c


爷爷经营有方,银行越做越大,然而问题也随之而来:

每天资金流水数以亿计,需要一个超厚的账本才能把账记全。于是爷爷找到卖账本的老板:“我想定做一个超级厚的账本。”没想到账本老板一摊手:“对不起,工艺限制,我们做不出更厚的账本了。。。”



http://pic1.zhimg.com/v2-e85709cd2b8915b9977152e4f73b835c_r.jpg?source=1940ef5c

眼看银行还在不断做大,肿么办?爷爷只好从老板那买了好几个独立账本,把乡亲们的户头分在不同的账本上,让每个葫芦娃分别记账。



http://picx.zhimg.com/v2-2bf8bb313b24dda08b33b674b7ccf86f_r.jpg?source=1940ef5c

这个办法解决了记账的燃眉之急,却带来了一个新问题——每天晚上银行要盘点总账,但由于账本是分割的,没办法汇总。爷爷只好派七娃在每天打烊之后,专门把所有账本的关键数据都抄在一起,做成一个“数据仓库”,在仓库里做最终的汇总、报表。



http://picx.zhimg.com/v2-9079668ecca4a5f9ffb86acd594792c9_r.jpg?source=1940ef5c


然而,“不解风情”的用户还是继续从四面八方涌来,银行家爷爷为了服务好这些用户,每天都让七娃用各种姿势算数据,七娃不堪重负,仰天长啸:“本来以为蛇精就够狠的,没想到最狠的是爷爷。。。老子要辞职!!!”



http://pic1.zhimg.com/v2-4c320c54fac5869250adac1a9cb56846_r.jpg?source=1940ef5c


这不是童话,是差一点就要发生的现实。故事里的“银行”就是支付宝,“账本”就是数据库,“卖账本的老板”就是数据库公司甲骨文(Oracle),而“葫芦娃”就是支付宝的服务器。

那是2013年,支付宝实名用户数超过3亿,全年支付27.8亿笔,稳坐中国互联网支付平台第一把交椅。舞台上歌舞升平,舞台基座却开始微微颤抖——用来存储用户数据的 Oracle 数据库就像一个气球,此时已经被撑到极限,谁都不知道“砰”的一声何时来临。

“账本危机”像是露出海面的鲨鱼鳍,虽然目前一切仍在掌握,但海面之下却是血盆大口。留给中国队的时间不多了。

2013年夏天,时任支付宝 CTO 鲁肃召集各位技术大佬开会商量这个问题,所有人都表情凝重。说来说去,似乎也只剩一条路——像“爷爷”那样先把数据库拆成几份,解了燃眉之急,后面的事再从长计议。

就在这时,一位老哥悠悠地说:如果各位信任我,用“分布式数据库”代替 Oracle,我向大家保证,我们能把数据库做到无限大!

大家齐刷刷看向他,目光各异。

没错,这位老哥就是三年前加入阿里巴巴的阳振坤,他口中的“分布式数据库”,就是他带着同学们从零开始研发,彼时刚满三周岁的 OceanBase。



http://picx.zhimg.com/v2-09948440eaa6ef84f07af620ba526ad8_r.jpg?source=1940ef5c


(二)“无限大”的梦想

首批长江学者,国家科技进步一等奖得主,王选院士的爱徒,激光照排技术的重要贡献者,中国分布式计算的推动者,分布式金融级数据库 OceanBase 的创始人,要是阳振坤把这些头衔都做成勋章,可以像苏联元帅一样把胸前挂满。

但是勋章冰冷,棱角难近。

所以,在我的故事里,阳振坤没有那些头衔,也不是比我父亲小三岁的大叔,他一直是那个1984年考上北大数学系的19岁少年。



http://pic1.zhimg.com/v2-8b1892ece640a53868cd9cabc86c3c93_r.jpg?source=1940ef5c
阳振坤
阳振坤第一次接触分布式系统,还是在2006年,那一年他加入微软亚洲研究院。

微软亚洲研究院,是中国计算机科学的黄埔军校。李开复、张宏江、沈向阳、汤晓鸥、王晓峰、余凯这些灿若星辰的大牛,几只手都数不过来。而当时阳振坤汇报的对象,是个比他大三岁,但和他一样倔的老哥,此人名叫王坚。

技术人都有股清高,虽然那一年阳振坤几乎天天和王坚“吵架”,但是他俩在内心里却有了一个大共识——分布式系统才是这个世界的终极未来。

中哥卖了半天关子,到底什么是“分布式系统”?下面就紧急插播一段科普。

分布式系统的原理很简单:把一个大机器干的活分给无数个小机器一起干,从而大大提高系统的整体性能。(这个设想最初是由谷歌在2006年提出来的。)

举个栗子:

1、关二爷斩颜良诛文丑过五关斩六将,但他就是再厉害,世界上也只有一个关二爷。一人独自面对百万大军腿也软。关二爷就叫“单机”。



http://picx.zhimg.com/v2-27ac1f1af5fb01e92f34185577cc0170_r.jpg?source=1940ef5c


2、关二爷一个人不行,把刘备关羽张飞捆在一起呢?虽然是兄弟三人并肩作战,但他们三个还是独特的,不能无限复制。刘关张就叫“集群”。



http://picx.zhimg.com/v2-7265e6e3086295d9856329dbd424d8f4_r.jpg?source=1940ef5c


3、诸葛亮运筹帷幄,指挥蜀军帐下千军万马,东挡西杀,部分将士有死有伤,也并不影响整个军队完成战争使命。一场战役下来还可以继续招兵买马,扩充实力。蜀军就叫“分布式系统”。



http://pica.zhimg.com/v2-18dc35477f21efe96340602f15d8dbea_r.jpg?source=1940ef5c


你可能会说,中哥怎么还整出来《三国》了,分布式系统听上去跟我没啥关系啊。。。

你错了,摸摸口袋,只要里面装着智能手机,这事儿就铁定和你有关——你去饿了么点外卖,去淘宝剁手,在微信聊天,十几亿人每天无数次次数据交互、调度、运算都是由“云计算”完成的。而“云计算”其实是个小名,它的大名恰恰就叫“分布式计算系统”。

一句话:没有分布式系统,就没有我们今天的世界。

相比“单机系统”和“集群”,“分布式系统”有两个明显的好处:

1、扛造。

打个比方:蚂蚁社会就是个分布式系统——这个家族的生存任务被分摊在每一个蚂蚁头上;出门执行任务的个体蚂蚁难免遭遇鞋底、车轮等等不测,但这并不会影响整个蚁穴的运转;而且就算蚁后被捉走,蚂蚁们也能临危不乱迅速选出新蚁后,继续产卵生子母仪天下。

2、无限大。

道理是很简单的数学:1+1=2,1+1+1+1+1......无数个1加起来就是无限大。只要在技术上实现对每一台机器的“自动调度”,分布式系统就是没有上限的。

别忘了,命运赠送的礼包越大,暗中标定的价格就越贵。老司机攻克“分布式系统”的技术,难度不亚于夺下恶龙守护的珍宝。

江山多娇,无数英雄竞折腰。

说回我们的故事。阳振坤和王坚都有济世情怀,不愿意“躲在小楼成一统”,而是梦想着让自己手中的技术能给世界带来肉眼可见的改变。

于是,2007年阳振坤去了百度,2008年王坚去了阿里巴巴。他俩做了同一件事儿——云计算。

历史的裂痕就此绵延。当时的“互联网一哥”李彦宏羽扇纶巾,全情投入梦想中的人工智能,却把云计算称为“新瓶装旧酒”;而千里之外的杭州,不懂技术的马云却被王坚“忽悠”,拿出了十个亿支持他做“阿里云”。



http://picx.zhimg.com/v2-fa58f8ee18b3048a70eeef001facf036_r.jpg?source=1940ef5c
王坚
时间终于走到了2010年,文章开头的那一幕出现——阳振坤“未敢翻身已碰头”,在阿里巴巴合伙人刘振飞的邀请下,终于下定决心出走百度,转投阿里巴巴。

来到阿里巴巴,继续做熟悉的云计算应该是顺理成章的事儿。不料,阳振坤的老司机本色开始显露。。。

离开前一家,之前的项目我就不会再做,因为之前的技术、关系网很多,容易引起纠纷,让别人说闲话。我离开方正后,就不做激光照排,离开百度后,就不做云计算。

阳振坤解释。

这种“避长扬短”的孤傲着实令很多人费解,但他就是这样做的。

那么问题来了, 除了云计算,哪个技术最有前途嘞?挑来挑去,他选中了“分布式数据库”。

为啥是数据库?

这和王坚当时在阿里巴巴力主推行的“去 IOE 行动”有关。

2009,是“双11”元年,阿里巴巴如火山待燃。为了给剁手党们提供顶级的服务,无论是淘宝还是支付宝,都大批购买昂贵的 Oracle 数据库,把用户的核心数据跑在上面。

但是,盛世和危机只有一线之隔。

你还记得第一章我们讲的支付宝“账本危机”吗?淘宝同样遇到这个问题,而且要比支付宝更早:

2010年时,一个 Oracle 数据库已经没办法支撑淘宝巨大的交易数据,危机迫近,淘宝只好像“爷爷”一样,把数据库拆成相互独立的子数据库,然后用“数据仓库”的方式每日汇总。

然而问题来了,假如把1个大数据库拆成100个子数据库,100个子数据库就要买100个 Oracle 软件授权,为了运行这些数据库还同时要配备100台(或更多)IBM 小型机,还有相应的 EMC 高端存储(这三个并称IOE)。

这可不是开玩笑的,把阿里巴巴所有的利润拿来买这些“奢侈品”都不够。。。

王坚手捧预算,铁血站在此地,从此时此刻起不准购买一套新的 Oracle,退半步者,斩立决。

于是,当时淘宝把数据库拆分后,很多子数据库都换成了开源的 MySQL 数据库,只有少部分最核心的数据仍然跑在既有的 Oracle 上。(你可以简单把 Oracle 理解为 iOS,把 MySQL 理解为安卓。MySQL 开源免费,比 Oracle 实惠得多,但二者都是同一代技术——集中式数据库。)

然而从阳振坤这个“技术完美主义者”的角度来看,用 MySQL 代替 Oracle 并不解决根本问题,因为这种“拆账本”的方式本身就是下策。他甚至想:如果自己能早点来,早几年开发“分布式数据库”,直接用分布式数据库代替 Oracle,不仅能去IOE,还能避免“拆账本”的情况发生,一举两得。

但历史没有假设,种一棵树最好的时机是十年前,第二好的时机就是现在。

阳振坤这位老司机,就这样分秒必争地开车冲上“分布式数据库”这条赛道。

只是彼时的他,尚未预料到数据库这条路比秋名山还凶险。。。



http://picx.zhimg.com/v2-dc07969ff67bd6f150ae8f8f5dd9b75e_r.jpg?source=1940ef5c


分布式数据库技术具体有多难呢?

简单说,要想账头一分钱都不错,数据库要符合一个叫做“ACID”的原则,这四个字母分别代表:A原子性,C一致性,I隔离性,D持久性。

原子性:A转给B100块钱,A账户扣除100块的同时,B账户必须增加100块钱。这两件事必须像一个原子一样紧紧抱在一起,决不允许“A已经扣钱,B还没加钱”的事情发生。

一致性:A转给B100块钱,转账完成的一瞬间,A瞬间再查询自己的最新余额,必须显示已经扣除100之后的金额,B必须瞬间查到已经加上100块之后的余额。所有的账目在任何一个时间切面必须完完全全对得上。

隔离性:A转给B100块钱,不能对C有任何影响。

持久性:A转给B100块钱,这笔转账一旦完成,就永远生效。

问题来了:

如果是集中式账本,只有一个葫芦娃负责写入,保证 ACID 就容易得多;



http://pica.zhimg.com/v2-aa114af531cddfc7d1ccfc6074ec6c6b_r.jpg?source=1940ef5c


但是分布式数据库是让无数个葫芦娃千手万脚地在一个超大型账本上记账,相当于指挥整个幼儿园的熊孩子整齐划一地左手画龙右手彩虹胸口比划郭富城,此时要保证 ACID,就比登天还难。



http://picx.zhimg.com/v2-c186f8153aef6c32fc8224d2fbe1ee50_r.jpg?source=1940ef5c

一句话:2010年的世界上,能保证 ACID 的“分布式数据库”根本就不存在。

当时淘宝的核心技术由吴泳铭负责,他是阿里巴巴第一位程序员,早在阿里建立之前就跟随马云东挡西杀,人称“吴妈”。(其实是男的。。。)

吴妈伸出两个指头:“阳老师,我可以给你两年的时间来证明“分布式数据库”是可行的。”

阳振坤呵呵一笑:“用不了。”

“后来的事实教育了我,分布式数据库是所有分布式系统里最难的那个。。。”

坐在我对面的阳振坤苦笑。



http://picx.zhimg.com/v2-7ed263b37a82bc94b766dcc97c830899_r.jpg?source=1940ef5c
阳振坤,拍摄于2010年

(三)“收藏夹”第一战

2010年6月,光杆司令阳振坤出街。

他眼前要处理的问题有千千万,但最主要的就一个:没人想用,也没人敢用他的“分布式数据库”。

由于当时淘宝的数据库已经拆分。拆都拆了,换上的 MySQL 又基本运行平稳,脑子正常的人谁也不会再折腾这件事儿了。

于是45岁的阳振坤拿着自己的 PPT 在淘宝各个业务线奔走宣传,像极了一个亟需养家糊口的“大龄推销员”。要是那时候有微信,他肯定每天两万步。

功夫不负苦心人,总算有一个团队愿意吃螃蟹,那就是淘宝里的一个小版块——收藏夹。



http://picx.zhimg.com/v2-75699da64a4a3cdf51e67303ce656af6_r.jpg?source=1940ef5c


收藏夹团队之所以要吃螃蟹,也不是因为他们看好分布式数据库,而是有一个实实在在的“难言之隐”。

什么难言之隐呢?

来,回忆一下你使用收藏夹的过程。

假如你收藏了100件商品。点开收藏夹,100件商品就会瞬间跳到你的眼前,每一个商品都显示它的实时状态——比如最新价格是多少,是否下架,等等。

你可能想不到,就是这么轻轻一点,却苦了收藏夹背后的数据库,那一刻它要去淘宝商品库里挨个调取每一件商品的实时详情,相当于一瞬间把100件商品访问了一个遍,再把所有需要更新的价格、状态一一写进自己的数据库,最后呈现给你。(这一切都在零点几秒内发生)



http://picx.zhimg.com/v2-8fde0148dda66a84b259536fa7387851_r.jpg?source=1940ef5c

这里要科普一个小知识:商品的价格信息往往就是一两位数,换成计算机术语就是1-2个Byte,但由于技术限制,计算机对硬盘操作最小的单位是4KB,4KB=4096Byte。也就是说,如果数据库只想改一个价格信息,它也必须读出来一整块4KB的数据,然后只修改其中几个数字,再把4KB数据整体写回数据库。



http://pic1.zhimg.com/v2-2a93fefcebc813023d117753c31a47f8_r.jpg?source=1940ef5c
注:由于数据读出来之后,原存储位置被释放,所以一般会写回到另一个地方

所以,如果一次性读取100个商品,虽然只有其中一小部分商品的参数发生变化,却会对数据库额外进行几千倍的写入,让数据库服务器忙得不可开交——这就叫做“写入放大”。



http://picx.zhimg.com/v2-84b24029cbc805b987baaf4151fdf47d_r.jpg?source=1940ef5c


当时收藏夹的服务器只有100台,眼看人们在收藏夹里堆的商品越来越多,团队壮着胆子为明年申报了400台机器的预算,就这样还不一定够。。。

阳振坤听完了收藏夹团队的难言之隐,眉头一皱,计上心来。他的办法如下:

“内存”这种东东没有4KB的调取下限,而且读取速度是硬盘的100倍左右,所以只要新设计一个数据库,把商品的最新信息放在内存里。用户访问收藏夹的时候,数据库先去硬盘上把基础的数据找来,再去内存里读取最新改动的部分,叠加之后呈现给用户,问题就解决啦。



http://pic1.zhimg.com/v2-cf1a8dff5a40564e3563270a90732550_r.jpg?source=1940ef5c

每过24小时,通常在后半夜比较闲的时候,数据库会统一把前一天内存里的“增量数据”写入硬盘,清空内存,来日再战。(这种闲时集中写入还有个好处:可以把数据压缩比做到极致,节省60%左右的存储空间。)

你可能会问,这样的话还要在内存里标注每段数据对应着数据库上的哪个位置,这不也是额外信息吗?你说得没错,在每个数据旁边,都要加一个指针,标明它是用于更新数据库里哪个参数的。但是即便加上这些信息,写入放大也只有大概几十倍,比硬盘的写入放大低两个数量级。(以当时收藏夹的状况,10G内存就够了。)

这样算下来,收藏夹团队用现有的机器就能轻松应对再多100倍的数据量。

听上去很不错吧。收藏夹的同学也觉得不错,给了阳振坤老湿一个月的时间把吹出去的牛逼实现,结果阳振坤弄了八个月才交货。。。。

为啥这么久?

各位别忘了,解决“写入放大”只是阳振坤的支线任务。他的主线任务是把这个数据库做成“分布式数据库”。

当时阳振坤刚刚招了几个应届生同学——解决写入放大,一个月真差不多;把分布式数据库的底座写出来,一年算是快的。

虽然时间紧急,团队还是决定给这个“分布式数据库”起个名字先。一位同学提议,既然我们的目标是星辰大海,要让无远弗届的巨大数据库降生在这个世界上,不如就叫“海洋”,翻译成英语很好听,叫 OceanBase。

矮油不错哦,大家把这个主意告诉阳振坤,求夸奖。

阳振坤当时正急得焦头烂额,说:“叫啥都行,咱们赶紧研究技术吧!”

OceanBase 的名字就这么稀里糊涂地定了。。。



http://pic1.zhimg.com/v2-2b69c41c841d801d180c189bb6836dc9_r.jpg?source=1940ef5c

具体来说,OceanBase 想要做成“分布式”,得解决两个难题:“分布式读”和“分布式写”。

先说简单一点的“分布式读”。

收藏夹数据库连着50台终端机,终端机的角色就像银行柜员一样,在普通用户点开收藏夹的时候,它们负责对100台服务器组成的分布式数据库进行读操作,然后把数据返回给用户。

由于数据散落在100台服务器上,所以50台终端机中的任何一台都有可能连接100台服务器中的任何一台,也就是50*100=5000条可能连接。但这个数目太大了,无法稳定维持,所以需要定期断掉其中不常用的九成,同一时刻只留500条左右的连接。

如此,问题基本解决。



http://pica.zhimg.com/v2-5dfb758b512bc04a76dd11b8ff0d31ec_r.jpg?source=1940ef5c

再说难一点的“分布式写”。

对于这个问题,阳振坤的解决方案是——暂时不解决。

是的,你没看错。当时时间已经过去半年多了,而试验了几个技术方案,都没有很好地解决“分布式写”的问题,OceanBase 拖着交不了货,收藏夹团队气得要死。讲真,收藏夹团队关心的“写入放大”问题已经解决了,“分布式的写”能不能搞定,那是你阳振坤自己的追求。

眼看2011年的“双11”就要来了,一大波剁手党即将抵达战场。目测如果 OceanBase 再不交货,收藏夹铁定要跪,他们已经开始磨刀准备来砍人了。。。

没办法,OceanBase 只好暂时放弃技术攻关,把写入增量数据的内存都集中在其中一台机器上(集中式写入),就这样交付了。



http://picx.zhimg.com/v2-8c5eb60c219df0183a07656e6a10342c_r.jpg?source=1940ef5c


有意思的是,OceanBase 团队保持着一贯“不输嘴”的高傲,把这个版本命名为 OceanBase 0.1 版,意思就是:这个东西在我心里只完成了一点点,哼!

0.1 就 0.1 吧,对于收藏夹团队来说足够解决燃眉之急。虽然还有不少小 Bug,但幸好都在“双11”之前排查清楚,收藏夹擦着冷汗,安全冲过那年“双11”。

OceanBase 首战告捷。嗯,基本告捷吧。

(四)“两年倒计时”和出走支付宝

阳振坤站在广场上吆喝:“收藏夹第一个吃了螃蟹,谁愿意做第二个?”

大家都往后退了一步。。。

2012一整年,阳振坤疯了一样把团队十几个同学都派出去,逮住人就问:你要不要用 OceanBase?

然而,只有零星几个小业务“礼貌性”地用了 OceanBase,不值一提。大家暗地里口耳相传:听说了么,OceanBase 能把一个月的活儿干成八个月,双11前还在修 Bug,差点把收藏夹给坑了。。。

不过阳振坤却不完全认同:

数据库就和年轻人一样,是磨练出来的,越用才能越发现问题所在。你看 Oracle,那是磨练了四十年的结果,如果一个大学生刚刚参加工作,老板总不给他机会,那他怎么成长呢?

道理大家都懂,可是真求到哪个业务,业务同事们又都咂咂嘴,语重心长:阳老师我不是不帮你,我这不太合适啊。。。

就这样,时间推进到了2012年秋天,吴妈的“两年之约”眼看就到了。结论很明显,“分布式数据库”没能证明自己,阳振坤站在信任的荒原上,心急如焚。

10月底,阳振坤再也忍不住了,一拍桌子,从北京飞到杭州,坐在了阿里巴巴 CTO 兼老同事王坚的办公室里。

王坚能帮他么?不好说。

说实话,那段时间王坚自己的日子也并不好过。他力主创造的阿里云,同样是从零开始研发,彼时正经历大家最激烈的的嘲讽和白眼。大批优秀的程序员实在看不到光明,在这年秋天深鞠一躬,就此别过。阿里云摇摇欲坠。

两人相对无语。做成一件事有多难,彼此心里谁不清楚呢?末了,王坚对阳振坤说:“你放心,先回去吧。我心里有数了。”

两周之后,一纸调令在集团公布:

2012年11月15日,OceanBase 所有人员从淘宝调入支付宝。

把 OceanBase 团队调入支付宝,王坚是有战略考虑的。

1、淘宝已经把“账本”拆分,而且用了开源的 MySQL 代替了 Oracle,不适合冒险使用理念这么超前的数据库。

2、支付宝尚未把“账本”拆分。究其原因恰恰是它直接和钱打交道,对于数据的安全要求极高,如果用 MySQL 代替 Oracle,以当时的技术发展水平有一定的风险,不敢轻举妄动。

3、如果在支付宝,OceanBase 有能力获得信任,有朝一日直接替代 Oracle,支付宝的数据库技术就不仅去了 IOE,还不用拆账本,还实现了技术跃迁,一箭三雕。

当然这一切只是王坚的设想,他也只能帮到这了。余下的,就看老伙计阳振坤有多少真本事了。

果然,加入支付宝几个月后,第一章提到的“账本危机”就不得不提上日程了。

“如果各位信任我,用“分布式数据库”代替 Oracle,我向大家保证,将来我们能把数据库做到无限大!”

此刻你再体会阳振坤在会上说的这句话,就已经不是一个技术大佬的低调炫耀,反而颇有背水一战的味道了。

听完阳振坤的毛遂自荐,鲁肃沉默很久,提出一个直击灵魂的问题:

你 OceanBase 用什么技术来保障账户不丢一分钱?

阳振坤敢揽瓷器活,一定是怀里有金刚钻。过去一年,虽然没有大的业务“临幸”,但是 OceanBase 的技术一直在同事们的努力下稳步迭代。

OceanBase 解决这个问题的方法就是“三副本”。

“三副本”是个啥?

1、三套 OceanBase 数据库绑在一起工作,一个做“主咖”,两个做“备胎”。假如你在支付宝上发起一笔转账,这个信息会同时发给三个库。



http://picx.zhimg.com/v2-2c2c6e8260f6a198ce11676419b54f56_r.jpg?source=1940ef5c


2、主咖接到转账申请后,先不着急记录在案,而是询问两个“备胎”,你们是不是也收到了这笔申请。



http://picx.zhimg.com/v2-b37d5fca93bbc43b3b0e03423a654f34_r.jpg?source=1940ef5c

3、至少一个备胎回复“收到”以后,主咖才会把这笔交易记录在案。于是,每一笔交易都会保证至少由两个数据库记下来,所以任何一笔交易都不会丢失。



http://pic1.zhimg.com/v2-f5391e91a8d85c54b06a8725a4bf1321_r.jpg?source=1940ef5c


这种操作不是阳振坤的原创,而是源自1989年的一篇论文,最早的实际应用大概是在2000年左右的谷歌内部。只是在2013年的中国,还没有人这样摆弄数据库。

平心而论,鲁肃是不世出的技术天才,一个技术能不能管用,有没有漏洞瑕疵,他用鼻子都能闻个八九不离十。听完这个技术构想,他说:“阳老师,我支持你去试试。”

鲁肃的话说得很谨慎,这也是不得已。

如果 OceanBase 的步子迈得太慢,那么支付宝面对迫近的“账本危机”就可能少一样重武器,吉凶未卜;如果 OceanBase 的步子迈得太快,万一技术真有缺陷,但凡丢了用户一分钱,对支付宝的声誉都是毁灭性的打击。别说鲁肃,谁都负不起这个责任。

不过,至少得到了口头支持,阳振坤开心地回到团队,带领大家开始了 OceanBase 的“三副本”升级。

又是一年寒暑。

(五)从1%到10%,从0.1到1

到了2014年5月,OceanBase 三副本终于就绪,版本号升级为 0.5。

可是那个梦魇一样的老问题又出现了——没有业务团队敢吃螃蟹。。。至于为什么不敢用 OceanBase,又都说不上来。他们只是支支吾吾:感觉不稳定,害怕性能差,担心出问题。



http://picx.zhimg.com/v2-62cc4912384356bdbe6cc378ae824b63_r.jpg?source=1940ef5c


就这么干挺了两个月,每一天对于阳振坤来说都是漫长的煎熬。他终于忍不住了,给鲁肃和蚂蚁金服 CEO 彭蕾发了一封邮件。



http://pica.zhimg.com/v2-6934cdd21d1292a71f7c705887eee66e_r.jpg?source=1940ef5c

团队的同学们看我的眼神,每天都从希望到失望,我是真的不知道怎么给他们交代。情急之下,才冒昧写了这封信。

阳振坤回忆。

那封信发出一星期后,鲁肃找到阳振坤:“在接下来的双11,OceanBase 会承担支付宝交易流水库 1% 的流量,我叫了交易流水团队的同学,咱们一起对接!”

鲁肃亲自坐在督战室,对业务团队的同学说:你说说看,OceanBase 到底有什么问题,要说具体的,不能说“感觉不稳定,害怕出问题”这些虚的。

我特别感谢鲁肃,虽然只是给了流水库的1%,但是他当时肯定承受了巨大的风险和压力,这是对我莫大的信任。

阳振坤对我说。

流水库的 1% 由 OceanBase 承担,那剩下的 99% 呢?当然是老牌选手 Oracle。

然而戏剧性的一幕出现了。

就在双11来临之前,阿里巴巴会进行“全链路压力测试”——模拟双11当天的流量洪峰,检查技术上有没有疏漏。

结果,承担99%流量的 Oracle 屡次崩溃,无论如何通不过测试,而一旦把它承担的流量降为90%,就恢复正常。。。事实已经很明显:Oracle 的实际性能极限已经被触碰到了。

于是就在双11来临前两周,鲁肃临时修改计划,让 OceanBase 承担10%的流量,阳振坤团队临危受命。

11月10日晚,蚂蚁金服 CEO 彭蕾专门来到 OceanBase 的作战室,问阳振坤:“阳老师有信心吗?”

阳振坤指指窗户,窗外深秋的树叶正在风中婆娑。“不成功我们就跳下去。”他平静地说。

“当时你们在几楼?”我问。

“7楼。”他说。

“如果没成功,你真的会跳吗?”我问。

“我们的 OceanBase 实际上部署了承担100%交易数据库的能力,也就是说如果 Oracle 完全不起作用,我们也能扛起来,这个技术自信我是有的。”阳振坤笑。

现在阳振坤活生生地坐在我面前,你应该能猜到,那次“双11”的结果可以用完美来形容。

2014年底,阿里巴巴集团召开了“双11”复盘会。阳振坤作为演讲者,从头到尾分享了 OceanBase 的技术构想和艰辛历程。

这一场分享,深深烙在阳振坤的记忆里,挥散不去。

正是从那时起,OceanBase 这个曾经被“嫌弃“的少年,一点一点努力奔跑,摆脱了死神的追击,被越来越多同事和技术人发自内心地接受和尊敬。



http://picx.zhimg.com/v2-4d2c296b15c138ed4f19f823bf028bc6_r.jpg?source=1940ef5c

OceanBase 后来获得了2015年蚂蚁金服最重磅的奖项——SUPER MA。这是时任蚂蚁金服 CEO 彭蕾在给 OceanBase 团队颁奖。

OceanBase 果然人如其名,真的和海洋一样,差点把创始人都”淹死“。。。阳振坤在水面之下潜行五年,此刻也终于可以浮出海面,舒爽地换一口气。

不过也仅仅是换一口气——此时摆在他面前的,还有那个早就应该解决的大难题。

你还记得吗,OceanBase 还是个半成品,它只解决了“分布式读”的问题,没能解决“分布式写”的问题。

其实,经历了两年多时间,这个问题的解决方案在阳振坤的脑海里已经成熟,只是团队生死未卜,一直没能腾出手来做升级。

接下来中哥就给你科普一下“分布式写”是怎么解决的。

分布式写最大的难度其实就在于保证 ACID 中的那个 A——原子性。

还是举那个例子。

假设 A 给 B 转100块钱,由于是“分布式数据库”,A用户的账户存在A机器上,B用户的账户存在B机器上。

如果交易发生时,负责给A账户扣100块钱的A机器死机,没有扣成功,而负责给账户B加100块钱的B机器工作正常,加上了100——这就会造成支付宝损失100块。



http://picx.zhimg.com/v2-01ca181475612f6bd730c7efb4f5e6c0_r.jpg?source=1940ef5c

反之,如果负责给A账户扣100块钱的A机器正常,已经扣掉100,而负责给账户B加100块钱的B机器死机,100块没加上,那么用户就会损失100——最后支付宝还要赔偿用户100块。



http://pic1.zhimg.com/v2-b70984099156d0590cab02eeaf80cbf5_r.jpg?source=1940ef5c


为了保证以上这两种尴尬的局面不发生,OceanBase 1.0 采用了整整一组技术,但最主要的是两个,我给你讲讲。

1、投票机制。

刚才说过,数据库是“三副本”,也就是任何一个账户,都有一个主咖两个备胎共三份相同的数据。具体到账户A来说,它的数据一定同时存在三台机器上。转账时,至少两台机器执行完毕才算转账完成,

这意味着,三台机器里有一台坏掉,并不影响转账的执行。

同时,三台机器之间相互实时发送“心跳信号”,如果有一台机器挂了,其他两台马上就能感觉到,处理完手头这个交易后,马上向系统发送警报,系统自动为他俩匹配一个新搭档,三台机器继续工作。

而换下来那个坏机器,交给技术人员维修,修好后重新上架成为备用机器,等待进入战斗序列。

也就是说,除非两台机器在同年同月同日同分同秒同毫秒坏掉,否则数据库的工作不受影响。



http://picx.zhimg.com/v2-daacccd6d4bc83c4d96bb2accda21228_r.jpg?source=1940ef5c


即使是这还不够,在关键的节点,OceanBase 会采用五个节点投票。也就是除非三台机器在同年同月同日同分同秒同毫秒坏掉,否则数据库的工作不受影响。这个概率已经低到尘土里了。



http://picx.zhimg.com/v2-344a2aaab643b839a8eacb1acf8e6a1c_r.jpg?source=1940ef5c


2、监督机制。

仔细想想,除了机器坏掉,还有一些情况会破坏交易的原子性。例如:A账户要扣掉100块,但是它的余额只有90块,或者已经达到了今天的转账限额,这种情况下,如果贸然给B账户加了100块,A账户却不够扣,就会陷入麻烦了。。。反之如果B账户状态有异常,不能加100块,同样会有麻烦。

解决这个问题的方法,就是引入一位“裁判员”。

裁判员站在A账户和B账户旁边,它的工作流程是这样的:
1)裁判员问A账户:你的三台机器都没问题吧?A账户说:没问题。

2)裁判员问A账户:你的账户允许扣100吗?A账户说:允许。

3)裁判员问B账户:你的三台机器都没问题吧?B账户说:没问题。

4)裁判员问B账户:你的账户状态能接受加100吗?B说:允许。

5)这时,裁判员吹哨,A、B账户同时冻结。

6)A扣100,B加100,双方向裁判汇报“成功”。

7)裁判员再吹哨,A、B账户同时解冻。

以上所有步骤都是按时间顺序完成的,卡在任何一步,账目都不会乱,一分钱都不会丢。完全符合“原子化”的要求。



http://picx.zhimg.com/v2-fa518148116a95236ede057f5563a225_r.jpg?source=1940ef5c
监督机制示意图,当然裁判员也由三台机器组成

直到解决了“分布式写”,分布式数据库的所有技术障碍才被打通,用于存储新写入内容的内存可以分布在每一台服务器中,就像下面图示:



http://picx.zhimg.com/v2-9d6106d82f0b9a0a317a7af7e29060d5_r.jpg?source=1940ef5c


就这样,2016年,一个真正的分布式数据库 OceanBase 1.0 横空出世。阳振坤跑了六年的梦想马拉松,终于看到了第一个里程碑。

而自天空俯瞰,一场“角马大迁徙”正在发生。

自从2014年支付宝交易流水库采用了 OceanBase,蚂蚁金服的其他业务开始一个个告别 Oracle,越过湍急的河水,冲向了分布式数据库 OceanBase 的彼岸。

这场迁徙越来越壮阔,在赛博空间里扬起尘土,在技术人心中暴裂无声。



http://pica.zhimg.com/v2-ce1341d3738136b16c3349b62ae01d60_r.jpg?source=1940ef5c

到2017年底,蚂蚁金服核心系统中的最后一个 Oracle 数据库被 OceanBase 替代。从此,Oracle 只出现在蚂蚁金服的历史博物馆中。

正如阳振坤所预料的那样,几亿用户对于 OceanBase 的淘洗磨练,不仅没有击垮 OceanBase,反而让它的表现越来越稳定。OceanBase 处理的所有账目,一分钱都不会错。

不过,在阳振坤眼里,Oracle 绝不是被他们秒掉的渣渣,恰恰相反,Oracle 一直是他们心中的榜样——OceanBase 七年征程,只是接近了老大哥的背影而已,并无值得骄傲之处。

况且在2017年,OceanBase 和 Oracle 比较,还有一个硬伤。

是什么硬伤呢?

你还记得“葫芦娃农村信用社”的故事里,爷爷为了服务好乡亲们,需要每天晚上让数据库用各种姿势分析报表么?

2017年的 OceanBase 分析报表的能力其实是很弱的。

究其原因,还是“分布式”造成的——在“分布式数据库”的技术体系里,A给B转账,C给D转账,这两笔转账互不干扰,如果你非要问它俩哪个在前哪个在后,OceanBase 就无法精确统计了。用专业术语讲就是:做不到事务的“串行化”。不知道先后,很多分析就做不了。



http://pic1.zhimg.com/v2-fc8ad6452a1ea1bd72992fd01069a08c_r.jpg?source=1940ef5c

而老大哥 Oracle 由于是集中式数据库,相当于所有交易都是一台机器完成的,那显然每一笔交易的先后顺序都能排得清清楚楚,什么姿势的报表都能出,杠杠的。

为了解决“串行化”问题,他们必须马不停蹄继续奔向 OceanBase 2.0。

终于,在2018年,OceanBase 团队搞定了串行化的技术,他们解决的方式是酱的:

在数据库身旁,专门设立一个节点,这个节点什么都不干,只负责一件事——发号。

你去饭店吃饭的时候,如果人太多,服务员会给你一个号对吧。这也是类似的原理:

1)数据库里的裁判甲要进行操作时,要先跟“发号员”申请一个号段,例如10000-20000号。

2)裁判甲把自己要做的操作在自己内部排好顺序,例如10001、10002、10003。。。。。

3)这样在整体数据库里,每一个操作就有了自己独特的编号,且不会重复。例如“A转100给B”这个操作是10005号,“C转100给D”这个操作是20456号。那么,“C转100给D”就一定发生在“A转100给B”之后。



http://picx.zhimg.com/v2-502a9f2a9257c60dfc2ef546b98ae5ac_r.jpg?source=1940ef5c

搞定串行化之后,OceanBase 已经在功能上追到了 Oracle 的 40%左右。没错,用了八年只追上了 Oracle 的 40%,这就是中国公司和美国公司的真实差距。

但我们也不用妄自菲薄,由于采用了下一代的分布式架构,OceanBase 实现了“无限大”的扩展性,在性能方面比 Oracle 高到不知道哪里去了。

虽然“士兵甲”“士兵乙”单打独斗打不过关二爷,但是千军万马生擒关二爷却是情理之中的。这像极了《三体》中所描述的“降维打击”——高维空间的蚂蚁,可以穿透低维空间的大象。



http://picx.zhimg.com/v2-f953ac3c186d662ba234e10931e528de_r.jpg?source=1940ef5c
OceanBase 2.0 全局示意图

(六)“登顶珠峰”

虽然在蚂蚁金服内部,OceanBase 已经接过 Oracle 的接力棒,但放眼望去,中国的无数银行、金融机构却没有如此强的研发力量——他们仍然被困在低维空间,使用 Oracle 数据库。

穷则独善其身,达则兼济天下。阳振坤决定兼济天下。

2015年,阿里巴巴主导的银行网商银行使用了 OceanBase 数据库。2017年,南京银行的互联网银行业务使用了 OceanBase 数据库。人保健康险、西安银行、广东农信等陆续有几十家金融机构成为了 OceanBase 的用户。

但是讲真,这个数量比阳振坤预想中要更少。因为他仍然面临那个古老的命题:

想当年,可是鲁肃、彭蕾、刘振飞、王坚、马云一众大佬的信任,才让 OceanBase 一步一个坎儿在蚂蚁金服生根发芽,如今,各大银行跟你蚂蚁金服又不太熟,凭什么放心地把最核心的业务跑在使用你开发的数据库上?

阳振坤专门跑去问过很多银行的技术领导:“你们不放心国产的 OceanBase,又为什么放心美国的 Oracle 呢?”

银行的同事说:“你去查查跑分啊,Oracle 是第一名,你 OceanBase 第几名啊?都没有在榜单上。。。”

银行说的“跑分”,正是 TPC-C。

故事讲到这,TPC-C 终于又出现了。到底啥是 TPC-C 呢?

要明白 TPC-C,得先明白 TPC。

1967年,英国印刷公司职员约翰·巴伦突发奇想,发明了一种随时随地都能取到钱的自助提款机,也就是ATM机,80年代,ATM机开始风靡,由于无人值守,它的账目就得通过自动化的数据库来管理,于是各大软件公司纷纷开始研发数据库系统,准备趁着风口赚一票。

这时一个问题出现了, 王婆卖瓜自卖自夸。大家都说自己的数据库好,究竟怎么才是好呢?

于是工程师欧姆里·塞林(Omri Serlin)说服了八家数据库厂商,大家统一商量一个标准,就按照这个标准,用跑分的方式测试数据库的能力,谁的分高谁就厉害,童叟无欺。



http://picx.zhimg.com/50/v2-c59de6f24c5d5cf6bc865d5741ba476e_720w.jpg?source=1940ef5c
Omri Serlin
于是,一个专门负责帮大家跑分的组织就成立了,这就是 国际事务处理性能委员会 TPC(Transaction Processing Performance Council)。

TPC 会对数据库很多方面的性能进行测试,而 TPC-C 是其中最主要的——针对在线交易数据库的性能测试。

TPC-C会模拟一系列的交易动作,例如下单、支付、订单查询、库存查询。谁能处理得最多,最稳定,谁的分就高。

另外,TPC-C 很自由,不限制你的数据库跑在什么服务器上,只要你用的硬件是市面上公开销售的就可以。所以,各家数据库为了争夺,八仙过海各显神通,经常搞出奇葩的硬件组合。其中恩怨,一本金庸小说都写不下。

总之,TPC-C 成为了数据库界的“华山论剑”,谁跑分最高,谁就是武林盟主,不服不行。

不服也行,不服你就跑个更高的分看看。

阳振坤不服,OceanBase 要跑分。

想当年,Oracle 在 TPC-C的测试中可是用跑分超越老对手 IBM 两倍的华丽姿势夺得的盟主。



http://picx.zhimg.com/v2-5f8c8bf6aa5cf0b6b8b6d4420f8feea0_r.jpg?source=1940ef5c


如今OceanBase 能不能同样超越 Oracle 两倍呢?

阳振坤的结论是:不能超两倍,可以超十倍。

分布式数据库一定可以超越集中式数据库十倍,甚至百倍,这是数学原理决定的。这也是我做 OceanBase 第一天就抱定的信念,不能超十倍百倍,我们为什么要做?

阳振坤看着我。

就在这一瞬间,我面前仿佛坐着那个刚刚考上北大数学系,意气风发的少年。也许有无数凶猛的敌人等在前路,也许越过山丘终究是一片荒凉。但此时此刻,他就是那样无所畏惧,相信一切。

他把做 TPC-C 测试的想法向上汇报,领导们一边非常支持,另一边又有点担心——万一大张旗鼓参加测试,准备物料、机器,折腾一个遍,结果测试出来结果被 Oracle 八年前的分数吊打,蚂蚁金服的脸往哪放??

这种感觉,颇像1840年大英帝国向清王朝宣战前的心态——信心倒是有,但对面毕竟是叱咤风云几百年的老帝国,万里发兵兴师动众,万一真打不过可怎么办?

鲁肃最终批复,咱们先别搞十倍的,我们就做一个大小适中的 OceanBase——恰恰控制在超越 Oracle 得分一倍就行。

于是,项目正式立项。

中国公司参加 TPC-C 测试,在历史上是头一遭;分布式数据库参加 TPC-C 测试,更是史上第一次。



http://pica.zhimg.com/v2-4c952f559352cac51e6014024da39385_r.jpg?source=1940ef5c
TPC-C 审计师在和 OceanBase 团队交流

至于测试用的硬件,因为 TPC-C 没有特别限制,阳振坤选择了剑走偏锋——租用阿里云。“分布式数据库”跑在“分布式计算上”,相当朋克。

在阿里云里,210台虚拟主机齐装列阵组成地基,OceanBase 在其上如参天大树盘根错节,蔚为壮观。用这种方式,阳振坤和老领导王坚跨越时空,相视一笑。

2019年8月,测试终于开始。TPC-C 的审计师特地从美国赶来杭州记录测试过程。两个月后,测试结果出炉。

蚂蚁金服60880800分,正好超越 Oracle 的30249688一倍,没控制太精准,比一倍多一点点。。。



http://pic1.zhimg.com/v2-1b1946948568d5e0996ad5c5bf17a928_r.jpg?source=1940ef5c


时隔九年,武林盟主终于易主。

OceanBase 打败 Oracle,正如九年前 Oracle 打败 IBM 。一代新人换旧人,历史从来就是这样轮回。



http://picx.zhimg.com/v2-23fdb7d2d4a48d4c502481ef562061b8_r.jpg?source=1940ef5c


TPC-C 测试不仅要看数据库的绝对性能,还要看性能和成本的比值,也就是单位性能的成本。这个数值上,OceanBase 是6.25人民币,Oracle 2010年的值是1.01美元,按照汇率来算,OceanBase 单位性能成本更低,这同样要归功于分布式数据库可以跑在成本低廉的云计算上。

这下,OceanBase 终于可以庆祝了吧?并没有。

在阳振坤心里,这件事儿才完成了一半儿——说好了要超越 Oracle 十倍,少一分都不是十倍。

执拗至此,令人喟叹。

于是在2020年,OceanBase 又马不停蹄地开始了第二次测试,这次,1560台虚拟主机在阿里云中列阵,人类历史上最大的分布式数据库矗立在赛博空间中。

第二次测试的过程恰逢全球新冠疫情,TPC-C 的审计师们也被迫在家办公,通过网络远程监控 OceanBase 的数据。

漫长而灼心的等待。

自从2010年 OceanBase 诞生以来,这场等待已横跨十年,漫长到最执着的看客都已经打起了哈欠,可是阳振坤他们还在咬牙前行。

如同一个人决定徒手爬上万仞绝壁的那一刻,你就只剩下自己,你必须把所有他人的不解、嘲讽、鼓励和祝福统统安放在山脚,唯一能带到空中的,就是心跳。



http://pic1.zhimg.com/v2-19ee704f29901012da6a81dc2ff75028_r.jpg?source=1940ef5c

2020年5月19日,跑分结果出炉,707351007。(注意,上一次是六千万,这次是7亿。)

OceanBase 火力全开,释放天性,逆天地跑到了自己上一次分数的11.6倍,是 Oracle 2010年纪录的23倍,单位性能的成本也猛降至3.98元人民币。



http://pic1.zhimg.com/v2-54ce3a3536dbe94f97aa4d9e37650af1_r.jpg?source=1940ef5c


至此,连最苛刻的人都要感叹,OceanBase 正在把上个时代抛在身后。

不过,无论阳振坤还是蚂蚁金服都明白,跑分并不意味着一切。

数据库的生态像一个花园,只有不同的人信任它,使用它,才会让它变得丰富易用,成为数字世界的基石。在这个星球上,Oracle 的生态像一个庞大的热带雨林,它毫无疑问仍然是数据库的王者。面对 Oracle 的“热带雨林”,OceanBase 的花园任重道远。

大象仍在聚光灯下,但蚂蚁已经爬上舞台。



http://picx.zhimg.com/v2-f9156b6ecfb929c61d0f7a3e13a6bf35_r.jpg?source=1940ef5c
OceanBase 团队和彭蕾、井贤栋

(七)那些希望

2020年,阳振坤55岁。每天晚上下班回到家大概十点半,他会换一套衣服,在小区里快走半小时,大概3000米,如果下雨就换成室内走路,这是他坚持了22年的习惯。

OceanBase 团队,从最初的一个人,到0.1版本时的20人,到1.0时的50人,到2.0时的100人,到如今所有人都在为 3.0 加班加点。十年难言顺遂,容颜渐老,但大多数人都未离队。

“有什么东西支撑你们走下来吗?”我问。

“集中式数据库的技术已经走到了尽头,我丝毫不怀疑在未来会有几家公司打破“分布式数据库”的技术瓶颈。不过,目前我们是世界上唯一的那个。如果说这么多年有东西在支撑着我,这就是理由。”阳振坤说。

数据是赛博世界的基石。你在淘宝上淘到的第一个宝贝,你存在余额宝上的每一笔积蓄,那些你渐渐淡忘的过往和小秘密,数据库都会帮你记得。

由此看来,一个属于中国人自己的数据库有更深远的意义。

我问阳振坤:“你是不是一开始就想造出国产可控的数据库?”

“没有。”他斩钉截铁。“我只是想做出来一个分布式的数据库。”

最开始的时候初生牛犊不怕虎,我以为5年就能把 OceanBase 做个大概的。那时候知道数据库这条路有这么难,也许都不会开始了。其实直到今天,我们仍然把 Oracle 作为学习和追赶的对象。他们有太多积淀和闪光点。

阳振坤实话实说。

2020年,OceanBase 10岁。阳振坤距离退休还有正好5年,在他退休时,OceanBase 能否追上 Oracle 的脚步,还是个未知数。

“你退休后,OceanBase 怎么办?”我问。

“我会交给团队的同学们,他们会比我优秀,会比我更爱 OceanBase。”他说。



http://pic1.zhimg.com/v2-0d13483a9cc10082f6c37d100e11689e_r.jpg?source=1940ef5c

OceanBase 同学们翻到了十年前的一张珍贵的照片,那时候大家都很年轻,相信一切。

我突然想到了鲁迅写自一百年前的《故乡》。人心里有“偶像”,无论真假,便能使人迈开脚步。只要出走,就会有路,远方就在向你靠近。

告别阳振坤那天晚上,我做了一个有趣的梦。

两个背包的年轻人偶遇在乡间小路。他们决定结伴同行。我坐在路边的石头上,实在猜不出他们各自的目的地是哪里。于是我决定追上他们,走在他们身旁。

我并不着急发问,只是默默走着。

谁的目的地是下一个镇子的酒吧,谁的目的地又是世界的尽头,时间自会告诉我答案。



http://pic1.zhimg.com/v2-0afcb9e837b05e6e9c92df7416879136_r.jpg?source=1940ef5c
史中:腾讯数据库的三场战役腾讯数据库的三场战役

文 | 史中

电影《头脑特工队》的封面上,有五个颜色各异的小精灵。他们在主人公小女孩的脑海里上班儿,专门负责整理她的记忆。



http://pica.zhimg.com/50/v2-6fa6f6050e78edd0c19bcf3e64189f04_720w.jpg?source=1940ef5c


小女孩儿的每段新经历,都会被涂上“喜怒忧恐厌”这五种颜色之一,然后封装成水晶球,存入记忆库房。不过故事里的小女孩有点丧,当时她刚刚转学,每天都生活在被陌生环境支配的恐惧中。为了让她的记忆里多一些欢乐,这几个小精灵每天上班996,差点累进ICU。

当年,中哥看完整部电影热泪盈眶——这简直是一部绝好的。。。。数据库科普电影啊!!



http://picx.zhimg.com/v2-2818c2f3feb9a3cb44d78b0503c55edf_r.jpg?source=1940ef5c


啥是数据库?能吃吗好吃吗?

其实数据库并不神秘,就是把怕丢的东西记在小本本上。最简单的数据库人人都见过,就是 Excel 表格嘛:女神动不动就搞个 Excel 表格把备胎们的姓名、财富状况、消费记录都记下来,方便统一管理。但是这种靠手动查询和改写的表格,经常眼一花就搞串行,查了半天还叫错名字,难堪大用。

《头脑特工队》里那套记忆系统就高级多了——每一个记忆小球,就是一段数据。有个灵活的机械手,不仅可以随时批量存入新数据,还能根据条件实时找出指定数据,精准无比绝不出错。这差不多就是真实世界里“数据库”的样子。



http://pic1.zhimg.com/50/v2-f316c643eda37bb050b6a95bb16aca87_720w.jpg?source=1940ef5c


讲真,你每时每刻都沐浴在数据库的恩泽下。

随便举个栗子:你打开心爱的女神票圈那一刻,她的所思所想,每一张泛着香气的美颜自拍,都是从微信的数据库里掏出来贴到你脸上的。女神“呵呵去洗澡”之后,你自己去吃鸡,每次战果也都是会记录在游戏数据库里的。



http://pica.zhimg.com/50/v2-6596cd15aeccaa63e4aeaabb449fceb7_720w.jpg?source=1940ef5c


别看我说得轻松,可千万不要小看数据库的技术含量。

假设你在QQ上改了自己的个性签名,如果下次登陆的时候 QQ 告诉你:“哎呀上次你改的是啥来着,我给忘了,再说一遍呗?”

你能把电脑砸了。

只是个性签名错了你都忍不了,如果你的银行账户钱数错了怎么办?如果神舟飞船的轨道数据搞错了,又怎么办?

实际上,在浩瀚如海的数据洪流里,几毫秒间就能锁定数据位置,查询改写,一字不错,一字不漏,是一项世界级别的软件工程能力。

不夸张地说:数据库是可以和操作系统、芯片技术相提并论的“民族复兴专用技术”。

踢个球什么的,中国队不爱和别的国家计较,但平胸而论,搞计算科学,中国队历来是认真的。这两年拽着云计算的衣角,中国在数据库领域进展迅猛。腾讯精,百度倔,阿里喷热血,华为怼一切。大厂性格不同,却各自在数据库领域建功立业。

这里面最有反差萌的,当属腾讯数据库。

腾讯数据库曾经穿越战火,在企鹅王国的成长过程中,用钢甲死磕弹壳,硝烟散尽,熠熠放光。而腾讯数据库的缔造者,那些老湿傅们,却羞赧低调,把军功章藏好,继续埋头研究心爱的技术。事了拂衣,江海余生。

但他们的故事不会如烟消散。

因为历史正是一个超大的数据库,一个字节都不会丢。最近和腾讯的老湿傅们聊天,往事如沙钩沉。我迫不及待给你讲述腾讯数据库的三场战役。



http://pic1.zhimg.com/v2-972dd93fa2a8dadfc2d76f667dec02b4_r.jpg?source=1940ef5c


(一)微信红包的“珍珠港”

腾讯的故事,还得从 QQ 说起。

2006年,QQ 同时在线人数逼近2000万。

这让 QQ 产品团队欢欣鼓舞,却把底层技术老湿傅吓出了一身冷汗。这2000万人都是凶猛的动物,他们同时相互发信息、查看资料、改写资料——这些操作产生的数据就像机枪一样把子弹喷射向数据库,而数据库必须化作《黑客帝国》里的 Neo,把每一颗子弹都接住。



http://picx.zhimg.com/50/v2-593536516650ed790c0d28b0f857b5bc_720w.jpg?source=1940ef5c

http://pic1.zhimg.com/50/v2-0f3ff021f3de8f566658974031da67d6_720w.jpg?source=1940ef5c


那时候的腾讯还在使用开源的数据库,其中以 MySQL 数据库为主。啥是 MySQL?如果非要类比的话,你可以理解为它是数据库里的 Android——免费、方便,但不包熟包甜。

但在那个热血的年代,QQ 用户量增长速度创造了人类历史,开源数据库还是个宝宝,被海量数据按在地上摩擦,呈现出“早晚要跪”的姿势。腾讯技术团队紧急组织了一个“特战队”,目标只有一个——研发一款能够支撑起几亿用户的数据库。

一年后,腾讯自研的第一个数据库呱呱坠地,这就是后来声名显赫的“CKV”(当时还叫做TDB)。

这里中哥强势插入科普一句:CKV 和 MySQL 有个奇妙的区别——CKV 是非关系型数据库,而 MySQL 是关系型数据库。

给你画两张图解释一下吧。

关系型数据库(简称 SQL)就像是教室,童鞋们每人手里举着一份数据,规规矩矩地排排坐,谁是谁的同桌,谁是谁的前座,这种关系都安排的明明白白,老师说“第三排全体起立”,第三排的同学们就能同时站起来。老师说“第一列最高的同学出列”,他就会站起来。管理起来很方便。



http://picx.zhimg.com/v2-002d5b8b3a0f567febac992acfdc694c_r.jpg?source=1940ef5c
关系型数据库(SQL)

非关系型数据库(简称 NoSQL)像是操场,童鞋们踢球跑步搞基随便浪,虽然不像“关系型数据库”有那么多玩法,但是老师也能找到想找的人。他站在旁边大吼一声“林蛋大”,楚中天就会跑过来。老师喊“五年级同学集合”,五年级的孩子们也会跑过来。



http://pic1.zhimg.com/v2-18470aa31befe828f5767319624f48c3_r.jpg?source=1940ef5c
非关系型数据库(NoSQL)

其实,“关系型数据库”是当时绝对的技术主流。因为这种数据库已经有30年的历史,它把数据存储得非常规范,对强迫症非常友好,又支持很多骚骚的查询计算方式。那为啥腾讯还偏要创新,做“非关系型数据库” CKV 呢?

根本原因是,腾讯做的事情是“社交”。

现在说起来“社交软件”,小孩子都懂。但不要忘了,当时整个互联网刚刚发展到社交时代,没有人知道应该啥样的数据库支持社交最合适,只能靠老湿傅的直觉,摸着鱼过河。

老湿傅们选择非关系型数据库有两个理由:1、社交数据由用户自己生成,数量巨大无比,需要最低成本的存储和管理方式;2、社交场景对于数据读写速度要求很高,但数据之间却并不需要特别频繁的相互计算。

后来的历史也证明,这个选择是对的。

我们故事的第一个讲述人程彬,2008年一毕业就加入腾讯了,他被分入的团队,恰好就是 CKV 数据库团队。



http://pic1.zhimg.com/v2-02401aa2c0a3b38ff4a0ef9de43f5764_r.jpg?source=1940ef5c
程彬

加入 CKV 的时候,这个数据库已经能很好地支持腾讯的业务了。程彬本以为自己可以躺在前人的成果上舒服一阵子,没想到,他大大低估了腾讯这家伙制造爆款的能力。

那段时间,“QQ空间”突然大火,和当时最大的社交网络 Facebook 分庭抗礼。爆点发生在2009年,QQ空间里上线了“QQ农场”“好友买卖”“抢车位”这一票社交游戏。

人们偷菜偷来偷去不亦乐乎,每偷一棵菜,就要改写一下数据库,数据库团队差点疯了。

程彬说,这个账是能算出来的:

当时我们用的是每分钟15000转的顶级机械硬盘,它每秒钟能读写300次。为了保证数据不丢,还要对每份数据另外做两个备份,加上原数据总共三份。按照当时人们那种疯狂的数据访问强度,光是支持一个“偷菜”就得一万台服务器,这谁顶得住啊。。。

注意,这里的瓶颈关键在于“每秒访问次数”太多。就像你每天喝八杯水能喝一辈子,但直接把你扔到游泳池里,你多半就喝不了了。

有什么东西能支持高并发访问吗?有,这就是“内存”。内存的访问并发可以达到硬盘的100倍,但它有个众所周知的弱点,一断电,数据就没了。

于是,同事们绞尽脑汁,想出了一个“中西医结合”的方案:把访问最频繁的数据库放在内存里,每隔一段时间,内存再向硬盘同步这部分数据。

然而,内存仍然是很贵的设备,买几万条也受不了。于是 CKV 团队又做了一套调度系统,能够自动把不同时段比较“热”的数据“倒着班”放进内存。例如,午饭后白领比较喜欢刷空间,那时就把白领们的数据放到最方便读取的地方;晚上下课后,大学生们又开始刷空间,那就把大学生的数据放在内存。



http://pica.zhimg.com/50/v2-5e993fac540a1146c8b5ad3e9b518930_720w.jpg?source=1940ef5c


就这样,CKV 经受住了极高频度的访问冲击,而且成本还比想象中便宜了好多。

有道是穷则独善其身,达则兼济天下。CKV 一战成名,腾讯内部孵化新项目,都会直接找数据库团队“借用” CKV,然而,腾讯内部的产品毕竟有限,数据库想要改变世界,得“飞入寻常百姓家”。

机会很快就来了。

时光荏苒,到了2010年。这一年,腾讯摊上了大事儿——3Q大战。

这次战争导致了腾讯历史上最大的一次反思。从此他们一改“不给小厂留活路”的风格,推出了“腾讯开放平台”,希望大家都能分享腾讯的“流量”和“技术”优势,有钱一起赚,别打架。

你可能猜到了,如今为几十万家公司提供计算力和底层技术的腾讯云,就脱胎于开放平台。

当年最先抢滩登陆“开放平台”的螃蟹,以游戏团队为主。他们“馋”的主要是腾讯的流量。但是腾讯觉得,我们的技术也很好呀,你们要不要用用看?现实很骨感,大家只盯着腾讯的流量,没什么人关心腾讯还有技术,知道腾讯还有“数据库技术”的就更是凤毛麟角了。。。

领导把程彬他们叫来:“数据库是你们做的,要不,你带着做开发的几个兄弟,自己吆喝一下,卖卖数据库?”

一群整日写代码,一天都憋不出十句话的技术宅,居然“被逼”做销售,简直五雷轰顶。程彬坐在电话机前面,愁都愁死了。

果然,硬着头皮顺着表格一个个电话打过去,人家要么就是不需要,要么就是信不过腾讯的技术,好不容易有一家公司觉得可以试一下,问完价格以后就再也没信了。。。

十几个兄弟这么熬了两三个月,几乎颗粒无收。就在那段时间,好几个骨干成员都跟程彬提出了离职。“还用打电话问么?这东西能不能卖出去谁心里没数?”一位同事离开的时候,撂下了这句话。

程彬压力山大,这样下去,同事们早晚要走光了呀。。。

他一拍桌子,给一位很喜欢腾讯数据库但是嫌贵的知音客户打电话:“我去找你,你给我们当面提提意见。”然后,从一群沉默的技术宅同事里挑了最爱说话的那个,一起买了飞机票去北京。

“你看到那幢特高特漂亮的大厦了吗?不不不,别上楼。大厦对面的小区,3号楼一单元502,我们就在这里办公!楼道里没灯,小心点。。。”电话里,客户指挥程彬找地址。

那是我有生以来第一见到“民房创业”,三室一厅,七八个人,就在里面黑漆漆地敲代码。我说,我们数据库一个月就几千块钱,也不贵呀。人家告诉我,整个这间办公室一个月才几千块。。。

程彬回忆。

一毕业就来到大公司腾讯的程彬,第一次体验到“民间疾苦”,他突然开悟,对于小公司来说,什么海量承载能力,什么世界级高吞吐,都是空中楼阁;一个便宜、够用的标准数据库才是最急需的。

程彬以为的创业者↓↓↓



http://picx.zhimg.com/v2-dc67cfbc1747a160350ff13f98ebdcea_r.jpg?source=1940ef5c


实际的创业者↓↓↓



http://picx.zhimg.com/v2-8bcd6b9cc0e5dc960ff9ef120b5f136d_r.jpg?source=1940ef5c


回到深圳,他们马上确定了新方向:在 MySQL 的基础上,开始研发亲民的数据库“CDB”。这就是后来在腾讯云上最受欢迎的“腾讯 MySQL 数据库”。

时间拨回那一时刻,他面对的主要矛盾就是一句话:在保证数据库品质的基础上,最大限度降低成本!!!

数据库的成本怎么降低呢?这里就要说到它的一个小痛点。

数据库使用的硬件一台台标准的服务器,里面既有计算资源又有存储资源。但既然是标准服务器,计算资源和存储资源的比例就是固定的。

而人们使用数据库的姿势却千差万别——有时存储空间用满了,计算力还在闲置;有时计算力用满了,存储空间还闲置。

就好像有人爱吃饺子馅,不爱吃饺子皮。端上来一盘饺子,他会把馅都挑出来吃了,饺子皮就剩下,浪费了。有人爱吃饺子皮,就会把饺子馅浪费掉。

要想省成本,先从这个资源浪费下手。

于是团队设计了一个“存储和计算分离”的架构,有几台服务器专门负责计算,其他更多机器里塞满硬盘,专门负责存储。就好像煮饺子的时候,只煮5个饺子皮,再单独煮100个肉丸子,这样喜欢吃馅的老铁就能吃个够。。。



http://picx.zhimg.com/v2-8028230779e25d38c1bba1cc6f7f5847_r.jpg?source=1940ef5c


然鹅,这个新办法,又引入了新问题。

存储和计算之间虽然分离了,但他们本来是一家子——要想共同协作,就要频繁地进行信息交换。

当时主流的交换设备就是“千兆网卡”(1000M/Bps)。算一算,一页表单是16kB,除下来一个网卡每秒最多只能传6000多次数据。你可能会说,多加网卡不就行了?但那样成本不就又上去了么。。。

既然硬件的瓶颈明摆在这里,那别无选择,只能把数据库变小了。

那段时间,数据库的老湿傅们没白没黑地看 MySQL 的代码,凡是不需要的表单功能,就大刀阔斧地删减。程彬给同学们立了军令状,要是压缩不到4kb,咱们大伙儿去裸奔。。。

同事们有两个选择,一是把数据表单压到4kb,二是锻炼身体,裸奔的时候身材好一些。压力之下,这帮技术宅做梦都在一个字节一个字节地抠代码,到后来生生把一页表格从16kb给砍到了4kb。再对这4kb的信息进行压缩,最终一页表单只有1kb大小,缩小了整整16倍。

这一顿操作下来,CDB 数据库的成本直接杀到原来的三分之一,开放平台上的用户都惊了,从腾讯云上买数据库,比自己雇人开发还要便宜,那肯定愿意试试看啊!实际上也正是从那个时候开始,大量用户成为腾讯数据库的真爱粉。

回想起那几年,程彬觉得腾讯数据库简直就是玩了一把真人版的《CS》。不过尼采说得好:那些杀不死你的,只能让你更强大。在严酷的环境里杀出来,让数据库团队积累了好多独门经验,这些经验,会在未来的某一天回来“报恩”。

报恩的日子很快就来了。

2014年春天,微信推出了一个“开玩笑”的小功能——红包。日后,红包帮助微信支付一炮轰掉了支付宝的半壁江山。这也被马云称为“偷袭珍珠港”。

让微信支付最深入人心的一次战役,当属2015年微信赞助春晚的“摇红包”活动。



http://picx.zhimg.com/v2-40f3c1626f285cfc3786988e638b8f13_r.jpg?source=1940ef5c
这是当时摇红包的宣传图

把时间再往前拨转,距离春晚还有两个月时,微信团队的童鞋找到当时的数据库团队,请求支援。春晚可不是闹着玩的,全国十几亿人民一起,普通的红包我们普通的摇。

团队估算了一下流量,无论是用并发性能强劲的 CKV 数据库,还是用关联计算能力更强的 CDB,恐怕都要跪。。。

最后,两个数据库团队的智慧爆了棚,他们想到了一种奇葩的解法——把 CDB 和 CKV 合体!

于是,在春晚前两个月,数据库的老司机们开始了“秋名山飙车”,在非关系型数据库 CKV 中插入了关系型数据库的“树结构”,这样在抢红包的时候,系统就不用告诉数据库每个数字的变化,而是数据库根据已有的关键数据,自己补全剩余的数据。无数这样的骚操作联合起来大大降低了对数据库的写入频率。

那年春晚,微信红包一炮而红。

这群数据库老司机,看着支付战场的“珍珠港”燃起熊熊大火,淡淡一笑,春节回来聚餐撸了个串儿,好似什么都没发生。



http://picx.zhimg.com/v2-603eb8fdbc45cee1744522a703dc0673_r.jpg?source=1940ef5c


(二)《王者荣耀》的“莫斯科保卫战”

1941年,苏联红军扬起烟尘,从红场阅兵直接开赴苏德战场前线。斯大林发表演讲:我们将不惜用尽每一滴鲜血来保卫苏维埃的土地和村庄。

这次莫斯科保卫战,苏联做好了最后的巷战准备。仅仅妇女和儿童就构筑了700公里的反坦克战壕。在几百公里的战线上,两军拉锯,苏军虽然单点经常被攻破,但补防策略执行得天衣无缝,兵来将挡水来土掩,任凭德军装甲车、摩托兵套路用尽,都没办法撕破防线一分一毫。

这场战役并无神来之笔,苏军最强的战斗力恰恰就是——“稳定性”。这三个字拯救了莫斯科,让二战的结果成为今天教科书里记录的样子。

而伴随一款游戏毫无预警的爆红过程,数据库承受的冲击,不亚于一场“莫斯科保卫战”。

我们故事的第二位讲述人张世维,就曾经历过这样的战役。



http://pic1.zhimg.com/v2-9d81b107a61ae7729273e8c157f14919_r.jpg?source=1940ef5c
张世维

张世维曾在数据库领域的“殿堂级公司”甲骨文工作,加入腾讯时,腾讯其实面临一个大挑战。

当时的情况其实挺紧急的。因为谁也没搞明白,腾讯代理的游戏怎么突然一下就那么火,无数玩家涌进《CF》《DNF》,XXXX不亦乐乎。之后,腾讯也摩拳擦掌,自己开发一些大型游戏。

开发游戏本来就很难,一个游戏所需要的“高性能数据库”,更是男上加男。

没错,张世维团队的任务就是:在最短的时间内,开发一套为腾讯旗下所有游戏提供服务的数据库——TcaplusDB。

刚才说过,游戏对数据库的要求,就是苏联对莫斯科保卫战的要求——稳定。无论是游戏玩家突然暴增一百倍,还是机房突然停电,还是游戏本身升级维护。玩家就是一句话,游!戏!不!准!给我停!!!



http://picx.zhimg.com/v2-d8be3bf8ad35426bfabf7a0fecc6e998_r.jpg?source=1940ef5c


技术人,得尊重科学。再高的技术水准,都难以保证完全不会出问题,所以要想数据库不熄火,最稳妥的方式就是,增加备用数据库。

比如,小明的爸爸参加完小明的家长会,老师说你家孩子不爱学习,三观不正,将来前途渺茫。小明的爸爸回家后最好的选择不是揍小明一顿,也不是好好教育他,而是生个二胎。

于是,TcaplusDB 数据库一出生就是“三胞胎”——除了主数据库,还标配一个“热备份数据库”(简称热备)和一个“冷备份数据库”(简称冷备)。



http://picx.zhimg.com/v2-6019e6cdc4fdbf6c8ddfea71470ab7ed_r.jpg?source=1940ef5c


这三份数据库都是实时同步的,可以相互替代。他们之间的替代关系不是整个替代,而是可以以服务器为单位的“细粒度”替代。举个例子就明白了:假设老大的左眼坏了,不用让老二整个人来替换他,而是只把老二的左眼抠出来给老大装上就行了。

具体工作原理是酱的:

如果主数据库的28号服务器出现硬件故障,那么系统就会在0.1秒内把热备服务器的28号服务器切过来继续使用,这边数据库的老湿傅们紧急换掉主数据库的28号服务器,把里面的数据补齐,然后系统又会在0.1秒内把服务器切换回来。



http://picx.zhimg.com/v2-472ef9087554767c9c9e2bf6dad68432_r.jpg?source=1940ef5c


整个过程,对于游戏玩家来说根本感知不到。在他们看来,游戏一丝一毫都没有中断。
你可能会问:中哥你不说是“三胞胎”吗?还有个“冷备数据库”,是干嘛的?

答:只有在老大、老二同时挂了的时候,才会请出老三。由于老大老二同时挂的概率太低太低了,所以一般用不到老三,就把他先放在冰柜里冻着,需要的时候,紧急“解冻”它就好了。当然,如果需要启动冷备数据库,游戏就会中断十几分钟。这种情况,玩家免不了会吐槽,但好在他们的数据一个字节不会丢。正所谓——懵逼半天,归来仍是青铜。

2012年,TcaplusDB 数据库第一次出街,支持的游戏是腾讯自己开发的页游《夜店之王》。



http://picx.zhimg.com/v2-bbe41d5f73d6584a14a01536c751cd61_r.jpg?source=1940ef5c
《夜店之王》

为了继续讲故事,这里中哥先给你科普一个概念:“PCU”。注意,PCU 不是 PUA。。。PCU(Peak concurrent users)翻译过来就是“最高同时在线人数”。用这个数值来评价游戏的火爆程度,简单又直白。

下次如果你想装做游戏业内行,你就云淡风轻地问:这游戏的 PCU 是多少啊?

要知道,当时的游戏,大部分还是“分区分服”的,这个打游戏的童鞋都明白。由于服务器和数据库能力的限制,得把全国分成几个区域,每个区域内部自己玩儿。但是《夜店之王》由于采用了包括 TcaplusDB 数据库在内的新技术,可以做到“全区全服”,全国玩家在一个池子里“大乱斗”,爽得没边。

根据记录,当年《夜店之王》的 PCU 超过百万。这对于当年的腾讯自研游戏来说是相当不错的成绩。

张世维没有料到,这个数量级的 PCU 在接下来要到来的“手游”浪潮面前,简直就是个渣渣。

浅友们可能还记得,2013年的时候,腾讯冷不丁推出了几个“天天”系列游戏,《天天酷跑》、《天天爱消除》。

《天天酷跑》的 PCU 很快就冲过了《夜店之王》的记录,张世维很开心。过了两天,冲到了两倍,张世维更开心。又过了两天,冲到了三倍,张世维心里咯噔一下。给数据库准备的100台服务器马上就不够了。。。



http://pica.zhimg.com/v2-27312746dfe69e393962a4f1d43b3d49_r.jpg?source=1940ef5c
《天天酷跑》

他紧急向公司申请,添加了50台服务器。然而新服务器就像是刚建好的“空仓库”,你还得把原来仓库里的数据搬一部分过来,这才是真正的技术挑战所在。

虽然这种“搬家”当时基本已经做到系统自动调度了,但是,搬家和搬家还不一样。如果时间充足,搬家是一件很容易的事情;如果要求在一天之内搬空一个大厂房,就需要点骚操作了。

眼看旧数据库在逼近存储极限,那边玩家还在不解风情地制造新数据,搬家速度必须非常快,才能避免数据库爆棚。与此同时,搬家还不能造成游戏丝毫中断,玩家要什么姿势,数据库随时得给。张世维和同事们一边加班,一边心里默念:“我太难了。。。”

然而,用户增长的速度还是太快了,按照这种态势,24小时后数据库就会崩溃,游戏只能暂时停服。谁都不敢面对这样的结局。。。

就在数据库团队快要顶不住的时候,斜刺里杀出一波神秘的队伍。那是腾讯游戏的开发同事。平日里他们还有时吐槽数据库团队,但这一刻,他们站在那里,只问张世维一句话:“我们能做什么?”

两支团队就这么背靠背作战,如多年的兄弟一般默契,熬夜调试迁移工具,在凌晨紧急上线,硬是死死抗住了一波又一波的用户访问冲击。

硝烟散尽,张世维躺在办公室的沙发上睡得昏天黑地。醒来之后,他跟团队发誓:“这一波我们险胜,下一个游戏万一更火爆怎么办?咱们一定得把扩容工具做到极致,要能够自动化支撑“无限大”的数据库扩容!!!”

那之后好几个月,同事们一行一行地抠代码,把这套数据库自动迁移系统打磨得金光铮亮。

现在回想起来,当时的决定不要太正确。

因为,紧接着2015年底,就有一个新游戏上线,那就是《王者荣耀》。



http://picx.zhimg.com/50/v2-6ff3c4c7a63d2eda13baf444e7bcddcf_720w.jpg?source=1940ef5c

《王者荣耀》野到了什么地步呢?几乎起跳点位的 PCU 就是历史峰值。。。

包括游戏的开发团队都没期待《王者荣耀》会这样蹿红,紧急找到 TcaplusDB 数据库团队,让他们帮忙看看,数据库可千万别跪了。

张世维和团队虽然做好了充分的准备,但心里还是很忐忑,毕竟这个逆天的游戏每一秒钟都在创造数据库的新纪录。。。

最疯狂的游戏浪潮,一般出现在周末。

那个春天,一到周末,TcaplusDB 团队的童鞋们就在家盯着电脑,一位本来答应女票要去看电影的童鞋,冒着被罚跪键盘的风险,以死相逼留在了家里。。。

严阵以待的技术人终究见证了历史。几千台服务器在预先设定好的统一调度机制下不停服自动扩容。一群机甲战士,有条不紊地向前行进,烟尘扬起,恰似莫斯科红场上士兵们坚定的步伐。

我没办法对外披露具体的数据,不过《王者荣耀》的 PCU 峰值是一个惊人的数字,创造了历史记录。

“几千万人在同时使用我们写数据库的代码,你能体会这种感受吗?”

张世维看着我,仿佛要说出千言万语。



http://pic1.zhimg.com/v2-23238aa64e9ae2b3110b24744aca67ff_r.jpg?source=1940ef5c


(三)腾讯视频的“诺曼底”

人生可比是海上的波浪 ,有时起有时落。

歌里这样唱道。

2014年,“腾讯游戏”正劈波斩浪,它的兄弟“腾讯视频”却正在XXXX。

当时腾讯视频可不比今日。用户美誉度不够,前途未卜。

我们的第三位故事讲述人,邵宗文,就与此有关。当时他正在腾讯视频所在的整个事业群(OMG)的数据库团队。



http://pica.zhimg.com/v2-ce86ec757f848647309a3b14fd294af0_r.jpg?source=1940ef5c
邵宗文

邵宗文是不折不扣的“老炮儿”,有10年数据库运维经验。他心里最清楚,不会有人把一个产品的成功归功于数据库;但一个坑爹的数据库,却很可能把产品拖垮。

“那时候腾讯视频的体验并不好。看着看着就会出现卡顿。但是由于没有足够细致的检查数据,技术团队也很难判断问题到底出在哪儿。大家都很着急。”

邵宗文回忆。

因为数据库是个巨复杂的系统,就像人体一样,靠五脏六腑、血液淋巴神经、骨骼、大脑、各种激素和分泌物共同维持运转,精密至极,哪里出了个小意外,都会导致整个系统发生意想不到的问题。所以,就像人类需要医生一样,数据库也需要一套“数据库运维系统”。

做数据库运维系统,邵宗文是认真的。早在2009年,他刚加入腾讯的时候,就做了一套数据库运维系统。这套系统就像戴在身上的“心电记录仪”,哪次查询过于缓慢,哪次进程卡死了,它都会记在小本本上,生成完整的报告发送给运维老湿傅作参考。



http://pic1.zhimg.com/50/v2-e1be7b9e47d93a084ca758c6fd0a296f_720w.jpg?source=1940ef5c
在运维微信群里,告警自动发送

这种思路,如今已经成为了数据库运维的标准操作,但在当时来看,却完全领先了一个时代。这个数据库运维系统被命名为“扁鹊”,希望它药到病除妙手回春。



http://pic1.zhimg.com/v2-f280f3c170d0851739ba5c6805598922_r.jpg?source=1940ef5c


我们把镜头拉回腾讯视频,当时情况危急,“扁鹊”被用到了腾讯视频,很快就定位出了很多对于数据库不合理的查询语句。吃完“扁鹊”开出的药方,腾讯视频果然顺畅了很多。

这个人人都能看见的改变,给了童鞋们不小的信心。

与此同时,伴随着视频网站付费模式的兴起,内容为王的时代终于如晨曦降临。一场“诺曼底登陆”,就这样悄无声息地展开。

2014年,腾讯视频推出了自制剧《暗黑者》,2015年腾讯视频独播了《中国好声音第四季》,2017年1月,又制做了 IP 神剧《鬼吹灯之精绝古城》,爆款内容的火力越来越密集,眼看有逆风翻盘之势。



http://pic1.zhimg.com/v2-e27f19faff8fba60ef2af2c23afd60de_r.jpg?source=1940ef5c
《鬼吹灯之精绝古城》

不得不说,2016年,是科技史上的一个“大年”。

阿法狗大战李世石,BAT 猛然疯狂争夺人工智能的权柄,今日头条异军突起,所有的内容平台的玩法更是一夜之间从“人找内容”倒向“内容找人”:

以往你还得冥思苦想,然后在框框里输入自己想要看什么;现在非常棒,你只需要宛若智障握着手机往下划,人工智能就会把你喜欢的内容“喂”到你嘴边。

这里中哥还得插入一下,简单科普一下“AI 推荐”的原理。

AI 推荐的基本动作是“打标签”。假如你天天看番,系统也许就把你标注为“宅男”,那好了,从今以后给你推宅男更喜欢的视频。但究竟哪些视频是“宅男向”,哪些视频是“宅女向”,同样也需要人工智能“打标签”。(这是科普,当然并不是你只想看什么 AI 就只给你推什么。)



http://pica.zhimg.com/v2-822430d4d137d08b5bd2734d63c27f02_r.jpg?source=1940ef5c
人工智能识别图片,并且打好标签

为了打赢“AI 推荐”这一仗,腾讯视频也不例外,从高冷的“狗不理模式”瞬间变成热情的“海底捞模式”。

按理说这是业务上的变动,和底层的数据库没卵关系,其实不然。“打标签”这个动作,需要频繁地抽取数据进行计算。数据穿梭,如惊涛拍岸,卷起千堆雪,对数据库这个“河床”产生了巨大的冲击。

那段日子,邵宗文和兄弟们可以说是“死去活来”。

我们几个同事晚上聚餐,刚点完菜,业务团队打来电话,说数据库出现了抖动,我们几个人赶紧齐刷刷地掏出电脑远程解决问题。问题处理明白了, 我们看着桌子上的冷菜,让服务员结账打包。。。

邵宗文笑。



http://picx.zhimg.com/v2-0f219da42684e62ea898af44eba1e55d_r.jpg?source=1940ef5c


不过,腾讯视频熬了这么多年,好不容易等到了“诺曼底大反攻”,数据库绝对不能掉链子。于是,他们一点点升级技术——在数据库内部“多走一步”,用人工智能给视频先打好基础标签,再交给业务同学进一步筛选。这样不仅降低了数据库的频繁访问,还能减轻业务同学的负担。

一个数据库团队搞起了人工智能,这听上去就好像厨师放下了菜谱,研究起了《孙子兵法》。

2016年,搜狐搞了一次“图文匹配大赛”,参赛队伍面对10w个文章和10w张图,要用人工智能自动为每一个文章匹配相应的图。你可能看出来了,这就是一个典型的“打标签”应用场景。结果邵宗文带队参加,不小心在400多支队伍里拿了第10名。。。



http://pic1.zhimg.com/v2-713f6052866615741c10931b4cb2567f_r.jpg?source=1940ef5c
弱水三千就是他们

搜狐的童鞋看着这几个陌生的面孔,一拱手:“还没请教几位是何来历,怎有如此身手?”

邵宗文羞赧地摸摸头:“对不起,我们是搞数据库的,有点乱入,承让。。。”

世上没有白走的路。数据库团队骚骚的人工智能水平,日后也在关键时刻强势“报恩”,帮助他们扛下了一场场突如其来的硬仗。

2017年的时候,某女艺人突然被爆出轨,网络爆燃,瓜众纷纷搜索和她相关的视频和报道。数据库团队接到任务,为了应对搜索,要把之前与她相关的新闻全部找出来。无论多早,哪怕是清朝的报道都可以。

由于早年的报道和视频,很多都被放进了“冰箱”——冷数据库,所以要有一个“解冻”的过程。这个过程如果手动操作,虽然不难,但颇要费一些时间。不过,因为有人工智能打好的标签和成套的自动化工具,数据库团队真的只用了十分钟就完成了任务。



http://pic1.zhimg.com/v2-fde98a36a73b1dcdeb1d45ae32845907_r.jpg?source=1940ef5c


这次事件,数据库团队的“人工智能运维系统”功不可没。

尝到了人工智能的甜头,团队的“野心”开始膨胀,他想试试做出一套全世界最智能的数据库运维系统。

这就是 DBbrain。

在 DBbrain 里,人工智能被用到了极致。它可以根据一个业务的爆发态势,预测数据库将要面临的压力,从而自动生成一个数据库运维策略。

这大概就像一个体检医生,可以预测你未来几个月可能出现的身体状况,然后提前帮你做好预案,开好药方。到时候不出问题当然更好,如果真出了问题,只要冷静地执行预案,也会化险为夷。

举个栗子。在 DBBrain 还在研发的时候,就曾经紧急派上了用场。

2018年,腾讯视频大爆发,把一个节目以决绝的姿态烙刻在所有人脑海里,那就是《创造101》。



http://pic1.zhimg.com/50/v2-2a2fa74173ceefd9d35c424ea3857d65_720w.jpg?source=1940ef5c


那个周末,粉丝们涌上平台。由于缺少和饭圈儿“斗智斗勇”的经验,并没有对系统做特殊保护,瞬间数据库压力巨大。

这个时候,还在内部试用阶段的 DBBrain 给出了建议:自动扩容、数据同步降级、热点前置、代理层上推。数据库团队马上确认了这个建议,一秒钟,新配置生成。数据库承受的冲击断崖式下降,惊险地挺过了“饭圈儿”这一波“人肉冲锋”。



http://pic1.zhimg.com/v2-a5025979701218090521428293d01107_r.jpg?source=1940ef5c


这种操作,就像足球比赛的时候,运动员不幸受伤,但是可以打一针封闭,帮助他带伤踢完全场。赢下整场比赛。

互联网技术的发展,把无数原本独立的个人粘合成了新的物种,就像天空中铺天盖地的鸟群,实时变换着姿态和方向,他们的行为越来越难预测,他们的冲击力也会越来越疯狂。

人工智能的意义,恰恰就是为了应对这种不确定性。

越是紧急时刻,DBbrain 的自动化和智能化优势就越会凸显。机器永远没有情绪,机器从来临危不乱,机器可以同时执行一万项操作而滴水不漏。

尘埃落定,不妨回头看一眼腾讯视频。

2019,腾讯视频似乎已没了性命之虞。在当年的三季报中,付费用户超过了1亿人次,和爱奇艺等量齐观,优酷土豆很久没有公布会员数,被业内认为落后于两个对手。

那一年,腾讯视频的同学们拼死不下牌桌,终于等来一个凶猛的春天。

而作为亲历者之一,邵宗文在腾讯2018年著名的“9·30变革”前后加入了腾讯云与智慧产业事业群(CSIG),团队的 DBbrain 也推出了云上的版本,除了服务腾讯内部业务,还在腾讯云上对所有创业者和数据库人提供服务。

如杜工部所言:安得广厦千万间,大庇天下寒士俱欢颜。



http://pic1.zhimg.com/v2-829aee47375580dc6bf911c9e180345d_r.jpg?source=1940ef5c


(四)无尽的战役

人说腾讯不性感。

这话没错。

我特意翻了一下腾讯云的产品页面,“腾讯 SQL 数据库”、“TcaplusDB”、“DBBrain”这些名字就那么沉默地躺在那里,甚至没听过的人想把它们读对都很困难。鲜有人知道这些数据库曾经从硝烟中走来,他们是和子弹擦肩而过的战士。

腾讯的这些老师傅,当年曾面对微信春晚红包的刻不容缓,曾面对《王者荣耀》千万人的游戏狂欢,曾面对腾讯视频的艰难抉择和生死攸关。

他们只是在和一个个具体又棘手的问题殊死缠斗,无暇抬眼,却不小心汇入“国产数据库”的发展洪流,成为历史本身。

这两年,腾讯游戏随着一带一路的步伐开拓海外市场,Tcaplus 数据库也随之服务全球玩家。部署遍布东亚、东南亚、南亚、北美、南美和欧洲,各种网络环境都能平趟。

在印尼,受限于机房供电条件,张世维平生第一次遇到了主数据库和主备数据库同时掉电的状况真实发生。然而,团队多年的技术并没有让他失望,冷备数据库沉着地启动,半小时内,游戏恢复了对外服务,一切都在掌握之中。

张世维从外企一路走来,亲历了数据库领域从外企绝对垄断,到今天被国产数据库松动消融。亲历了一代技术人从不被理解到受到尊重。

之前有朋友和他开玩笑说:“你做游戏数据库,对国家有什么贡献?”

张世维回答:第一,我在带给人快乐。第二,我在打破技术垄断。第三,我们在践行一带一路战略。如今,吹过的牛逼正在一一实现。

邵宗文也在见证历史的变迁。

2019年,DBBrain 被好几家著名的电商平台请去做数据库的“私人医生”——在“618”和“双11”大促之前,自动给数据库做体检;在大促的过程中,遇到异常就会实时发送警报和处理建议;如果出现了意外故障,则会根据故障的情况,触发不同等级的“降级策略”。

自己十多年的血泪经验,总结成为“数据库运维产品”,让创业者和数据库攻城狮们哪怕少踩一个坑,有更多时间吃顿热饭,陪陪家人,都让老司机邵宗文觉得善莫大焉。

程彬回想自己当年加入腾讯,其实面试的是QQ后台的职位,但他的简历被数据库的领导相中,硬是抢过去做了数据库。开始程彬觉得特别委屈,但是三个月以后,他发现在食堂里和一起入职的小伙伴讨论技术,他说的内容越来越硬核。那一刻他才意识到,自己在做一项艰难却光荣,折磨人也磨砺人的“硬技术”。

2019年,程彬和团队同学们在之前数据库的经验基础上,又研发了最适合云计算架构的关系型数据库 CynosDB,把云计算的架构发挥到极致,把创业者的成本继续降低。

临别前我问程彬:这么多年,挺过这么多风浪,最难的是什么时候?

“现在。”他脱口而出。

我曾经在《壮年腾讯》里做过这样的比喻:

当年5岁的腾讯,是一只卖萌的企鹅,所有人都会夸耀他的美丽聪颖,也会对它的任性有所忍让;但是如今腾讯已经21岁,这个家的屋顶他要修,这个家的煤气罐他得扛。技术探索的路从来就是风雪交加的长征,这一仗,企鹅军团无法“按Q退出战斗”。

时至今日,腾讯的数据库的老湿傅不再是只支撑内部的团队,他们面对的,不仅有同样从战火中走来的阿里华为,也不仅有在商业数据库市场盘踞多年的甲骨文、IBM,更有成千上万活生生的用户,带着他们千奇百怪的需求和期待的眼神。

数据是数字世界的基石。数据库的三场战役,也是腾讯在“新基建”中的摸索。在风浪里逆行并不容易,这是一个卷帙浩繁的“无限战争”,需要“耐心”和“敬畏”。而这两种品德,我们只能从历史中获得。这也是我们需要不时回望来路的意义。

时间如一条奔涌的大河。我们之所以独一无二,不是因为此刻的漂流,而是因为我们知道自己从哪里来,知道自己将要向何处去。



http://picx.zhimg.com/v2-52696b700a21d070c424fb01e649fb1f_r.jpg?source=1940ef5c
史中:阿里巴巴“数据库侠客”:此行路远,不问归期阿里巴巴“数据库侠客”:此行路远,不问归期

文|史中
有人曾在网上回忆自己的故事:
大约两年前,我买了《动物之森》这款游戏,玩了一个月就有点厌倦了,于是我把它教给妈妈。妈妈从小得了小儿麻痹,后来变成多关节硬化。除了每月一两次必须的购物,她几乎不出门。我让她在游戏里建了一个家。想不到她竟然沉迷于此,这么大的人每天玩游戏,连我都觉得有点丢脸。
直到有一天,她的病情恶化,不能再玩了。一年后,她去世了。又过了很久,我突然心血来潮,想去看看妈妈建立的小村庄。里面的杂草长得好长,村民们也都在问我妈妈这段时间去了哪里。
我打开信箱,发现里面都是未读信件。其中有一张是生日贺卡,信里写着:儿子,当你看到这封信时,我应该不在了。但是没关系,你将来偶尔回来看看,应该会发现我给你的生日贺卡。我在游戏里赚了一些钱,足够每年都给你买一张生日贺卡。对不起生病了,没能好好照顾你。你要坚强,我会在天堂看着你。
赛博世界并不是辽阔的荒野,数据也不全是冰冷的记录,它是亲人的笑靥,它是我们的记忆。



http://picx.zhimg.com/v2-30fe951394c8f066924a043f81fd3d12_r.jpg?source=1940ef5c

(一)田园时代
假如互联网有记忆,它也许会怀念2005年。
这一年,淘宝网两岁,但它已不像一个婴儿。一望无垠的货架上陈列着800万件商品,日均浏览量超过9000万次。
这一年,马云和杨致远喝了“有史以来最贵的一杯清酒”,换回雅虎中国全部人马和10亿美金,准备随时划破黎明,吹响对 ebay “决战”的号角。
这一年,遥远的北方,王坚在神秘的微软亚洲研究院,孤绝地探索听上去颇为可疑的“大数据技术”。
这一年,英雄如满天星散,一切像平静的雪。
但杀机总是暗伏。
现在回望,当年阿里巴巴被极速缩小的“互联网毒圈”推向战场的中心,黑暗森林的另一边,潜伏着盛大、网易、百度、腾讯数位绝世高手。还来不及褪去草莽气息的阿里,迫切需要几条顶级的枪镇楼。
有件事儿再明朗不过:
一个合格的商人,得随口说出自家所有货物的特点、型号、价格。这得靠一个天赋异禀的“好记性”。
一个合格的电商,更要实时给出亿万件货品的图片、描述、优惠。这得靠一个打磨精良的“数据库”。
多说一句,很多人听到“数据库”就会觉得无聊,其实蛮有趣的,它和人的记忆有两点相似:
1、要在最短的时间内把有用的东西“记住”;
2、要在最短的时间内把需要的东西“回忆”出来。
听上去简单,但能把这两件事儿做好的数据库凤毛麟角。



http://pic1.zhimg.com/v2-352c9172a6059dbdb2d0c982771a908b_r.jpg?source=1940ef5c

马云和淘宝创始团队


2005年,数字世界的“好记性”只有一个选择:美国甲骨文公司的 Oracle 数据库。
当时的阿里巴巴有三个儿子:大儿子——阿里巴巴B2B网站、二儿子——淘宝、三儿子——支付宝。就像今天所有望子成龙的家长一样,当然要给他们吃最好的,用最好的,补习班也上最好的。
于是,三个儿子都迫不及待地装备了甲骨文的数据库系统。
如果说一般的数据库系统是奥拓夏利拖拉机,那么 Oracle 无疑就是数据库界的劳斯莱斯。买得起劳斯莱斯的人本就不多,会开劳斯莱斯的老司机就更加凤毛麟角。
数据库系统的“司机”被称为 DBA(数据库管理员),当时全中国的 Oracle DBA 加起来也没多少。事实上,这些大神们彼此之间也非常熟悉,经常聚餐撸串。
买了这么多劳斯莱斯,老司机不够用了,阿里巴巴很急。就在这些大神散落在阔绰的外企和安逸的国企里过着舒服的日子时,突然窜出一个好汉大声呼喊:外企和国企给多少?我阿里巴巴以后给三倍!
这一声吼彻底搅动了中国数据库的历史。
DBA 大神云集响应,天下英雄尽入彀中。说实话,钱,彼时这些咖们是不缺的,让他们感到振奋的是这片无远弗届的“新战场”。
鲁国良、冯春培、拖雷、七公、张瑞、后羿、楼方鑫等等一众人马从四面八方赶来,带着自己最的拿手绝活,准备大干一场。
张瑞回忆,自己从西门子被介绍加入阿里巴巴时还很年轻,面试他的四位大神都是业内“神兽”级别的人物。回家以后激情澎湃,立马开始收拾行李准备搬家到杭州,媳妇拉都拉不住。



http://pic1.zhimg.com/v2-e96c10257a67f0f0ad48b21f822022d5_r.jpg?source=1940ef5c

张瑞


DBA 们把自己当做那个时代的哥伦布。
用张瑞的话说,当时的阿里巴巴是“生机勃勃的乱七八糟”,拥有一种和外企完全不同的诡异技术氛围。这并不难理解:这家新兴互联网公司正在全速扩张商业版图,背后的数据库当然也会以几何数级增长。
他们每天没日没夜地研究 Oracle 系统,把技术文档倒背如流,完全是因为他们觉得:自己对探索技术世界新大陆负有不可推卸的责任。
张瑞加入的第二年,另一位 DBA 大牛后羿从江苏电信被挖到雅虎中国,后来随着业务调整汇入淘宝。我让后羿形容一下 2006 年的阿里巴巴数据库,他只说了两句话:“国内数据量最大”,“国内数据并发最高”。
在吟游诗人的章句里,那一定是数据库的“田园牧歌时代”。
作为阿里巴巴的核心技术人员,DBA 大神们拿到了丰厚的报酬。2006年七公第一个买了宝马3系,大家开车出去喝茶。以至于人们都艳羡地口耳相传:听说了吗?阿里巴巴数据库的人都开宝马!

(二)魔幻时代
正如纪梵希的西装不能配老北京布鞋,倾城佳人不能坐在自行车后座上,Oracle 也不能运行在随便攒出来的“妖艳贱货服务器”上。
Oracle 的标配是 IBM 生产的小型机和 EMC 生产的存储硬件。
不少老员工至今都记得,阿里巴巴迎来全中国第一台 IBM 小型机时候的场景。“最高配的 P590,锅炉一样高的黑色大柜子。放在机房其他的机柜旁边,鹤立鸡群。”
跑在小型机上的 Oracle 数据库,速度快到根本不用做任何优化。就像在大草原上开车,闭着眼睛油门踩到底也不会翻车。一众 DBA “老司机”,恨不得围着小型机跳起图腾崇拜的舞蹈。
事情由此开始变得魔幻。
一台小型机就要500万,两台小型机就要配一个300万的 EMC 存储。2006年,正迎来史诗级喷发的淘宝网,小型机先是一台一台买,到后来干脆一排一排买。很多 Oracle、IBM 和 EMC 的销售们,都在很短时间里升职加薪,走上人生巅峰。
依赖是一种柔软,更是一种锋利。
世界第一次对阿里巴巴露出爪牙,是2006年。
就在最早两台小型机进驻机房的三个月后,故障毫无来由地降临了。小型机突然宕机了!
工程师们后背一阵发凉。随即而来的事实更让人绝望,业务宕机,每秒损失都在扩大。但一众工程师面对这台怪兽,不仅没人会修,甚至没人敢动它。感谢上帝,就在宕机的第40分钟,IBM 工程师正在从北京飞到杭州的万米高空时,小型机自动恢复了运转。
自家的设备出现问题,却得依靠设备厂商来拯救;一堆中国顶级工程师面对数据库的生死劫难,居然束手无策。这简直是对彼时中国互联网的绝妙讽刺。
就在这天晚上,完整经历一切的张瑞睡不着觉,他懵懂地问了自己一个问题:搜索技术靠雅虎,数据库靠甲骨文,服务器和存储靠 IBM 和 EMC,那阿里巴巴是什么?
这确实是直击灵魂的一问。
历史的剧情从不拖沓,这一问用不了多久就会有人来回答。2008年9月,在马云的邀请下,王坚从微软亚洲研究院动身,南下赴杭州。



http://pic1.zhimg.com/v2-dee8ebe91e0cc227efe9822dcff9e315_r.jpg?source=1940ef5c

王坚


(三)暗黑时代
2009年,阿里巴巴的 Oracle RAC 集群节点数达到了创记录的20个,亚洲第一。
这个数据还被做成了广告,骄傲地放在了首都机场的墙上,闪耀着刺眼的光芒。
光鲜背后,逆流暗涌。
作为当时淘宝数据库团队的一员,后羿已经连续好几个星期没有睡一个完整的觉了。20个 Oracle 集群组成了一个“巨婴”,不知什么时候会啼哭起来。
Oracle 是一个商业软件,它就像一个黑盒子。平均每周都要出现三四次问题,但无论多么精巧的工程师都撬不开它,更不用提修理它。
“唯一能帮助你的人——Oracle 技术支持人员——在一万公里以外,这有多荒唐。”后羿苦笑着对我说。
团队只能连夜值班,出现问题第一时间反馈给甲骨文总部,然后一边力所能及地拖延故障的发展,一边等待前方救援。由于时差的原因,对方返回结果的时候,很可能已经过去了一整天。大部分时间,DBA 团队所能做的唯一一件事情就是:祈祷。
而从阿里巴巴首席架构师王坚的角度看,一道更大的裂痕正在显现。
一方面,买机器的速度根本赶不上业务的发展速度;
另一方面,面对业务提出下个月要做大促的要求,那些技术大神经常连连摆手。数据库暴露出不适合互联网业务的致命弱点——无法弹性扩展——大促时数据库不够用,结束后又浪费。
这本质上是时代和工具的错配。
讲真,上帝的时间观念有时不那么强——祂为你关上一扇门之后,不知何时才会为你打开一扇窗。但在历史的烟尘里,后羿的运气并没那么差:
彼时平民化的 X86 服务器技术开始突飞猛进,SSD 闪存技术也飞速成熟。焦头烂额的后羿悄悄和几个同事们进行了验证,在平民服务器上跑免费的开源数据库,性能虽不及 Oracle,但也绝没有想象中不堪。
一瞬间,有些念头在他心里闪过,但随即又被他自己掐灭。



http://picx.zhimg.com/v2-1153dfa0d2fec03aba722d24fda87397_r.jpg?source=1940ef5c

后羿


同一年,北京,阿里云工程师写下第一行代码。王坚开始履行对马云的承诺:为阿里巴巴输入技术的基因。
站在技术的潮头,王坚望尽大江东去;他唯独没看到,自己的命运跌宕才刚刚掀开扉页,他恐怕更难预料,多年以后自己将会以怎样的姿态出现在无数技术人的回忆录中。
当年12月,后羿代表数据库团队和他的老板振飞一起,向王坚提交明年的预算。
他们两个人内心都是打鼓的,明年要买的数据库、小型机、存储,加起来的开销之大,连看一眼都要心跳半天。
为了让自己看起来不是那么面目可憎,后羿在汇报结束之前,小声跟王坚提了一句,“要是太贵的话,我们有没有可能用开源数据库和平民服务器来替换 Oracle 和小型机?”
没想到博士(王坚)当即拍板:“就该这么干!”
“2010年以后,再也不购买小型机。”这句话就这么白纸黑字地写进了阿里巴巴的公司战略,振飞后羿签字画押。
后羿在工位上坐到了半夜。
暗夜窗外,月亮升起来,他似乎听到了什么声音。像是开源数据库的新生啼哭,又像是 Oracle 的最后挽歌。
开了半辈子“劳斯莱斯”,方向盘上的每一条纹理都稔熟于胸,闭上眼睛都能想象出按钮的陈设,闻到真皮座椅的气味。
那是一个 DBA 工程师用最好的年华换来的骄傲。如今自己真的要亲手砸掉宫殿一般豪华的 Oracle,转投一砖一瓦从零搭建的开源数据库吗?
退一万步,即便自己能接受这个人生的重大变革,但他凭什么替团队四十几个兄弟们做决定?
然而,决定已然不可辨驳。王坚的眼神里,闪烁的不仅是阿里巴巴数亿的成本节省,更是中国互联网的十年技术未来。后羿明白,自己正载着四十多个 DBA 兄弟冲向万丈悬崖,手中的方向盘已被拆掉。
一觉醒来,太阳照常升起,世界已地覆天翻。



http://picx.zhimg.com/v2-95794d0650824f2d43ad4ec7a98b48cf_r.jpg?source=1940ef5c

杭州华星路创业大厦8楼,后羿跟兄弟们的“坦白局”。
放弃 Oracle,转投开源数据库!这不是讨论,这是决定。
憋了好久,后羿的话终于还是像一点星火,引爆了炸弹库。
“后羿,你TM今天不给大伙说清楚,就别想出这个门!”一位同事堵着门,所有人都站起来,局面眼看就要失控。
后羿努力克制着自己的颤抖,说:
“半年多了,我们所有人几乎天天半夜两点起床排除故障。但我们能做的只是把故障写成报告汇报到国外厂商。在别人眼里,我们是中国最好的技术人,但回到家里,我们叫天天不应叫地地不灵,这种无法掌握自己命运的感觉,你、我还能承受多久?
这几天,我们的故障三天两头就会影响到淘宝的业务。业务同事生气我们的气,我怎么能怪他们?因为保障阿里巴巴的核心数据库就是我们的职责啊!我们不怕苦,但每次都给其他数据库厂商做陪练,这有什么意义呢?
淘宝的数据量明年不知要翻多少翻。现在已经危如累卵,再把数据库的规模加大十倍百倍,只有天知道会发生什么故障。如果今天我们不砸自己的饭碗,明天连淘宝的饭碗可能都没了!阿里巴巴几千兄弟们都在靠着我们,我们不能退啊!”
后来,这一幕成为阿里巴巴历史上一再被铭记的标本。但在当时,剧中人又何以知道未来的走向。
你以为后羿舌战群儒,瞬间折服众人了吗?别逗了,那是小说里的情节。团队最大的善举只是放后羿活着走出会议室而已。一些工程师懵懵懂懂,愿意跟着后羿先试试,另一些人看到后羿决心已定,走出这个门,就已经开始投简历了。

(四)长征时代
投身开源数据库的长征路开始了。
你可以想象一下, 那些 Oracle DBA 大神就这样在小屋里抽着闷烟,捧着一本《MySQL 开源数据库进阶》时而哀叹,时而恍然,时而咬嘴唇嘬牙花子,是一个怎样的场景。
一个先锋敢死队火速建立了——“MySQL 学习讨论小组”。所有人每周三次在会议室里交流技术,分享心得。几个月后,好多同学都开始感慨,好像开源数据库也不像老虎那么可怕。
经过周密考虑,这个浩大的工程先从淘宝“商品库”开始替换。
理由如下:
“商品库”是淘宝系统里最大的一个核心数据库,存储着所有宝贝的描述、价格、评价。
虽然犹如一辆赛车在全速前进中更换引擎,牵一发而动全身,但是商品库的日常读多写少,通过前期的拆分,写部分都已被剥离出来,逻辑相对好掌控。
这已经是所有选项中最稳妥的选项了。
2010年1月,淘宝商品库开始了如非洲角马一般浩荡的迁徙。此岸土地开始干涸,彼岸水草逐渐丰美。阳光刚猛,波涛壮阔,勇者争渡,懦者哀鸣。
此时,故事里的另一位主角才姗姗来迟。他就是日后被人们称为“霸爷”,并且一众码农专门为他创建了“拜霸神教”的褚霸。
如果非要形容,我觉得褚霸像个“数字屠夫”。
这位网易工号25,迅雷工号前10的技术大神手里常提一把血淋淋的刀,一边“庖丁解牛”般把程序解剖成底层电路上的嘶嘶电流,一边看向围观震惊的吃瓜群众,摆出一副“都坐下,都坐下,这是基本操作”的傲骄表情。



http://picx.zhimg.com/v2-2c0079e90ba7423a9511559cdcb6a54f_r.jpg?source=1940ef5c

褚霸


2010年5月,褚霸加入大神章文嵩领衔的“淘宝核心系统部”。
仅仅一个月过后,老板章文嵩就找到他说:“后羿那边在用开源数据库替换淘宝的商品库,遇到一些底层问题,想让你组建一个小分队去支援一下,你有没有信心?”
“有!”
能用一个字解决的问题,褚霸绝不说两个字。
你可能难以想象,说出这句话的时候,褚霸根本没做过数据库。他特别熟悉的是网络方向,而存储方向的核心技术是“I/O”(输入输出技术)。打个比方,一个是神经科,一个是脑科,完全不是一个领域。
褚霸去问当时内核组负责人伯松:“这个 I/O 要搞明白,一般需要多久?”
伯松抬抬眉毛,冷静地说:“有生之年能搞懂就不错了。”
褚霸嘴张得老大,一时无语凝噎。不过几分钟以后,他就下定决心:老子混了十一年开源社区,还没听说过哪个技术要花一辈子时间。既然是“I/O”先动的手,那就来吧,不服就干!
凭借“江湖嗅觉”,他很快就“捞”到一位大神,这位大神是 Linux Kernal“I/O”这部分核心代码的贡献者,而褚霸发现他还同时开发过一个 I/O 测试工具。
“这就像汽车设计师本人开发了一个修车工具,这里面检测的参数肯定个个都有用啊!”褚霸想。
于是,就从这个测试工具入手,褚霸一头扎进了 Linux Kernal 上千万行的代码里。那段日子,昏天黑地。每一个参数褚霸都反复测试,确信搞明白了才去看下一个。经常一抬眼就已经到了凌晨三四点,刚躺下又突然意识到刚才理解错了,从床上弹起来继续看代码。
如此疯狂。几个月后,褚霸终于成功地。。。。进了医院。
从医院回来不久,褚霸就像《功夫》里那个筋脉尽断又重新生长的周星驰,突然恢复了全部元气。用他的话说就是:“闭上眼睛,就能想象出整个系统的齿轮是怎么转的。”
后羿带领的数据库研发团队和褚霸带领的志愿军,每周都会在一起交流。褚霸把脑海中那些零件一点点拆开讲给后羿团队听,后羿会把核心技术消化之后用来攻克难关。
于是,开源数据库 MySQL 的一个阿里巴巴专属分支 AliSQL 就这样被雕刻出来。
经历了九九八十一难,2011年7月,淘宝商品库终于完成了从 Oracle 到 AliSQL 的大迁移。这意味着软件替代方案被验证成功。
与此同时,硬件替代方案也在不停验证。
AliSQL 团队查验了当时世界上所有主流闪存、硬盘、计算芯片、网络芯片的性能,协助团队设计了一套兼顾网络性能、存储性能和成本最优的服务器采购方案。
软硬兼备。通往下一代数据库的大门,终于被技术人的血肉之躯撞开。整体迁移只待一声令下。
王坚拍板,从最早的那台小型机,到一年前刚刚购入的最后一台小型机,从此刻开始同时进入退役序列。
接下来,整个阿里巴巴集团进入了 2012-2013 年史诗般的整体大迁移。



http://picx.zhimg.com/v2-d540369149e2585291b6fdfcaed898d2_r.jpg?source=1940ef5c

(五)末法时代
历史的浪潮滚滚向前,但每一朵浪花却有不同的命运。
自从王坚宣布“数据库大迁移”从淘宝商品库扩大到全集团以来,阿里巴巴内部反对的声音开始逐渐弥漫。
一些元老对于新技术并不信任,他们反复在高层会议上表示:用开源数据库替代 Oracle,有意义吗?
阿里人并不会从私利出发考虑问题,反对派技术人也不是阴谋家,他们只是阿里巴巴体内的“白细胞”,有义务用自己的专业知识,保证阿里巴巴这条大船不会被几个激进的“开源技术原教旨主义者”弄沉。
历史很有趣。
用望远镜回望,一段岁月是创新和保守的美妙制衡;
用显微镜查看,那却是每人每日的拼死角力和煎熬。
2012年,是阿里巴巴历史上打不开的结。
中哥在《阿里云的这群疯子中》曾经写到,彼时的王坚,高处不胜寒。承载了他二十年技术理想的飞天系统屡次“试射”失败,阿里云摇摇欲坠。如此激进的数据库替代战略,也顺理成章地被认为是危险的。
但上帝是个公平的庄家。你要是相信未来,不用多说,只需要在生命的赌盘上不断加注。
在不同的会议室里,在不同的场合,在不同的时间。面对质疑,后羿看到王坚沉默,看到振飞沉默,他唯独没有看到任何人为理想停下哪怕半步。
AliSQL 数据库就这样一点一滴地渗透进集团的每一个服务中。
2012年,全淘宝最后一台小型机宣布下线。这本来是一个史诗级的时刻。遗憾的是,那正是两条技术路线交锋最激烈的日子。现场只有四五个人,后羿组织大家认真地拍了一张合影。时间无声,这至少是一场对自己的交代。
同年,还发生了一件影响深远的“小事”。
阿里巴巴“大儿子”B2B团队和“二儿子”淘宝团队合二为一,后羿接管B2B数据库团队。
淘宝网已经被“蹂躏”完毕,而阿里巴巴B2B团队的数据库团队还懵懵懂懂。此时已经没有什么可以动摇后羿的决心。
长痛不如短痛,他用决绝的方式推进阿里巴巴B2B的同事们从 Oracle 过渡到 AliSQL 数据库。结果是,20个 Oracle DBA,最终出走了15人。
内网上烽烟四起,一篇名为《淘宝的成功不可复制》的文章成为热帖,口诛笔伐如雨点袭来。
多难的技术都没有击倒后羿,但那一刻,他忽然觉得自己走不动了。
从 Oracle DBA大神,到 AliSQL 的开创者,后羿背负着沉重的理想走了六年。人人都说黎明在前,但天为什么永远不亮?人人都说梦想可贵,但真的要剖开胸膛才能让所有人看到自己的一片丹心?
那天,后羿对振飞说,“也许是我离开的时候了。”
这一击甚至也超过了振飞的预料。
当晚一家小饭馆里,振飞和后羿两家人坐在一起。“我不允许自己的兄弟功败垂成。”振飞说。烈酒入喉,过往的烟尘被马蹄扬起,在天地间飘荡。
振飞还是把后羿留下来了。
2013年5月17日,支付宝最后一台小型机下线,这也是阿里巴巴全集团最后一台小型机下线。历时三年,一场赛博世界的大迁移自此落下帷幕。
现场媒体拍下了这张照片。



http://picx.zhimg.com/v2-f1c49c26598edd372132bf3ac2f3c5ba_r.jpg?source=1940ef5c

阿里巴巴最后一台小型机下线


人们看到一排欢乐的脸蛋儿,谁又能知道,这背后又藏着多少人的过往,和那些岁月里碾不碎的挣扎和不甘。
无数在过去三年里把这件事变成可能的人,此刻像河彼岸升腾的焰火,映出众人的微笑。人们总是喜欢璀璨。而在焰火升起之前的漫长寒夜里究竟发生了什么,他们并无兴趣。

(六)钢铁时代
唯有热血换不来粮食,只靠勇敢赢不下战争。
2012年是“官宣”的世界末日,大多数人最担心的是12月21日,而阿里技术人最担心的却是11月11日。
因为这一天,阿里巴巴将第四次返回那个盛大的战场——“双11”。人们预测,这一年的淘宝天猫总销售额会超过100亿。100亿,一秒数一张,够你不睡觉数三年。
张瑞刚刚并入淘宝数据库团队,后羿就让他做“双11”数据库的总指挥。与此同时,刚好淘宝天猫的所有数据库都从 Oracle 替换成了AliSQL。
这意味着什么呢?张瑞就像一个转校生,刚领到新的教材,第二天就要参加高考。这太刺激了。
100亿的成交额,意味着数据库里的一条热点记录,每秒钟最多要被修改十几万次。什么样的钢铁数据库可以承受这样的蹂躏呢?
彼时,阿里巴巴还不具备“全链路压力测试”的能力。换句话说,谁都没办法把“双11”可能遇到的情况完整演习一遍,只能靠局部测试甚至大脑里的思想实验来推演,摸着石头过河。
11月11日,大战来临。
零点钟声刚敲响,巨大的数据洪流涌向阿里巴巴的服务器,资源占用数值直线拉起,所有人的目光都随着曲线向上抬升。几秒钟过后,数据库资源占用值像一辆失控的赛车,径直撞向100%。
张瑞脑中一片空白。
如果2012年“双11”零点前后你正在参与剁手,一定会记得,有那么半分钟,所有的页面都卡顿在半空。
就在同一时刻的杭州,阿里巴巴内部的数据迅速淤积,发动机已经被烧红。这套即将崩溃的 AliSQL数据库,背后是无数人的赌命奋战。它太贵了,贵到没人能承受失去。
大家都在看着总指挥李津,只等他下令,拍停数据库,拍死兄弟们无数个白天和日夜。
只见李津站起来,大喊:“大家都别慌!”
所有人的手就这么悬在半空,一秒、两秒。。。主屏幕上的成交数据突然开始松动,缓慢抬升。数据库里的记录每秒都被十几万次海啸疯狂地冲刷。一点一点,数据库的运转速度,缓慢而坚定地追上了全国人下单的速度。之前一分钟淤积的数据,也在被消化。
一切安然度过,仿佛一场鹅毛大雪抚平了地上的一切沟壑。
有人回头,看见后羿站在角落,他正望向窗外漆黑的夜空。
那天没有月亮。
2012年“双11”,成交额定格在了191亿;2013年“双11”成交额达到了350亿。



http://pica.zhimg.com/v2-43b0d7977ecb55b8ccdfdfcddb25870e_r.jpg?source=1940ef5c

2012年“双11”
(屏幕上为一小时成交数据)
就在2013年“双11”结束之后半个月,甲骨文找到了阿里巴巴。根据你们“双11”公布的成交总额,你们的 Oracle 数据库用量肯定不少,算下来比你们实际购买量多多了!这边补下钱吧!
你无法想象,甲骨文拿出来的账单有多大!
后羿对我回忆。
阿里巴巴这时才告诉他们:对不起,我们的核心数据库已经从 Oracle 替换成了自己开发的 AliSQL。
甲骨文的同事根本不相信,一家中国的企业用三年时间做好的开源数据库,居然能达到甚至超过美国老牌企业有三十年技术积淀的 Oracle 系统。直到阿里拿出了非常强的证据,他们才接受。
这时,阿里巴巴的很多高管和同事才开始后怕:如果三年前没有启动自研数据库计划,今天谁能有勇气面对甲骨文的这张账单?

(七)黄金时代
2011年8月,毕业于北大计算机系的鸣嵩来到阿里。
相比褚霸的怼天怼地,鸣嵩显然是个学院派。如果说褚霸手里挥着屠刀,那么鸣嵩手里捏的就是手术刀,他们俩都会庖丁解牛,姿势却大相径庭。
在北大的时候,鸣嵩曾经深入做过国产处理器研究,这段经历给他的大脑烙上了两个不可磨灭的钢印:
1、我们的理想是:中国人拼死都要有自主技术。
2、我们的现状是:国外的技术论文读起来真香。
加入阿里巴巴之后,鸣嵩开始研究数据库技术。他沿着国外的技术论文的脚步,一边啧啧称赞,一边刻苦研读;至于有一天中国人自己的数据库论文也能被美国人学习,那是万万不敢奢望的。
说回褚霸。
彼时阿里巴巴掀起的“去 IOE”活动已经在全国蔚然成风。很多充满野心的互联网企业和大国企都想去掉 Oracle。于是,褚霸被邀请到腾讯,专门讲述开源数据库的调优技术。
我以为就是几十人一百人的报告厅。没想到到了腾讯,台下1000多人,黑压压地望不到头。人家还告诉我,另外有2000人正在线上看着你。我站在台上,紧张得30秒都说不出一个字。
褚霸回忆。
话匣子一旦打开,紧张感就消失了,那个提刀怒吼的霸爷灵魂附体。演讲像一阵台风,吹得现场观众心花凌乱,掌声如潮。褚霸还没从腾讯回来,阿里巴巴内部就已经有同学建立了一个旺旺群,名叫“拜霸爷神教”。
从此,隔三差五就有人给褚霸送一个小礼物,附上纸条“拜霸爷”;有同事去旅游,还在海滩上用脚写上“拜霸爷”发到群里。。。
就在霸爷走上人生巅峰的时候,阿里巴巴历史上的两条伏线,此时迎来了一次“握手”。
看过中哥《阿里云的这群疯子》的童鞋也许还记得:2013年,阿里巴巴遇到了一个生死劫。
阿里巴巴赖以仰仗的算力调度系统——阿里云“飞天”卡在了研发中最艰难的时刻。真正要命的是,集团内很多业务已经开始向阿里云迁移。如果飞天系统在短时间内难以冲上5000台集群的调度能力,阿里巴巴的诸多业务都将停摆,后果不堪设想。
彼时的王坚正在河流最湍急的漩涡里,他横下一条心,宁可一辈子背负“骗子”的骂名,也要死死托住飞天。
千钧一发之际,章文嵩决定派出自己“核心系统部”的精锐部队驰援阿里云。
多隆、褚霸、鸣嵩等一众底层系统大神云集响应,上午接到任务,下午就去阿里云解 Bug。三个月不眠不休,终于在阿里巴巴集团算力撞到预测极限的前一周,惊险地把飞天推上5k。



http://picx.zhimg.com/v2-18139b161616f52c523a24e18537f358_r.jpg?source=1940ef5c

为了纪念飞天5K,云栖小镇专门树立了一尊雕像,这是2013年王坚在为雕像揭幕。


这次惊险一跃之后,褚霸任阿里云数据库“RDS”的负责人,鸣嵩成为“RDS”首席架构师。同样在这一年,张瑞接替后羿成为了集团数据库团队的新掌门。

(八)太空时代
虽然很多人“拜霸爷”,但褚霸自己却会“拜王坚”。
以前会觉得,为什么王坚“吹牛”吹成这个样子?直到前两年我才理解了他的方式,这是“降维打击”。
如果你和别人在同一个层面死磕,这没什么了不起的。人家做到了80分,你最多只能做到100分。如果你上了一个维度,直接就比别人多了一个数量级,你做得再差,也比对手们强多了!
这种思维,直接激发了自研数据库 POLARDB的诞生。
如果此时拉开视野,会发现数据库市场本身就发生了巨大的变化。就如当时经典内燃机汽车迎来了史无前例的高峰之后,被迎面而来的电动车打了个手足无措。
经典数据库迎来了诸神的黄昏。创业企业直接用云上数据库,而存量客户也会想重演阿里巴巴去IOE。
仅仅是卖别人做的数据库这很好。但是,当你有机会自己去造出新的数据库当然更好。这是2014年RDS团队全体大会上的决定。
“数据库”和“操作系统”“中间件”一起并称为三大底层系统。阿里云的成功,和中间件的完美设计关系密切。然而,阿里巴巴无数大神拼了老命,用了几年时间才打磨出了阿里云精致的中间件。观摩过阿里云5K的“扒层皮”,褚霸还能这么轻松地喊出自研数据库,可以用胆大包天来形容了。
这个面向未来的数据库要叫个啥名字呢?褚霸一拍脑门决定:“就叫POLARDB!”
时间表很快被制定好了。2017年10月底,POLARDB要开始公测。反推回来,所有研发节点都被定死。
两年多时间,30万行代码,这场由鸣嵩领导的“数据库新长征”,就这样悄无声息地开始了。
鸣嵩回忆,2017年是最艰苦的一年。有两个多月,团队所有成员都是通宵赶代码。用他的话说:“大家每天下班都会遇到早高峰。”



http://pic1.zhimg.com/v2-4640ad82da10aefc1cb8b8638534da93_r.jpg?source=1940ef5c

鸣嵩


奇怪的是,那时候无论多累,就是没人偷懒,更没人提出离职、转岗。
当时团队有一位同学,早晨上班之后突然对鸣嵩说:“我老婆今天生孩子了,我请一天假去趟医院!”。牛X的是,他真的只请了一天假。第二天他安排妥当了一切,准时出现在工位上。
“为什么?”我问。
“阿里人不想做螺丝钉。”鸣嵩说。
2017年9月,POLARDB 盛大发布。
过去需要70个小时的10TB的业务数据创建只读副本,在POLARDB上只需2分多钟。更关键的是,它的成本只有商用数据库的十分之一。半年后,上千个用户用上了这个新数据库。



http://picx.zhimg.com/v2-191b771abfeb18759abe75b041ba1d53_r.jpg?source=1940ef5c

POLARDB 发布


双11的难关对阿里巴巴数据库团队的挑战仅仅是开始。
林子大了,什么鸟都有。99.9%场景下不会出现的bug,在阿里,就会出现。
淘宝交易的订单处理突破了地域限制,可能在北方区、华东区、南方区。但如果其中一地发生了灾难,怎么办?
这种特殊的业务场景要求数据要可扩展,持续可用、要强一致。因此,新一代数据库必须要包含几个重要特点:全球部署、对存储数据冷热隔离等。
这时候,我们不得不自己研究了新一代数据库了。
张瑞说。
说起来轻松,阿里巴巴过去几年数据库技术突飞猛进,从来都是有前人脚步可循的。如今,这些数据库大神们面前,真的是一片“荒原”。
“全球最顶尖的数据库人才,仍然在美国。为了自研下一代数据库,2017年我们几乎把美国数据库的人才挖空了。”张瑞回忆。
在他和另一位数据库大神圭多的推进下,一个自研的超大规模数据库系统 X-DB 就这样诞生了。短短几个月,X-DB就在集团体系内完成了MySQL、AliSQL集群的升级换代。
对阿里巴巴的数据库而言,2017年寓意非凡。正是从这一年开始,以大致胜的 X-DB 和以快致胜的 POLARDB 成为了阿里巴巴数据库的两款拳头产品。

(九)会师时代
三军易得,一将难求。
2017年10月,马云振臂一挥,在云栖大会上成立“达摩院”。誓要争夺未来10年的技术高峰。
19岁的阿里巴巴,已经有权“任性”,成为自己理想中的模样。但很多人没注意到:在细致的肌理中,因为公司使命的刷新,无数阿里巴巴人必须变得和以往不再相同。
从全中国最早最优秀的 DBA,到中国第一批研究开源数据库,再到自研数据库,一代代英雄前赴后继。从这时开始,研究未来的数据库的任务,将要落到达摩院肩上。
仅靠一腔热血不能换来坚船利炮。必须找一个真正有能力的人来带领实验室。如果没有牛人,达摩院数据库实验室的领导人职位宁可空着!
张瑞斩钉截铁。
李飞飞就这样进入了数据库团队的视野。
那天达摩院数据库实验室筹备组开会,团队有人提出,犹他大学计算机系的终身教授,世界数据库领域的顶级大神李飞飞是一个非常合适的人选。一打听,李飞飞此刻正在上海出差。
张瑞和圭多连夜坐火车去上海,仅仅聊天一个小时,张瑞就感受到李飞飞身上那种科学家少有的产业思维。
“这就是我要找的老板。”张瑞说。
后来,李飞飞加盟阿里巴巴,成为达摩院数据库与存储实验室的领头人。



http://picx.zhimg.com/v2-aef662c448bed199bbb6e126c7465999_r.jpg?source=1940ef5c

李飞飞(飞刀)


2018年11月,阿里巴巴集团 CEO 张勇发表全员公开信,宣布阿里云升级为阿里云智能。这意味着数据库的侠客们将重新团聚,兵合一处聚如团火。
所有人一致推选李飞飞成为新数据库团队的带头人。李飞飞大旗一挥,张瑞和鸣嵩两支团队合二为一。X-DB 走出“阿里集团”深闺,更名 POLARDB X,成为POLARDB的分布式版本,共同通过阿里云为社会提供服务。
李飞飞站在数据库科学的浪头,提出了未来的三个方向:
1、“自动驾驶”的数据库:
POLARDB 和 POLARDB X数据库已经可以在很多方面实现了自动化管理,但这还远远不够。数据库可以借助人工智能实现更加低成本地实现自动存储、自动检索。

2、“安全”的数据库:
在云上的数据库,天然要解决用户的信任问题。未来的云端的数据库需要有一把锁,用户手握钥匙,可以随时验证数据库的安全。

3、“新硬件支撑”的云原生与分布式数据库:
在非易失存储(NVM)、远程直接数据存储(RDMA)等等新技术的加持下,可能会让新的云原生和分布式数据库架构成为可能,把以前只能用“妥协”方式绕过的问题直接用技术解决掉。
坐在我对面,李飞飞眼睛里闪烁着一个科学家改变产业格局的雄心。
数据库是个“古老的领域”。它的本质就是对数据的生产、存储和消费系统。
为了这个目标,所有人都在不断探索对资源安全可靠快速调度的方法。于是,在漫长的时间里,数据库领域才会不断爆发新的技术点。
这是让我们这些老炮儿在数据库行业几十年都不觉得厌倦的根本原因。
李飞飞说。
从空中俯瞰,2019年阿里巴巴和蚂蚁金服的数据库百花齐放,POLARDB、POLARDB X、OceanBase、AnalyticDB、NoSQL、图数据库、时序时空数据库等等一应俱全,在技术光谱上,我们第一次拥有了不输给人和人的完整的生态。
2018年,在 Gartner 数据库魔力象限,阿里云成为国内首个入选的科技公司,与AWS、Google、Oracle 等国际大牌同台竞技。
在魔力象限的图表上,代表阿里云全部技术的只是一个小点,但就是为了这个点在象限里挪动哪怕一分一毫,无数数据库侠客付出了十年韶华光阴。



http://picx.zhimg.com/v2-2f95f3304b605b9fb873b532ae7e51d0_r.jpg?source=1940ef5c

同年,阿里巴巴在国际数据库顶级大会 VLDB 上发表论文介绍POLARDB的存储系统 PolarFS。
鸣嵩惊喜地发现,不久前这篇论文已经被旧金山大学制成了课件,用于给美国的学生授课。
而在即将到来的2019年国际数据库顶级大会 ACM SIGMOD 上,阿里巴巴数据团队又将发表介绍云原生分布式 OLTP 存储引擎 X-Engine。
从2009年到今天,十年的卧薪尝胆,我们从不敢说超越谁。但我们确信,中国人从来就不比别人差,我们已经和世界顶尖高手身处同一个阵营了。
鸣嵩说。

(十)那些侠客们
如果我们能够回到 2005,那里也许有座站台,火车头冒着蒸汽,像一个期待远方的孩子。
在接下来的五千多个日夜里,从受制于人的闭源数据库,到开源数据库,到追星逐日的自研数据库,那些数据库人肉身串演了一幕幕戏剧。
有时我想,他们挺幸运,因为他们见识了这个世界的美好和荒唐。但他们好像也是不幸的,因为这些美好和荒唐都发生在他们自己身上。
数据库工程师半夜起床的日子再也没了,自动化运维程序的精致让过去的热血蜷缩在日志里。吹过原野的风目睹了那些草莽英雄撤离战场,顶级院校的计算机大神扛起大旗。人们在曾经野兽横行的荒原上,建起了安静细密的城市。
如果现在不做技术研究,十年后,人们将看不到阿里巴巴。
王坚2009年的话犹言在耳,答案在空中飘荡。
历史曾有一万条岔路,阿里巴巴理应庆幸自己如今仍是互联网大潮中的一朵巨浪。而互联网浪潮,又是中国厚厚自传中的一章。
张瑞、后羿、褚霸、鸣嵩、李飞飞,这些人从人群的暗处走来,历史毫不吝啬地对他们行了注目礼。
他们是普通人,只是用自己千回百转的命运,把故事堆砌成了今天的样子。
从2009年到2019年,也有无数数据库人离开了阿里巴巴。
留着大胡子的老和尚在 2013 年“退休”,离开之前他说:感谢阿里巴巴,让我从此不再为了钱发愁。
那一时期“负气”出走的 Oracle BDA,也有很多人最终还是进入了开源数据库领域。也有离开阿里的人,过了两年带着新的认知重又归队。
有些人选择独立创业,大神拖雷创立袋鼠云、陈栋建立沃趣科技,他们开枝散叶,成为了中国数据库和各种数据智能系统的先驱,演绎着各自的故事。
人们终于明白,死生聚散恰是世界走向未来的方式。此生路远,莫问归期。
告别之前,我问后羿:“过去十年,你真的觉得值吗?”
他笑了,说:
时代的洪流总会到来,而你唯一的武器就是自己的血肉之躯。



http://pic1.zhimg.com/v2-11d83b192d2e4ab87cc2d1421d0bbe16_r.jpg?source=1940ef5c

samgao 发表于 2023-10-5 18:54:52

谢邀。
如果单从数据库产品的角度来看,现在商业化数据库产品可以说已经站在发展道路中的一座小山的山顶,遥望远处,还有更高的山峰等着我们去跨越。
可以从以下几个层面来看:
第一个层面:业务驱动,应用为王,国内数据库产品演进史
在互联网的浪潮中,中国特有的6.18,春节微信红包这样的苛刻及极端的应用场景,不断倒逼国内数据库技术的演进和发展。这里面大概分为几个阶段,拿腾讯自身来说,过去几年腾讯在云数据库市场上也经历了从利用开源到定制适配,再到自主研发这样的一个过程。
1) 从开源到适配
作为一个产品驱动型的企业,当产品方向确定之后,腾讯会驱动技术做相应选型,比如财付通的研发,就需要一款交易类型的关系型数据库来支撑。但在任何一款数据库产品研发之前,腾讯都需要预测数据未来可能到达的量级。因此,腾讯必须选择一条成本与基础能力均可控的方式——在开源的基础上,慢慢地演变自身业务,把单节点变成双节点,再把双节点进行横向扩展。然而,在提前预测相对合理的业务发展路径并做出选择之后,产品的开发过程仍会出现很多的问题,比如交易场景下的查证能力拓展等。
2007年的财付通,其查证能力在一写多读的情况下还是存在数据延迟,这对于用户来说是完全无法接受的。但也是由于这些业务需求,促使了TDSQL这款数据库产品的诞生,其适配了异步多线程的强同步复制方案,这在当时也是领先其他云计算友商的解决方案。
2)从适配到自研
对于腾讯云自研的数据库,主要分为两类,一类是为适配腾讯内部业务而生的自研数据库,典型代表是TDSQL。另一类是基于服务海量客户,由开源数据库适配业务自主研发的数据库,比如企业级云原生数据库CynosDB。这里需要指出的是,在腾讯自研数据库历史上,腾讯分布式数据库TDSQL& 企业级云原生数据库CynosDB 具有重要的历史节点。
追溯到2002年,由于当时腾讯的计费产品还处于起步阶段,技术团队选择完全基于开源MySQL构建数据库体系。为了解决计费等公司级敏感业务高可用、核心数据的零流失、核心交易的零错账等问题,腾讯从07年开始自研了一款数据库产品,这也是TDSQL的前身,这款数据库在当时很好的支撑了09年的开放平台浪潮。随着腾讯开放合作的发展扩大,行业场景越来越多,这款数据库无法很好的为合作伙伴提供服务,因此从2012年开始,由腾讯内部业务适配而衍生的自研数据库TDSQL诞生。
后来,伴随着云计算时代的到来,2017年,在腾讯云服务了百万客户之后,由开源数据库适配业务和具体场景,腾讯云自主研发了数据库CynosDB,它将传统数据库与云计算的优势相结合,解决了传统数据库云上的难题。从架构上来说,CynosDB完全兼容开源数据库引擎接口,是国内首家兼容MySQL5.7和全球第一个兼容PostgreSQL10的云数据库产品。
内核定制层面,腾讯云数据库团队总共进行了近60多项优化。为了提升系统可用性,CynosDB以软件优化与新硬件结合为理念,采用了先进的计算和存储分离架构,实现了计算无节点状态,支持秒级故障切换和恢复,数据备份时间缩短到60秒之内,速度提升了180倍。
第二大层面:数据库的未来竞争力
如果说之前我们是从被动接受到亦步亦趋跟随,那么对于未来,我们的自主创造能否实现超越,已经成为我们这代人数据库从业者不得不面对的问题。未来的云数据库到底应该是什么样子,到底什么样的产品才能真正提升用户的效率。
腾讯云认为:长远来看,应该从“云原生”“超融合”“自治”三个层面去突破,目前腾讯云也已经在这三个层面开始实践。
1)云原生
云计算资源或者云数据库应该是像水电煤一样即时即用,但是很可惜目前我们的方式还是宽带的售卖的包用模式。解决这样的问题,数据库需要在技术架构层面进行大的调整:计算和存储分离,事务日志下沉到存储层等。腾讯云自研云原生数据库CynosDB产品可以达到单节点130万QPS读性能,支持无限量存储,已公测近5个月,即将进入商业化。
2)超融合
超融合这个概念可以扩展到很多,TP和AP的融合,缓存和存储的融合,文档型和关系型的融合,私有云和公有云的融合以及国际与国内的融合等等。目前我们在TP及AP的融合HTAP产品,缓存和存储融合的Redis存储类产品也在产品化进程中,可以解决用户的核心痛点。
3)自治
数据库的业务优化可以操作的方向有很多,包括提前帮助用户发现或者预支数据库的性能瓶颈、安全漏洞、架构隐患等。腾讯云也在重点攻坚,希望有智能数据库使用助手的产品帮助用户解决性能诊断,智能调参,安全检查等全方位的诊断定位类产品,不日将正式上线,该款数据库智能分析产品可以主动发现用户数据库存在的潜在隐患,7×24小时在线实时诊断,兼容云上/云下数据库实例,并且提供PC端和移动端的使用入口。
综上,国内喊去IOE很多年,但是传统行业之所以难以从国外IOE系统切回到国产数据库的核心原因只有两个字——稳定。
数据库这种极端精密的产品,国内厂商起步比较晚,在技术和性能层面,对比国外厂商仍然有一些不足,这点我们应该虚心接受。但是我们相信,通过我们多年来的不断探索和实践,这些已经不再是国产数据库技术发展的壁垒。
尤其在云计算时代,国内数据库厂商在创新上已经基本和国际一流数据库厂商站在了同一起跑线上,下半场数据库战役的号角已经吹响,让我们一起努力!

nygaozhan 发表于 2023-10-5 18:55:47

数据库,中国本来的起步就晚,要追赶谈何容易,但也有人步履不停,推荐看这篇,很长却值得:
史中:阿里巴巴“数据库侠客”:此行路远,不问归期
有人曾在网上回忆自己的故事:
大约两年前,我买了《动物之森》这款游戏,玩了一个月就有点厌倦了,于是我把它教给妈妈。妈妈从小得了小儿麻痹,后来变成多关节硬化。除了每月一两次必须的购物,她几乎不出门。我让她在游戏里建了一个家。想不到她竟然沉迷于此,这么大的人每天玩游戏,连我都觉得有点丢脸。
直到有一天,她的病情恶化,不能再玩了。一年后,她去世了。又过了很久,我突然心血来潮,想去看看妈妈建立的小村庄。里面的杂草长得好长,村民们也都在问我妈妈这段时间去了哪里。
我打开信箱,发现里面都是未读信件。其中有一张是生日贺卡,信里写着:儿子,当你看到这封信时,我应该不在了。但是没关系,你将来偶尔回来看看,应该会发现我给你的生日贺卡。我在游戏里赚了一些钱,足够每年都给你买一张生日贺卡。对不起生病了,没能好好照顾你。你要坚强,我会在天堂看着你。
赛博世界并不是辽阔的荒野,数据也不全是冰冷的记录,它是亲人的笑靥,它是我们的记忆。

http://pic1.zhimg.com/v2-30fe951394c8f066924a043f81fd3d12_r.jpg?source=1940ef5c

(一)田园时代
假如互联网有记忆,它也许会怀念2005年。
这一年,淘宝网两岁,但它已不像一个婴儿。一望无垠的货架上陈列着800万件商品,日均浏览量超过9000万次。
这一年,马云和杨致远喝了“有史以来最贵的一杯清酒”,换回雅虎中国全部人马和10亿美金,准备随时划破黎明,吹响对 ebay “决战”的号角。
这一年,遥远的北方,王坚在神秘的微软亚洲研究院,孤绝地探索听上去颇为可疑的“大数据技术”。
这一年,英雄如满天星散,一切像平静的雪。
但杀机总是暗伏。
现在回望,当年阿里巴巴被极速缩小的“互联网毒圈”推向战场的中心,黑暗森林的另一边,潜伏着盛大、网易、百度、腾讯数位绝世高手。还来不及褪去草莽气息的阿里,迫切需要几条顶级的枪镇楼。
有件事儿再明朗不过:
一个合格的商人,得随口说出自家所有货物的特点、型号、价格。这得靠一个天赋异禀的“好记性”。
一个合格的电商,更要实时给出亿万件货品的图片、描述、优惠。这得靠一个打磨精良的“数据库”。多说一句,很多人听到“数据库”就会觉得无聊,其实蛮有趣的,它和人的记忆有两点相似:
1、要在最短的时间内把有用的东西“记住”;
2、要在最短的时间内把需要的东西“回忆”出来。听上去简单,但能把这两件事儿做好的数据库凤毛麟角。

http://pica.zhimg.com/v2-352c9172a6059dbdb2d0c982771a908b_r.jpg?source=1940ef5c

马云和淘宝创始团队

2005年,数字世界的“好记性”只有一个选择:美国甲骨文公司的 Oracle 数据库。
当时的阿里巴巴有三个儿子:大儿子——阿里巴巴B2B网站、二儿子——淘宝、三儿子——支付宝。就像今天所有望子成龙的家长一样,当然要给他们吃最好的,用最好的,补习班也上最好的。
于是,三个儿子都迫不及待地装备了甲骨文的数据库系统。
如果说一般的数据库系统是奥拓夏利拖拉机,那么 Oracle 无疑就是数据库界的劳斯莱斯。买得起劳斯莱斯的人本就不多,会开劳斯莱斯的老司机就更加凤毛麟角。
数据库系统的“司机”被称为 DBA(数据库管理员),当时全中国的 Oracle DBA 加起来也没多少。事实上,这些大神们彼此之间也非常熟悉,经常聚餐撸串。
买了这么多劳斯莱斯,老司机不够用了,阿里巴巴很急。就在这些大神散落在阔绰的外企和安逸的国企里过着舒服的日子时,突然窜出一个好汉大声呼喊:外企和国企给多少?我阿里巴巴以后给三倍!
这一声吼彻底搅动了中国数据库的历史。
DBA 大神云集响应,天下英雄尽入彀中。说实话,钱,彼时这些咖们是不缺的,让他们感到振奋的是这片无远弗届的“新战场”。
鲁国良、冯春培、拖雷、七公、张瑞、后羿、楼方鑫等等一众人马从四面八方赶来,带着自己最的拿手绝活,准备大干一场。
张瑞回忆,自己从西门子被介绍加入阿里巴巴时还很年轻,面试他的四位大神都是业内“神兽”级别的人物。回家以后激情澎湃,立马开始收拾行李准备搬家到杭州,媳妇拉都拉不住。

http://pic1.zhimg.com/v2-e96c10257a67f0f0ad48b21f822022d5_r.jpg?source=1940ef5c

张瑞

DBA 们把自己当做那个时代的哥伦布。
用张瑞的话说,当时的阿里巴巴是“生机勃勃的乱七八糟”,拥有一种和外企完全不同的诡异技术氛围。这并不难理解:这家新兴互联网公司正在全速扩张商业版图,背后的数据库当然也会以几何数级增长。
他们每天没日没夜地研究 Oracle 系统,把技术文档倒背如流,完全是因为他们觉得:自己对探索技术世界新大陆负有不可推卸的责任。
张瑞加入的第二年,另一位 DBA 大牛后羿从江苏电信被挖到雅虎中国,后来随着业务调整汇入淘宝。我让后羿形容一下 2006 年的阿里巴巴数据库,他只说了两句话:“国内数据量最大”,“国内数据并发最高”。
在吟游诗人的章句里,那一定是数据库的“田园牧歌时代”。
作为阿里巴巴的核心技术人员,DBA 大神们拿到了丰厚的报酬。2006年七公第一个买了宝马3系,大家开车出去喝茶。以至于人们都艳羡地口耳相传:听说了吗?阿里巴巴数据库的人都开宝马!
(二)魔幻时代
正如纪梵希的西装不能配老北京布鞋,倾城佳人不能坐在自行车后座上,Oracle 也不能运行在随便攒出来的“妖艳贱货服务器”上。
Oracle 的标配是 IBM 生产的小型机和 EMC 生产的存储硬件。
不少老员工至今都记得,阿里巴巴迎来全中国第一台 IBM 小型机时候的场景。“最高配的 P590,锅炉一样高的黑色大柜子。放在机房其他的机柜旁边,鹤立鸡群。”
跑在小型机上的 Oracle 数据库,速度快到根本不用做任何优化。就像在大草原上开车,闭着眼睛油门踩到底也不会翻车。一众 DBA “老司机”,恨不得围着小型机跳起图腾崇拜的舞蹈。
事情由此开始变得魔幻。
一台小型机就要500万,两台小型机就要配一个300万的 EMC 存储。2006年,正迎来史诗级喷发的淘宝网,小型机先是一台一台买,到后来干脆一排一排买。很多 Oracle、IBM 和 EMC 的销售们,都在很短时间里升职加薪,走上人生巅峰。
依赖是一种柔软,更是一种锋利。
世界第一次对阿里巴巴露出爪牙,是2006年。
就在最早两台小型机进驻机房的三个月后,故障毫无来由地降临了。小型机突然宕机了!
工程师们后背一阵发凉。随即而来的事实更让人绝望,业务宕机,每秒损失都在扩大。但一众工程师面对这台怪兽,不仅没人会修,甚至没人敢动它。感谢上帝,就在宕机的第40分钟,IBM 工程师正在从北京飞到杭州的万米高空时,小型机自动恢复了运转。
自家的设备出现问题,却得依靠设备厂商来拯救;一堆中国顶级工程师面对数据库的生死劫难,居然束手无策。这简直是对彼时中国互联网的绝妙讽刺。
就在这天晚上,完整经历一切的张瑞睡不着觉,他懵懂地问了自己一个问题:搜索技术靠雅虎,数据库靠甲骨文,服务器和存储靠 IBM 和 EMC,那阿里巴巴是什么?
这确实是直击灵魂的一问。
历史的剧情从不拖沓,这一问用不了多久就会有人来回答。2008年9月,在马云的邀请下,王坚从微软亚洲研究院动身,南下赴杭州。

http://picx.zhimg.com/v2-dee8ebe91e0cc227efe9822dcff9e315_r.jpg?source=1940ef5c

王坚

(三)暗黑时代
2009年,阿里巴巴的 Oracle RAC 集群节点数达到了创记录的20个,亚洲第一。
这个数据还被做成了广告,骄傲地放在了首都机场的墙上,闪耀着刺眼的光芒。
光鲜背后,逆流暗涌。
作为当时淘宝数据库团队的一员,后羿已经连续好几个星期没有睡一个完整的觉了。20个 Oracle 集群组成了一个“巨婴”,不知什么时候会啼哭起来。
Oracle 是一个商业软件,它就像一个黑盒子。平均每周都要出现三四次问题,但无论多么精巧的工程师都撬不开它,更不用提修理它。
“唯一能帮助你的人——Oracle 技术支持人员——在一万公里以外,这有多荒唐。”后羿苦笑着对我说。
团队只能连夜值班,出现问题第一时间反馈给甲骨文总部,然后一边力所能及地拖延故障的发展,一边等待前方救援。由于时差的原因,对方返回结果的时候,很可能已经过去了一整天。大部分时间,DBA 团队所能做的唯一一件事情就是:祈祷。
而从阿里巴巴首席架构师王坚的角度看,一道更大的裂痕正在显现。
一方面,买机器的速度根本赶不上业务的发展速度;
另一方面,面对业务提出下个月要做大促的要求,那些技术大神经常连连摆手。数据库暴露出不适合互联网业务的致命弱点——无法弹性扩展——大促时数据库不够用,结束后又浪费。这本质上是时代和工具的错配。
讲真,上帝的时间观念有时不那么强——祂为你关上一扇门之后,不知何时才会为你打开一扇窗。但在历史的烟尘里,后羿的运气并没那么差:
彼时平民化的 X86 服务器技术开始突飞猛进,SSD 闪存技术也飞速成熟。焦头烂额的后羿悄悄和几个同事们进行了验证,在平民服务器上跑免费的开源数据库,性能虽不及 Oracle,但也绝没有想象中不堪。一瞬间,有些念头在他心里闪过,但随即又被他自己掐灭。

http://picx.zhimg.com/v2-1153dfa0d2fec03aba722d24fda87397_r.jpg?source=1940ef5c

后羿

同一年,北京,阿里云工程师写下第一行代码。王坚开始履行对马云的承诺:为阿里巴巴输入技术的基因。
站在技术的潮头,王坚望尽大江东去;他唯独没看到,自己的命运跌宕才刚刚掀开扉页,他恐怕更难预料,多年以后自己将会以怎样的姿态出现在无数技术人的回忆录中。
当年12月,后羿代表数据库团队和他的老板振飞一起,向王坚提交明年的预算。
他们两个人内心都是打鼓的,明年要买的数据库、小型机、存储,加起来的开销之大,连看一眼都要心跳半天。
为了让自己看起来不是那么面目可憎,后羿在汇报结束之前,小声跟王坚提了一句,“要是太贵的话,我们有没有可能用开源数据库和平民服务器来替换 Oracle 和小型机?”
没想到博士(王坚)当即拍板:“就该这么干!”
“2010年以后,再也不购买小型机。”这句话就这么白纸黑字地写进了阿里巴巴的公司战略,振飞后羿签字画押。
后羿在工位上坐到了半夜。
暗夜窗外,月亮升起来,他似乎听到了什么声音。像是开源数据库的新生啼哭,又像是 Oracle 的最后挽歌。
开了半辈子“劳斯莱斯”,方向盘上的每一条纹理都稔熟于胸,闭上眼睛都能想象出按钮的陈设,闻到真皮座椅的气味。
那是一个 DBA 工程师用最好的年华换来的骄傲。如今自己真的要亲手砸掉宫殿一般豪华的 Oracle,转投一砖一瓦从零搭建的开源数据库吗?
退一万步,即便自己能接受这个人生的重大变革,但他凭什么替团队四十几个兄弟们做决定?
然而,决定已然不可辨驳。王坚的眼神里,闪烁的不仅是阿里巴巴数亿的成本节省,更是中国互联网的十年技术未来。后羿明白,自己正载着四十多个 DBA 兄弟冲向万丈悬崖,手中的方向盘已被拆掉。
一觉醒来,太阳照常升起,世界已地覆天翻。

http://pic1.zhimg.com/v2-95794d0650824f2d43ad4ec7a98b48cf_r.jpg?source=1940ef5c
杭州华星路创业大厦8楼,后羿跟兄弟们的“坦白局”。
放弃 Oracle,转投开源数据库!这不是讨论,这是决定。憋了好久,后羿的话终于还是像一点星火,引爆了炸弹库。
“后羿,你TM今天不给大伙说清楚,就别想出这个门!”一位同事堵着门,所有人都站起来,局面眼看就要失控。
后羿努力克制着自己的颤抖,说:
“半年多了,我们所有人几乎天天半夜两点起床排除故障。但我们能做的只是把故障写成报告汇报到国外厂商。在别人眼里,我们是中国最好的技术人,但回到家里,我们叫天天不应叫地地不灵,这种无法掌握自己命运的感觉,你、我还能承受多久?
这几天,我们的故障三天两头就会影响到淘宝的业务。业务同事生气我们的气,我怎么能怪他们?因为保障阿里巴巴的核心数据库就是我们的职责啊!我们不怕苦,但每次都给其他数据库厂商做陪练,这有什么意义呢?
淘宝的数据量明年不知要翻多少翻。现在已经危如累卵,再把数据库的规模加大十倍百倍,只有天知道会发生什么故障。如果今天我们不砸自己的饭碗,明天连淘宝的饭碗可能都没了!阿里巴巴几千兄弟们都在靠着我们,我们不能退啊!”
后来,这一幕成为阿里巴巴历史上一再被铭记的标本。但在当时,剧中人又何以知道未来的走向。
你以为后羿舌战群儒,瞬间折服众人了吗?别逗了,那是小说里的情节。团队最大的善举只是放后羿活着走出会议室而已。一些工程师懵懵懂懂,愿意跟着后羿先试试,另一些人看到后羿决心已定,走出这个门,就已经开始投简历了。
(四)长征时代
投身开源数据库的长征路开始了。
你可以想象一下, 那些 Oracle DBA 大神就这样在小屋里抽着闷烟,捧着一本《MySQL 开源数据库进阶》时而哀叹,时而恍然,时而咬嘴唇嘬牙花子,是一个怎样的场景。
一个先锋敢死队火速建立了——“MySQL 学习讨论小组”。所有人每周三次在会议室里交流技术,分享心得。几个月后,好多同学都开始感慨,好像开源数据库也不像老虎那么可怕。
经过周密考虑,这个浩大的工程先从淘宝“商品库”开始替换。
理由如下:
“商品库”是淘宝系统里最大的一个核心数据库,存储着所有宝贝的描述、价格、评价。
虽然犹如一辆赛车在全速前进中更换引擎,牵一发而动全身,但是商品库的日常读多写少,通过前期的拆分,写部分都已被剥离出来,逻辑相对好掌控。
这已经是所有选项中最稳妥的选项了。2010年1月,淘宝商品库开始了如非洲角马一般浩荡的迁徙。此岸土地开始干涸,彼岸水草逐渐丰美。阳光刚猛,波涛壮阔,勇者争渡,懦者哀鸣。
此时,故事里的另一位主角才姗姗来迟。他就是日后被人们称为“霸爷”,并且一众码农专门为他创建了“拜霸神教”的褚霸。
如果非要形容,我觉得褚霸像个“数字屠夫”。
这位网易工号25,迅雷工号前10的技术大神手里常提一把血淋淋的刀,一边“庖丁解牛”般把程序解剖成底层电路上的嘶嘶电流,一边看向围观震惊的吃瓜群众,摆出一副“都坐下,都坐下,这是基本操作”的傲骄表情。

http://pica.zhimg.com/v2-2c0079e90ba7423a9511559cdcb6a54f_r.jpg?source=1940ef5c

褚霸

2010年5月,褚霸加入大神章文嵩领衔的“淘宝核心系统部”。
仅仅一个月过后,老板章文嵩就找到他说:“后羿那边在用开源数据库替换淘宝的商品库,遇到一些底层问题,想让你组建一个小分队去支援一下,你有没有信心?”
“有!”
能用一个字解决的问题,褚霸绝不说两个字。
你可能难以想象,说出这句话的时候,褚霸根本没做过数据库。他特别熟悉的是网络方向,而存储方向的核心技术是“I/O”(输入输出技术)。打个比方,一个是神经科,一个是脑科,完全不是一个领域。
褚霸去问当时内核组负责人伯松:“这个 I/O 要搞明白,一般需要多久?”
伯松抬抬眉毛,冷静地说:“有生之年能搞懂就不错了。”
褚霸嘴张得老大,一时无语凝噎。不过几分钟以后,他就下定决心:老子混了十一年开源社区,还没听说过哪个技术要花一辈子时间。既然是“I/O”先动的手,那就来吧,不服就干!
凭借“江湖嗅觉”,他很快就“捞”到一位大神,这位大神是 Linux Kernal“I/O”这部分核心代码的贡献者,而褚霸发现他还同时开发过一个 I/O 测试工具。
“这就像汽车设计师本人开发了一个修车工具,这里面检测的参数肯定个个都有用啊!”褚霸想。
于是,就从这个测试工具入手,褚霸一头扎进了 Linux Kernal 上千万行的代码里。那段日子,昏天黑地。每一个参数褚霸都反复测试,确信搞明白了才去看下一个。经常一抬眼就已经到了凌晨三四点,刚躺下又突然意识到刚才理解错了,从床上弹起来继续看代码。
如此疯狂。几个月后,褚霸终于成功地。。。。进了医院。
从医院回来不久,褚霸就像《功夫》里那个筋脉尽断又重新生长的周星驰,突然恢复了全部元气。用他的话说就是:“闭上眼睛,就能想象出整个系统的齿轮是怎么转的。”
后羿带领的数据库研发团队和褚霸带领的志愿军,每周都会在一起交流。褚霸把脑海中那些零件一点点拆开讲给后羿团队听,后羿会把核心技术消化之后用来攻克难关。
于是,开源数据库 MySQL 的一个阿里巴巴专属分支 AliSQL 就这样被雕刻出来。
经历了九九八十一难,2011年7月,淘宝商品库终于完成了从 Oracle 到 AliSQL 的大迁移。这意味着软件替代方案被验证成功。
与此同时,硬件替代方案也在不停验证。
AliSQL 团队查验了当时世界上所有主流闪存、硬盘、计算芯片、网络芯片的性能,协助团队设计了一套兼顾网络性能、存储性能和成本最优的服务器采购方案。
软硬兼备。通往下一代数据库的大门,终于被技术人的血肉之躯撞开。整体迁移只待一声令下。
王坚拍板,从最早的那台小型机,到一年前刚刚购入的最后一台小型机,从此刻开始同时进入退役序列。
接下来,整个阿里巴巴集团进入了 2012-2013 年史诗般的整体大迁移。

http://picx.zhimg.com/v2-d540369149e2585291b6fdfcaed898d2_r.jpg?source=1940ef5c

(五)末法时代
历史的浪潮滚滚向前,但每一朵浪花却有不同的命运。
自从王坚宣布“数据库大迁移”从淘宝商品库扩大到全集团以来,阿里巴巴内部反对的声音开始逐渐弥漫。
一些元老对于新技术并不信任,他们反复在高层会议上表示:用开源数据库替代 Oracle,有意义吗?
阿里人并不会从私利出发考虑问题,反对派技术人也不是阴谋家,他们只是阿里巴巴体内的“白细胞”,有义务用自己的专业知识,保证阿里巴巴这条大船不会被几个激进的“开源技术原教旨主义者”弄沉。
历史很有趣。
用望远镜回望,一段岁月是创新和保守的美妙制衡;
用显微镜查看,那却是每人每日的拼死角力和煎熬。2012年,是阿里巴巴历史上打不开的结。
中哥在《阿里云的这群疯子中》曾经写到,彼时的王坚,高处不胜寒。承载了他二十年技术理想的飞天系统屡次“试射”失败,阿里云摇摇欲坠。如此激进的数据库替代战略,也顺理成章地被认为是危险的。
但上帝是个公平的庄家。你要是相信未来,不用多说,只需要在生命的赌盘上不断加注。
在不同的会议室里,在不同的场合,在不同的时间。面对质疑,后羿看到王坚沉默,看到振飞沉默,他唯独没有看到任何人为理想停下哪怕半步。
AliSQL 数据库就这样一点一滴地渗透进集团的每一个服务中。
2012年,全淘宝最后一台小型机宣布下线。这本来是一个史诗级的时刻。遗憾的是,那正是两条技术路线交锋最激烈的日子。现场只有四五个人,后羿组织大家认真地拍了一张合影。时间无声,这至少是一场对自己的交代。
同年,还发生了一件影响深远的“小事”。
阿里巴巴“大儿子”B2B团队和“二儿子”淘宝团队合二为一,后羿接管B2B数据库团队。
淘宝网已经被“蹂躏”完毕,而阿里巴巴B2B团队的数据库团队还懵懵懂懂。此时已经没有什么可以动摇后羿的决心。
长痛不如短痛,他用决绝的方式推进阿里巴巴B2B的同事们从 Oracle 过渡到 AliSQL 数据库。结果是,20个 Oracle DBA,最终出走了15人。
内网上烽烟四起,一篇名为《淘宝的成功不可复制》的文章成为热帖,口诛笔伐如雨点袭来。
多难的技术都没有击倒后羿,但那一刻,他忽然觉得自己走不动了。
从 Oracle DBA大神,到 AliSQL 的开创者,后羿背负着沉重的理想走了六年。人人都说黎明在前,但天为什么永远不亮?人人都说梦想可贵,但真的要剖开胸膛才能让所有人看到自己的一片丹心?
那天,后羿对振飞说,“也许是我离开的时候了。”
这一击甚至也超过了振飞的预料。
当晚一家小饭馆里,振飞和后羿两家人坐在一起。“我不允许自己的兄弟功败垂成。”振飞说。烈酒入喉,过往的烟尘被马蹄扬起,在天地间飘荡。
振飞还是把后羿留下来了。
2013年5月17日,支付宝最后一台小型机下线,这也是阿里巴巴全集团最后一台小型机下线。历时三年,一场赛博世界的大迁移自此落下帷幕。
现场媒体拍下了这张照片。

http://picx.zhimg.com/v2-f1c49c26598edd372132bf3ac2f3c5ba_r.jpg?source=1940ef5c

阿里巴巴最后一台小型机下线

人们看到一排欢乐的脸蛋儿,谁又能知道,这背后又藏着多少人的过往,和那些岁月里碾不碎的挣扎和不甘。
无数在过去三年里把这件事变成可能的人,此刻像河彼岸升腾的焰火,映出众人的微笑。人们总是喜欢璀璨。而在焰火升起之前的漫长寒夜里究竟发生了什么,他们并无兴趣。
(六)钢铁时代
唯有热血换不来粮食,只靠勇敢赢不下战争。
2012年是“官宣”的世界末日,大多数人最担心的是12月21日,而阿里技术人最担心的却是11月11日。
因为这一天,阿里巴巴将第四次返回那个盛大的战场——“双11”。人们预测,这一年的淘宝天猫总销售额会超过100亿。100亿,一秒数一张,够你不睡觉数三年。
张瑞刚刚并入淘宝数据库团队,后羿就让他做“双11”数据库的总指挥。与此同时,刚好淘宝天猫的所有数据库都从 Oracle 替换成了AliSQL。
这意味着什么呢?张瑞就像一个转校生,刚领到新的教材,第二天就要参加高考。这太刺激了。
100亿的成交额,意味着数据库里的一条热点记录,每秒钟最多要被修改十几万次。什么样的钢铁数据库可以承受这样的蹂躏呢?
彼时,阿里巴巴还不具备“全链路压力测试”的能力。换句话说,谁都没办法把“双11”可能遇到的情况完整演习一遍,只能靠局部测试甚至大脑里的思想实验来推演,摸着石头过河。
11月11日,大战来临。
零点钟声刚敲响,巨大的数据洪流涌向阿里巴巴的服务器,资源占用数值直线拉起,所有人的目光都随着曲线向上抬升。几秒钟过后,数据库资源占用值像一辆失控的赛车,径直撞向100%。
张瑞脑中一片空白。
如果2012年“双11”零点前后你正在参与剁手,一定会记得,有那么半分钟,所有的页面都卡顿在半空。
就在同一时刻的杭州,阿里巴巴内部的数据迅速淤积,发动机已经被烧红。这套即将崩溃的 AliSQL数据库,背后是无数人的赌命奋战。它太贵了,贵到没人能承受失去。
大家都在看着总指挥李津,只等他下令,拍停数据库,拍死兄弟们无数个白天和日夜。
只见李津站起来,大喊:“大家都别慌!”
所有人的手就这么悬在半空,一秒、两秒。。。主屏幕上的成交数据突然开始松动,缓慢抬升。数据库里的记录每秒都被十几万次海啸疯狂地冲刷。一点一点,数据库的运转速度,缓慢而坚定地追上了全国人下单的速度。之前一分钟淤积的数据,也在被消化。
一切安然度过,仿佛一场鹅毛大雪抚平了地上的一切沟壑。
有人回头,看见后羿站在角落,他正望向窗外漆黑的夜空。
那天没有月亮。
2012年“双11”,成交额定格在了191亿;2013年“双11”成交额达到了350亿。

http://pic1.zhimg.com/v2-43b0d7977ecb55b8ccdfdfcddb25870e_r.jpg?source=1940ef5c
2012年“双11”
(屏幕上为一小时成交数据)
就在2013年“双11”结束之后半个月,甲骨文找到了阿里巴巴。根据你们“双11”公布的成交总额,你们的 Oracle 数据库用量肯定不少,算下来比你们实际购买量多多了!这边补下钱吧!
你无法想象,甲骨文拿出来的账单有多大!后羿对我回忆。
阿里巴巴这时才告诉他们:对不起,我们的核心数据库已经从 Oracle 替换成了自己开发的 AliSQL。
甲骨文的同事根本不相信,一家中国的企业用三年时间做好的开源数据库,居然能达到甚至超过美国老牌企业有三十年技术积淀的 Oracle 系统。直到阿里拿出了非常强的证据,他们才接受。
这时,阿里巴巴的很多高管和同事才开始后怕:如果三年前没有启动自研数据库计划,今天谁能有勇气面对甲骨文的这张账单?
(七)黄金时代
2011年8月,毕业于北大计算机系的鸣嵩来到阿里。
相比褚霸的怼天怼地,鸣嵩显然是个学院派。如果说褚霸手里挥着屠刀,那么鸣嵩手里捏的就是手术刀,他们俩都会庖丁解牛,姿势却大相径庭。
在北大的时候,鸣嵩曾经深入做过国产处理器研究,这段经历给他的大脑烙上了两个不可磨灭的钢印:
1、我们的理想是:中国人拼死都要有自主技术。
2、我们的现状是:国外的技术论文读起来真香。加入阿里巴巴之后,鸣嵩开始研究数据库技术。他沿着国外的技术论文的脚步,一边啧啧称赞,一边刻苦研读;至于有一天中国人自己的数据库论文也能被美国人学习,那是万万不敢奢望的。
说回褚霸。
彼时阿里巴巴掀起的“去 IOE”活动已经在全国蔚然成风。很多充满野心的互联网企业和大国企都想去掉 Oracle。于是,褚霸被邀请到腾讯,专门讲述开源数据库的调优技术。
我以为就是几十人一百人的报告厅。没想到到了腾讯,台下1000多人,黑压压地望不到头。人家还告诉我,另外有2000人正在线上看着你。我站在台上,紧张得30秒都说不出一个字。褚霸回忆。
话匣子一旦打开,紧张感就消失了,那个提刀怒吼的霸爷灵魂附体。演讲像一阵台风,吹得现场观众心花凌乱,掌声如潮。褚霸还没从腾讯回来,阿里巴巴内部就已经有同学建立了一个旺旺群,名叫“拜霸爷神教”。
从此,隔三差五就有人给褚霸送一个小礼物,附上纸条“拜霸爷”;有同事去旅游,还在海滩上用脚写上“拜霸爷”发到群里。。。
就在霸爷走上人生巅峰的时候,阿里巴巴历史上的两条伏线,此时迎来了一次“握手”。
看过中哥《阿里云的这群疯子》的童鞋也许还记得:2013年,阿里巴巴遇到了一个生死劫。
阿里巴巴赖以仰仗的算力调度系统——阿里云“飞天”卡在了研发中最艰难的时刻。真正要命的是,集团内很多业务已经开始向阿里云迁移。如果飞天系统在短时间内难以冲上5000台集群的调度能力,阿里巴巴的诸多业务都将停摆,后果不堪设想。
彼时的王坚正在河流最湍急的漩涡里,他横下一条心,宁可一辈子背负“骗子”的骂名,也要死死托住飞天。
千钧一发之际,章文嵩决定派出自己“核心系统部”的精锐部队驰援阿里云。
多隆、褚霸、鸣嵩等一众底层系统大神云集响应,上午接到任务,下午就去阿里云解 Bug。三个月不眠不休,终于在阿里巴巴集团算力撞到预测极限的前一周,惊险地把飞天推上5k。

http://pic1.zhimg.com/v2-18139b161616f52c523a24e18537f358_r.jpg?source=1940ef5c

为了纪念飞天5K,云栖小镇专门树立了一尊雕像,这是2013年王坚在为雕像揭幕。

这次惊险一跃之后,褚霸任阿里云数据库“RDS”的负责人,鸣嵩成为“RDS”首席架构师。同样在这一年,张瑞接替后羿成为了集团数据库团队的新掌门。
(八)太空时代
虽然很多人“拜霸爷”,但褚霸自己却会“拜王坚”。
以前会觉得,为什么王坚“吹牛”吹成这个样子?直到前两年我才理解了他的方式,这是“降维打击”。
如果你和别人在同一个层面死磕,这没什么了不起的。人家做到了80分,你最多只能做到100分。如果你上了一个维度,直接就比别人多了一个数量级,你做得再差,也比对手们强多了!这种思维,直接激发了自研数据库 POLARDB的诞生。
如果此时拉开视野,会发现数据库市场本身就发生了巨大的变化。就如当时经典内燃机汽车迎来了史无前例的高峰之后,被迎面而来的电动车打了个手足无措。
经典数据库迎来了诸神的黄昏。创业企业直接用云上数据库,而存量客户也会想重演阿里巴巴去IOE。
仅仅是卖别人做的数据库这很好。但是,当你有机会自己去造出新的数据库当然更好。这是2014年RDS团队全体大会上的决定。
“数据库”和“操作系统”“中间件”一起并称为三大底层系统。阿里云的成功,和中间件的完美设计关系密切。然而,阿里巴巴无数大神拼了老命,用了几年时间才打磨出了阿里云精致的中间件。观摩过阿里云5K的“扒层皮”,褚霸还能这么轻松地喊出自研数据库,可以用胆大包天来形容了。
这个面向未来的数据库要叫个啥名字呢?褚霸一拍脑门决定:“就叫POLARDB!”
时间表很快被制定好了。2017年10月底,POLARDB要开始公测。反推回来,所有研发节点都被定死。
两年多时间,30万行代码,这场由鸣嵩领导的“数据库新长征”,就这样悄无声息地开始了。
鸣嵩回忆,2017年是最艰苦的一年。有两个多月,团队所有成员都是通宵赶代码。用他的话说:“大家每天下班都会遇到早高峰。”

http://pic1.zhimg.com/v2-4640ad82da10aefc1cb8b8638534da93_r.jpg?source=1940ef5c

鸣嵩

奇怪的是,那时候无论多累,就是没人偷懒,更没人提出离职、转岗。
当时团队有一位同学,早晨上班之后突然对鸣嵩说:“我老婆今天生孩子了,我请一天假去趟医院!”。牛X的是,他真的只请了一天假。第二天他安排妥当了一切,准时出现在工位上。
“为什么?”我问。
“阿里人不想做螺丝钉。”鸣嵩说。
2017年9月,POLARDB 盛大发布。
过去需要70个小时的10TB的业务数据创建只读副本,在POLARDB上只需2分多钟。更关键的是,它的成本只有商用数据库的十分之一。半年后,上千个用户用上了这个新数据库。


http://picx.zhimg.com/v2-191b771abfeb18759abe75b041ba1d53_r.jpg?source=1940ef5c

POLARDB 发布

双11的难关对阿里巴巴数据库团队的挑战仅仅是开始。
林子大了,什么鸟都有。99.9%场景下不会出现的bug,在阿里,就会出现。
淘宝交易的订单处理突破了地域限制,可能在北方区、华东区、南方区。但如果其中一地发生了灾难,怎么办?
这种特殊的业务场景要求数据要可扩展,持续可用、要强一致。因此,新一代数据库必须要包含几个重要特点:全球部署、对存储数据冷热隔离等。
这时候,我们不得不自己研究了新一代数据库了。张瑞说。
说起来轻松,阿里巴巴过去几年数据库技术突飞猛进,从来都是有前人脚步可循的。如今,这些数据库大神们面前,真的是一片“荒原”。
“全球最顶尖的数据库人才,仍然在美国。为了自研下一代数据库,2017年我们几乎把美国数据库的人才挖空了。”张瑞回忆。
在他和另一位数据库大神圭多的推进下,一个自研的超大规模数据库系统 X-DB 就这样诞生了。短短几个月,X-DB就在集团体系内完成了MySQL、AliSQL集群的升级换代。
对阿里巴巴的数据库而言,2017年寓意非凡。正是从这一年开始,以大致胜的 X-DB 和以快致胜的 POLARDB 成为了阿里巴巴数据库的两款拳头产品。

(九)会师时代
三军易得,一将难求。
2017年10月,马云振臂一挥,在云栖大会上成立“达摩院”。誓要争夺未来10年的技术高峰。
19岁的阿里巴巴,已经有权“任性”,成为自己理想中的模样。但很多人没注意到:在细致的肌理中,因为公司使命的刷新,无数阿里巴巴人必须变得和以往不再相同。
从全中国最早最优秀的 DBA,到中国第一批研究开源数据库,再到自研数据库,一代代英雄前赴后继。从这时开始,研究未来的数据库的任务,将要落到达摩院肩上。
仅靠一腔热血不能换来坚船利炮。必须找一个真正有能力的人来带领实验室。如果没有牛人,达摩院数据库实验室的领导人职位宁可空着!张瑞斩钉截铁。
李飞飞就这样进入了数据库团队的视野。
那天达摩院数据库实验室筹备组开会,团队有人提出,犹他大学计算机系的终身教授,世界数据库领域的顶级大神李飞飞是一个非常合适的人选。一打听,李飞飞此刻正在上海出差。
张瑞和圭多连夜坐火车去上海,仅仅聊天一个小时,张瑞就感受到李飞飞身上那种科学家少有的产业思维。
“这就是我要找的老板。”张瑞说。
后来,李飞飞加盟阿里巴巴,成为达摩院数据库与存储实验室的领头人。

http://pic1.zhimg.com/v2-aef662c448bed199bbb6e126c7465999_r.jpg?source=1940ef5c

李飞飞(飞刀)

2018年11月,阿里巴巴集团 CEO 张勇发表全员公开信,宣布阿里云升级为阿里云智能。这意味着数据库的侠客们将重新团聚,兵合一处聚如团火。
所有人一致推选李飞飞成为新数据库团队的带头人。李飞飞大旗一挥,张瑞和鸣嵩两支团队合二为一。X-DB 走出“阿里集团”深闺,更名 POLARDB X,成为POLARDB的分布式版本,共同通过阿里云为社会提供服务。
李飞飞站在数据库科学的浪头,提出了未来的三个方向:
1、“自动驾驶”的数据库:
POLARDB 和 POLARDB X数据库已经可以在很多方面实现了自动化管理,但这还远远不够。数据库可以借助人工智能实现更加低成本地实现自动存储、自动检索。

2、“安全”的数据库:
在云上的数据库,天然要解决用户的信任问题。未来的云端的数据库需要有一把锁,用户手握钥匙,可以随时验证数据库的安全。

3、“新硬件支撑”的云原生与分布式数据库:
在非易失存储(NVM)、远程直接数据存储(RDMA)等等新技术的加持下,可能会让新的云原生和分布式数据库架构成为可能,把以前只能用“妥协”方式绕过的问题直接用技术解决掉。坐在我对面,李飞飞眼睛里闪烁着一个科学家改变产业格局的雄心。
数据库是个“古老的领域”。它的本质就是对数据的生产、存储和消费系统。
为了这个目标,所有人都在不断探索对资源安全可靠快速调度的方法。于是,在漫长的时间里,数据库领域才会不断爆发新的技术点。
这是让我们这些老炮儿在数据库行业几十年都不觉得厌倦的根本原因。李飞飞说。
从空中俯瞰,2019年阿里巴巴和蚂蚁金服的数据库百花齐放,POLARDB、POLARDB X、OceanBase、AnalyticDB、NoSQL、图数据库、时序时空数据库等等一应俱全,在技术光谱上,我们第一次拥有了不输给人和人的完整的生态。
2018年,在 Gartner 数据库魔力象限,阿里云成为国内首个入选的科技公司,与AWS、Google、Oracle 等国际大牌同台竞技。
在魔力象限的图表上,代表阿里云全部技术的只是一个小点,但就是为了这个点在象限里挪动哪怕一分一毫,无数数据库侠客付出了十年韶华光阴。

http://picx.zhimg.com/v2-2f95f3304b605b9fb873b532ae7e51d0_r.jpg?source=1940ef5c
同年,阿里巴巴在国际数据库顶级大会 VLDB 上发表论文介绍POLARDB的存储系统 PolarFS。
鸣嵩惊喜地发现,不久前这篇论文已经被旧金山大学制成了课件,用于给美国的学生授课。
而在即将到来的2019年国际数据库顶级大会 ACM SIGMOD 上,阿里巴巴数据团队又将发表介绍云原生分布式 OLTP 存储引擎 X-Engine。
从2009年到今天,十年的卧薪尝胆,我们从不敢说超越谁。但我们确信,中国人从来就不比别人差,我们已经和世界顶尖高手身处同一个阵营了。鸣嵩说。
(十)那些侠客们
如果我们能够回到 2005,那里也许有座站台,火车头冒着蒸汽,像一个期待远方的孩子。
在接下来的五千多个日夜里,从受制于人的闭源数据库,到开源数据库,到追星逐日的自研数据库,那些数据库人肉身串演了一幕幕戏剧。
有时我想,他们挺幸运,因为他们见识了这个世界的美好和荒唐。但他们好像也是不幸的,因为这些美好和荒唐都发生在他们自己身上。
数据库工程师半夜起床的日子再也没了,自动化运维程序的精致让过去的热血蜷缩在日志里。吹过原野的风目睹了那些草莽英雄撤离战场,顶级院校的计算机大神扛起大旗。人们在曾经野兽横行的荒原上,建起了安静细密的城市。
如果现在不做技术研究,十年后,人们将看不到阿里巴巴。王坚2009年的话犹言在耳,答案在空中飘荡。
历史曾有一万条岔路,阿里巴巴理应庆幸自己如今仍是互联网大潮中的一朵巨浪。而互联网浪潮,又是中国厚厚自传中的一章。
张瑞、后羿、褚霸、鸣嵩、李飞飞,这些人从人群的暗处走来,历史毫不吝啬地对他们行了注目礼。
他们是普通人,只是用自己千回百转的命运,把故事堆砌成了今天的样子。
从2009年到2019年,也有无数数据库人离开了阿里巴巴。
留着大胡子的老和尚在 2013 年“退休”,离开之前他说:感谢阿里巴巴,让我从此不再为了钱发愁。
那一时期“负气”出走的 Oracle BDA,也有很多人最终还是进入了开源数据库领域。也有离开阿里的人,过了两年带着新的认知重又归队。
有些人选择独立创业,大神拖雷创立袋鼠云、陈栋建立沃趣科技,他们开枝散叶,成为了中国数据库和各种数据智能系统的先驱,演绎着各自的故事。
人们终于明白,死生聚散恰是世界走向未来的方式。此生路远,莫问归期。
告别之前,我问后羿:“过去十年,你真的觉得值吗?”
他笑了,说:
时代的洪流总会到来,而你唯一的武器就是自己的血肉之躯。

zsqffff 发表于 2023-10-5 18:56:16

没有跨过,远着呢。
作为数据库行业从业人员之一,我想说暂时别那么乐观,商业上的吹嘘放卫星会让人迷失于一派祥和的氛围中,仿佛中国已经解决了商业数据库的难题,摆脱了美国的掣肘。以下我不会提国产数据库在什么核心系统上替换美国人的产品的难度,而是主要讲讲国内数据库的发展中的问题。
首先,如果没有开源的兴起,中国到现在可能都没能有多少人能摸清楚数据库的关键技术和其中的trick(实现商业数据库trick非常重要。),毕竟市场上绝大多数国产的数据库都是mysql\pg改的,要么就是基于rocksdb,leveldb。很少有数据库引擎自己写的(包括早一点的南大通用,达梦,起初都是靠猜来摸索Oracle怎么实现的,再做自己的,其实我还是很佩服他们的)
paxos的论文早就有了,当时根本就没什么人关注。如果不是谷歌发了三大马车的论文,分布式数据库也不会兴起。,raft出现也会更晚了吧,这样阿里的OB可能就会出现的更更晚。包括现在开源比较火的tidb,如果不是span/F1的论文发表,可能不会有他们什么事了。当然既然美国人发了,咱们做了,不管是基于什么理论基础,谁的产品搞的,先模仿着能有自己的东西,能有就很不错了,作为国人,这没什么好指摘的。
现在因为开源,确实是中国发展数据库的大好机会。
但我们仍然要正视的现实是,市场上绝大多数数据库,不管是OLTP,OLAP,还是内存数据库,大部分都是用的美国人写的,中国的产品大多数都是基于外国产品写的。
另一个更重要的问题是:创新性
基于一个别人已经发表的论文、已经有实现的产品,摸过方向大河中的暗礁路线,做一个数据库还是相对简单的,毕竟方向已经定下了。但是创新性的造一个符合商业场景的,能够自力更生的商业数据库,很难。
造第五代战斗机歼20可以照着美国人的标准做,照着他们的方向前进,现在大家都第五代了,第六代该怎么造?以什么标准做呢?还是等美国人颁布标准后再照着做?没可能了,只能自己摸索方向前进,这是最难的,因为试错成本很高。

leon30802002 发表于 2023-10-5 18:56:51

今年5月甲骨文中华区大规模的裁员,就是中国跨过数据库这座大山造成的局部“山体滑坡”。
在09年以前,甲骨文Oracle可以说是世界数据库的强者,占据着绝对的霸主地位。但是放在10年后,在2019年就已经被崛起的云数据库打击的得靠强制裁员来转型。中国市场虽然大,但是本地的云数据库已经比从前强太多,竞争优势已经不复存在。
在亚马逊 re:Invent大会上, CEO Andy Jassy曾调侃,曾经的王者甲骨文,现在在全球云计算市场份额太低,不算真正的对手。亚马逊真正需要注意的对手是微软、阿里巴巴和谷歌。
数据库,其实是一项经常被人忽略、但实际上相当重要的软件,可以这么说,如果没有数据库,就没有国计民生。
谈起中国数据库的发展,离不开研究的引路人——萨师煊。如果没有他,数据库的星火燎原也就不会发生。
中国数据库的诞生(1978——1990)
业界对于数据库理论正式传入国内有一个共识:1978年恢复高考后,无数人回归了大学校园。萨师煊老师当着他们的面,在黑板上写下了“数据库”3个字。
数据库在中国的研究和科普就这么被启蒙了。
我国最早的数据库学术论文,就是萨师煊发表在1979年的《电子计算机参考资料》上的数据库课程口述稿。在1982年,萨师煊老师起草了国内第一个计算机专业本科“数据库系统概论”课程教学大纲。他和弟子王珊编制的《数据库系统概论》,放到2019年也是每个学数据库的人都要学习的教材。(现在似乎修订到第5版了)
等学习数据库的初代学生毕业时,已经是上世纪80年代了。
Oracle的垄断(1990——2009)
如果把数据库比作“大脑”,在那个时代,全世界最好的“大脑”就是美国的Oracle。
Oracle很快就把眼光投向了亚太地区,决定进军中国这块“沃土”,注册中文名为“甲骨文”。
在1997年,Oracle借助“九七工程”在中国站稳了脚跟,这一站,就是数十年。Oracle顺利拿下东三省邮电管理局5期工程的大单之后,中国的电信行业使用Oracle数据库,第一代DBA诞生了。
此时的中国,风起云涌,影响至今的三巨头一个接一个的成立了:1998年腾讯创立,1999年阿里创立,2000年百度创立。2000年互联网行业开始兴起,随着用户的快速增加,对数据库的需求也越来越大。
中国企业用的是Oracle数据库。这看起来好像没什么问题,在大多数人眼里似乎就像中国人用苹果手机一样正常。
但是致命的问题总是特别简单又直白:贵。
非常贵。
Oracle的标配的是IBM生产的小型机、EMC生产的存储硬件。在当时一台小型机就要500万,两台小型机就要配300万的EMC存储。
而且要维持“IOE”的整体费用都非常庞大,一笔又一笔的巨额账单是让人闹心的。
巨额的费用就像一座大山,压的每个人都喘不过气。但话语权在别人手里,除了交钱能怎么办?
在2007年,业界就曾经爆出一条新闻:联通如果要升级到新版本的的产品,必须先交纳6000万Licence罚款。
这座山,也可以说是用自己的血汗钱给别人堆起来的金山银山。
在巨大的费用面前,无论是大企业还是小公司,都开始寻求另外的解决办法。
改变发生了,甚至最先出现在中国。
随着淘宝和支付宝的用户数量激增,如果要继续用Oracle,阿里巴巴每年就要面临数亿的巨额账单,阿里咬咬牙喊出了“去IOE”,放弃Oracle,使用开源的MySQL。
星星之火,悄无声息的点着了。
中国数据库崛起(2009——2014)
2009年,阿里在王坚的带领下喊出了去IOE的口号,用开源数据库和平民服务器来替换Oracle和小型机。那一年阿里巴巴的公司战略多了这么一句话:“2010年后,再也不购买小型机。”

http://pic1.zhimg.com/v2-308929d5e1ca054dc3682a57f8f1bfbe_r.jpg?source=1940ef5c
越是简单的一句话,越是要付出巨大的代价。
这个困难程度,就像看了一眼房子的结构,就要自己亲手盖房子了。
连续几个月,无数人在屋子里研究《MySQL开源数据库》,有的“先锋队”每周三还会在会议室里交流心得,每天都是扎进千万行级别的代码里,一点点拆开,又重新组装。往往别人该上班了,他们才刚下班。
2013年5月17日,最后一台小型机下线,Oracle被完全清除出淘宝核心系统,淘宝天猫所有的数据库都从Oracle替换成了自主开源的AliSQL。
阿里巴巴是领头羊,带领着国内的其他数据库公司一同跨越这座大山。
国内的互联网公司逐步用国产的数据库代替Oracle的地位。达梦、人大金仓、神通、南大等一批数据库公司快速发展,并应用于央企、财政等国家专业领域。
除了开源数据库MySQL以外,PostgreSQL、Redis和HBase等开源社区也开始一起寻找中国数据库发展的新方向。
星星之火已成燎原之势。
云数据库崛起(2015至今)
中国数据库真正走进世界一流行列是什么时候呢?阿里云公布国内首个自研企业级关系型云数据PolarDB技术框架那一天可能要有姓名。
这是自嗨还是公认?
从技术原理上来说,传统数据库是下图左一的架构,计算资源和存储资源是一体的,Oracle的商业数据库就是这样的架构,但这种架构带来的问题是,单个数据库的存储能力有限,读写能力因为绑定也有很大限制,读或者写,系统只能选择干一件事。
PolarDB则有很强的云上产品属性,就是分布式,把计算和存储分离,数据存储层面在云上实现共享,但读写却可以分开进行。以前只能读或者只能写,但是现在却能同时读、写,效率必然大大提升。
这就为数据库打开了一个全新的思路,这也是来自云的解决方案。我们必须庆幸的是,在云这条赛道上,中国没有落于人后。


http://picx.zhimg.com/v2-4fc2db52d47b70c04bb201bb6ce18c9c_r.jpg?source=1940ef5c
前几天,国际权威研究机构Gartner发布的《The Future of the Database Management System (DBMS) Market Is Cloud》报告,挑明了数据库市场正在发生的变化。

http://pica.zhimg.com/v2-ed705e64c8530c770b53d00ab7f74d93_r.jpg?source=1940ef5c
据Gartner统计,阿里云已位居全球云数据库市场份额第三,年增速在115%。同期AWS增速为74%、Oracle为66%。

报告认为,数据库的未来必须上云,目前云数据库已为数据库市场的增收贡献一半以上份额。与传统数据库不断下降的营收相比,云数据库正在积极地快速增长。到2022年,预计有3/4的数据库天然部署或迁移到云上。

Gartner将这一变化归因为,企业正将新应用向云转移,对数据存储和计算分析的能力要求不断加强。云数据库天然具备云上灵活性,能够提供强大的创新能力、丰富多样的产品体系、经济高效的部署方式和按需付费的支付模式。尽管从市场的整个大面上说,Oracle的市场份额仍然很难撼动,但随着它在云数据库市场上的失利、整个数据库市场向云数据库倾斜的大前提下,数据库这道曾经横亘在中国企业、中国技术上的大山终有一天不再是问题。
向推动数据库发展的无数企业和工作人员致敬。
页: [1]
查看完整版本: 中国跨过数据库这座大山了吗?