内容来源:2019年2019年9月25日-27日,在阿里巴巴集团主办的云栖大会子活动《云栖时间》会议中,蚂蚁金服研究员杨传辉进行了以“我们为什么自研数据库”为主题的精彩分享。笔记侠作为合作方,经主办方和讲者审阅授权发布。
笔记达人 | 拾零
封面设计 & 责编 | 子墨
第 4364 篇深度好文:4806 字 | 9 分钟阅读
活动笔记•大数据
本文优质度:★★★★★ 口感:盐煎肉
笔记君邀您阅读前,先思考:
关于数据库,你了解多少?于我们而言,数据库又意味着什么? 于国家而言呢?目前,我国数据库处于什么状态呢?
今天,就让我们带着这样的疑惑走进文章寻找答案吧。
以下,尽情享用~
大家好,今天要和大家分享的是“我们为什么要自研数据库”。
一、自研数据库的目的
数据库、芯片、操作系统是整个IT行业最重要的三个基础产业,不论国家还是企业,自上而下都投入了大量的人力物力。甚至于我们国家采用举国体制发展自研的数据库,但20多年过去了,效果并不好。
尽管如此,我依然认为自研数据库是一件很严肃的事情,首先需要明确的是:我们为什么要自研数据库,自研数据库对中国和对阿里的价值在哪里?
1.行业分析
数据库是相对比较成熟的行业,但同我一样从事数据库研发的人非常少。
数据库这个行业,每年全世界产值是400到500亿美金,其中最大的厂商是Oracle(甲骨文),市值接近2000亿美金。它只做了一件事,就是做数据库,并且做到了极致。
Gartner发布的2018年操作型数据库(Operational DBMS)魔力象限(Magic Quadrant)中,共有14家企业入选。
LEADERS领导者象限中有几个最主要的玩家,它们是拥有先发优势的传统企业级数据库的代表,包括Oracle,SQL Server以及DB2。基础产业一直都是需要积累的产业,如果没有5到10年甚至10到20年的研发工作,基本上不会有任何结果。
四象限模拟图 2018年
2009年,王坚博士在各个论坛讲云计算,当时大家觉得他可能是骗子。其实,云计算是整个软件产业中一个非常大的变量。
它的出现,让很多传统企业把原来独立部署的系统放到了云上,造就了几个公司,其中最著名的就是AWS(全称为Amazon WebServices,是亚马逊的云服务平台,提供计算能力、数据库存储、内容交付和其他功能,以帮助企业扩展和发展),即亚马逊的云。
随着云计算的发展趋势,它的数据库也做到了领导者象限的位置,这是因为数据库只要一形成壁垒就会不断产生正向循环,后者很难打破先行者的优势。
再来看远见者象限(Visionaries象限),2018年只有两家企业上榜,一家是Google,另外一家就是阿里云。阿里云首次入榜即成为黑马,中国力量正在逐步显现。但中国的数据库产业和美国的数据库产业相对来说有些不同:
第一,中国的产业份额不是很多;
第二,中国有一个非常强大的自上而下式的自主创新的推动力,这个推动力强大到可以改变局势。
所以,我预测未来的5到10年时间将是整个中国数据库产业最大的拐点,也是数据库从业者所面对的最大的一次机会。云计算和自主创新将会引领新一轮的技术变革。这是数据库从业者和数据库相关行业者巨大的机会。
2.国产数据库
过去20年,我们称为IT时代。国家投入了很多资源、精力研发国产数据库,被称之为国产的技术。
但很多时候,我一听到“国产”这个词是不太满意的,因为国产给人的第一印象就是做得不那么好。
不过国产数据库没有做好并不是因为做国产数据库的人没有愿景,或者没有能力,而是因为国产数据库一直都缺乏一个业务场景。正因为如此,我们连做什么都不知道,所以我们只能模仿国外的数据库。
但大家知道,模仿是不可能超过先行者的。没有核心竞争力,导致国产数据库没有试验田,加上大家在商业上做选择,一定是“最好的”胜出。
这进而导致没有业务选择尝试国产数据库,最终只能继续模仿。于是,进入了无限循环。
金融、电信、能源等关键领域都在试图摆脱对国外专用软硬件(大/小型机、高端存储、数据库)的重度依赖。但随着移动互联网的迅猛发展,很多数据库的研发发生了变化。
① 需求来了
以前的企业都是处理比较小规模的数据,但是,如今很多企业都希望转型分布式架构,以此来拥有大规模的数据处理能力。
在处理海量数据这样的业务需求前提下,国产数据库需要做的就是必须把数据库的性价比做得很高,成本要大幅低于传统的IOE架构,只有这样才能存活下去。这就是互联网时代的生存法则。
另外,大规模就意味着要颠覆IOE架构(一种IT基础管理架构),把技术成本做到足够低,这样才利于普惠。
② 技术提高
如今,中国和美国在经济和技术方面的差距变得越来越小。
10年前,如果我们发现有一个工程师是来自于谷歌或者Facebook,就会觉得这个人就是神人,根本不管他是在谷歌里做什么的;但现在,我们一定会问清楚。
其实,美国和中国的工程师相比并没有太大的差距,这就是今天的变化。并且,中国工程师有非常大的红利,所以中国也具备在核心技术方面自主创新的能力。
3.自研数据库的两条路径
强大的业务场景,是做自研数据库的基础。接下来就是怎么做,这里有两种路径。
第一,基于开源数据库做半自研。没有基础的,可以直接使用开源数据库,用到一定阶段再基于开源数据库打patch,成为开源数据库的commiter,再进一步改变开源数据库里的一些非常核心的模块,即基于开源数据库做半自研,直到最终完全掌握开源数据库。
第二,从头开始完全自研,即难度非常大的OceanBase。
我们没有办法评判哪条道路更好,但这两种道路的终局都是为了解决中国数据库当前所面临的自主创新的问题。
我们选择了第二种道路,这是起步阶段最难的道路,要从头开始一点一点做,但我们认为,随着自研的持续发展,整个技术研发团队不断成长起来,这条道路越走到后面将会越容易。
OceanBase有团队使命、团队愿景,当然也有技术愿景,即在大数据时代,我们认为的数据库的技术终局是一个可扩展的、具有分布式能力的Oracle,最终能够支持海量扩展的功能强大的数据库。
Oracle的整套技术架构是基于40年前的场景所设计的,40年前很多人甚至认为一个小硬盘就能把全世界的数据储存下来。在如今的大数据库时代,井喷式爆发性增长的数据让已有的集中式架构越来越无法承载。
如果设想能够给关系数据库安上一个分布式的翅膀,最终研发出一款能够支持海量数据可扩展的Oracle,既拥有Oracle的强大功能,使用起来又像Oracle一样易用,同时这个数据库还能享受分布式技术的完美优势。
对于用户来说,这不就是一款完美的数据库产品吗?
二、OceanBase的发展与破局
在OceanBase的发展过程中,遇到了很多问题。但不管是从天时、地利还是人和的角度看,2010年我们研发OceanBase时,都算是遇到了历史性的好机遇。
1.发展机遇期
① 天时
从天时的角度看,2011到2012年刚好是移动互联网爆发时期,2010年立项,是最好的时间。
② 地利
阿里巴巴是拥有非常好的试验数据库的公司,它有全中国最丰富的业务,而且每一个业务都对数据库具有强需求性,尤其是金融,它是整个数据库行业需求最高、要求最严格的场景。
③ 人和
我们中国有“双十一”节日,美国也有一个类似的节日叫“黑色星期五”。阿里巴巴是一个非常爱技术的公司,集结了很多非常优秀的互联网公司人才,而OceanBase的技术项目正好被写进了阿里巴巴的项目书。
2.发展困难期
赶上了好时机并不代表OceanBase发展非常顺。最开始,OceanBase作为一个公司内部刚刚孵化出来的技术创业项目,前有商业数据库占位,后有开源数据库追赶,业务同学根本不买单。直到OceanBase成功应用于第一个业务,淘宝收藏夹后才逐渐打破僵局。
后来经过了整个团队接近四年时间的发展,OceanBase在整个公司已经有了接近100个业务系统逐步上线。但最核心的业务,即交易支付业务没有用OceanBase。
3.再遇机遇
直到2014年,OceanBase在支付宝遇到了一个宝贵机会。2014年的双11,OceanBase 0.5 版本成功替代Oracle应用于支付宝核心交易系统,承担了10%的流量,顺利通过了交易洪峰的考验。
这其中最核心的原因就是OceanBase拥有一个非常关键的技术破局点——高可用的能力:当服务器出现故障时数据能自动恢复,而且不丢数据。
例如,传统集中式数据库,有一个主机和一个备机,用强同步的方式,每做一笔业务都需要同时写主机和备机,这种方式肯定不会出现数据丢失的情况。但是如果主机宕机了,整个系统是要停服务的。如果主机和备机不强同步,做异步更新,那么就有可能丢数据。
所以要么丢数据,要么丢服务,这是一个无限循环的问题。
我们选择了OceanBase,并首次在金融系统里引入了Paxos协议。这也是所有分布式系统里最难理解的协议。它的原理说起来很简单,用我的话总结就是三个臭皮匠顶过一个诸葛亮。
每个服务器都是臭皮匠,虽然都是比较普通服务器,但没关系,只要整个系统里多数服务器没问题,整个系统就能提供服务。
最后的效果是,当我们服务器发生故障,30秒就可以恢复数据,而且完全不丢数据。这是以前的金融系统完全做不到的,所以,这在金融行业也是一个巨大的创新。
三、OceanBase的两处技术突破
1.分布式架构
第一次在金融行业得到大规模验证的分布式数据库,分布式架构取代了集中式架构,目前主要是OceanBase,也只有OceanBase能够处理这么大的金融规模的数据量。
2.自主创新系统
OceanBase的代码每一行都是自主研发的,没有一行是用开源的代码,因为我们选择做自研数据库的那天起,就希望做一个100%代码版权的、真正解决业务痛点的、能有最佳实践的分布式数据库。
2018年双十一期间,蚂蚁金服背后的核心数据库,每秒处理25.6万笔,远超VISA(维萨,一个信用卡品牌)。
在性能上,RPO(RecoveryPoint Objective 复原点目标)等于0(即故障恢复后不丢数据),RTO(Recovery Time Objective 复原时间目标)小于30秒,2018年双十一期间每秒可处理4200万条SQL,无需大/小型机,无需高端存储,整体成本相比传统IOE架构大幅度降低。
我们是一个诞生于互联网场景的数据库,通过率先服务好互联网场景下的自身业务,慢慢将这个数据库做稳定、做成熟,再一步一步推向整个金融行业。
虽然这个过程非常艰辛,也遇到过各种各样的问题,但我们抓住了很多关键时间点,要么在产品层面破局,要么是在组织层面破局,现在也开始服务中国很多金融机构。
我相信,整个OceanBase数据库最终一定是需要走出金融机构,而且走出中国。我们相信,数据库一定是世界的,要么做好,要么就不做。
最后,我想借这个机会呼吁一下,希望更多人能够加入到自研数据库这样的行业,未来10到20年,这个行业是技术研发最大的趋势;同时,这个行业也非常有意思。
谢谢大家,以上是我的云栖时间。
*文章为作者独立观点,不代表笔记侠立场。
主办方简介——
云栖时间,云栖大会的子活动之一,采用独立话题演讲的活动形式,涵盖科技跨界、科学家、科幻、技术人生等领域的内容。吸引在垂直领域内有号召力的内外部嘉宾,通过科技、技术强相关的有趣故事,丰富云栖大会多元维度的优质内容。
补充背景:今年双11当天,OceanBase数据库再次刷新数据库处理峰值,达6100万次/秒,创造了新的世界纪录。
而在此之前的10月份,据权威机构国际事务处理性能委员会TPC披露:蚂蚁金服的分布式关系数据库OceanBase,打破美国甲骨文公司保持了9年的世界纪录,成为首个登顶该榜单的中国数据库系统。解决了困扰国家已久的信息技术三大软肋(“CPU芯片、操作系统、数据库”)之一的数据库难题。