摘要:在开源数据库如此流行的今天,做自研数据库对于很多人而言是一条小众的路线。那么我们为什么会选择做自研数据库?自研数据库对阿里巴巴、对中国的价值在哪里?我们又是如何在每个关键阶段做到了技术的破局。蚂蚁金服研究员、OceanBase总架构师杨传辉(日照)在云栖时间与你分享OceanBase自研背后的故事。数据库、芯片、操作系统是整个IT产业中最重要的三大基础技术,在国家和企业层面自上而下投入了大量的人力和物力。在中国,甚至采用了举国体制来发展自研数据库。二十年过去了,大家仍然觉得国产数据库做的还不够好,或者说还没有国外数据库厂商做得好。很多人会问,那么自研数据库的价值到底是什么?01互联网时代数据库研发的价值数据库行业每年的全球产值超过400亿美金,其中最大的一家厂商是Oracle,占据了50%以上的市场份额和绝大多数的利润。Oracle公司目前的市值已经接近2000亿美金,它只做了一件事,就是做数据库,并且做到了极致。目前,Oracle市值比中国绝大多数的公司都要高,仅次于阿里巴巴、腾讯这样的巨头企业。Gartner发布的2018年操作型数据库(Operational DBMS)魔力象限(Magic Quadrant)中,共有14家企业入选。LEADERS领导者象限中有几个最主要的玩家,它们是拥有先发优势的传统企业级数据库的代表,包括Oracle,SQL Server以及DB2。基础产业往往需要至少十年时间的积累,才能取得一些小小的成就。云计算犹如一场龙卷风,仿佛一夜之间席卷了整个软件行业。云计算的到来造就了几家巨头企业,其中最著名的一家公司叫AWS。因为云计算这个最大的变量使得AWS数据库进入了领导者象限,这在以前是不可想象的。数据库只要形成壁垒,就会不断地产生正向循环,后来者很难去打破先行者的优势。再来看远见者象限,2018年只有两家企业上榜,一家是Google,另外一家就是阿里云。阿里云首次入榜即成为黑马,中国力量正在逐步显现。 未来的5到10年时间将是整个中国数据库产业最大的拐点,也是数据库从业者所面对的最大的一次机会。云计算和自主创新将会引领新一轮的技术变革。 过去的20年可以称为IT时代,国家投入了很多资源做国产数据库。有很多人认为国产数据库做的还不够好,这背后并不是因为做国产数据库的团队他们没有愿景,或者没有技术能力,而是因为在这之前国产数据库一直都缺乏业务场景。由于没有实际的业务场景,国产数据库最开始连做什么都不清楚,只能盲目模仿国外的数据库。模仿者永远不可能超越先行者。因为模仿意味着缺乏核心竞争力,而商业的选择永远都是选择最好的。缺乏核心竞争力就会导致没有实验田,没有试验田也就意味着只能继续模仿,这就陷入了一个无限循环。 金融、电信、能源等关键领域都在试图摆脱对国外专用软硬件(大/小型机、高端存储、数据库)的重度依赖。同时,随着移动互联网的迅猛发展,数据库行业的需求发生了很大的变化。以前的企业都在处理小规模的数据,而如今每个企业都想成为下一个像阿里巴巴一样的平台型公司,这些企业希望转型到分布式架构以此来拥有大规模的数据处理能力。在处理海量数据这样的业务需求前提下,国产数据库需要做的就是必须把数据库的性价比做得很高,成本要大幅低于传统的IOE架构,只有这样才能存活下去。这就是互联网时代的生存法则。 2012年的时候,我第一次去美国,当时帮家人和朋友在奥特莱斯买了很多东西。这两年,当我再去美国出差,已经很少再去奥特莱斯购物了。我们发现,在经济、技术和商业领域,中国跟美国的差距正在变得越来越小。十年前,如果你身边有一位来自美国谷歌的工程师,所有人肯定都会瞪大双眼,觉得他肯定是个神人。现在,我们会觉得美国的工程师跟中国工程师相比,其实并没有特别大的差距。中国已经具备在核心技术领域自主创新的能力,因为中国有非常大的工程师红利,这个红利是显而易见的。强大的业务场景是做自研数据库的基础。 自研数据库有两条路径,第一条路径是基于开源数据库。刚开始直接用开源数据库,用到一定阶段再基于开源数据库打patch,成为开源数据库的commiter,然后再进一步改变开源数据库中一些非常核心的模块,基于开源数据库做半自研,直到最终完完全全掌控开源数据库。 第二条路径是从头开始完全自研,这是一条鲜有人选的道路。第一条基于开源数据库的路径其实是国内除OceanBase以外大部分公司所采用的路径,而OceanBase则采用了一条从零开始自研的路径。两条路径其实并不存在孰优孰劣,但这两条路径的终局都是为了解决中国数据库当前所面临的自主创新的问题。 当下,已经有越来越多的企业希望享受到分布式技术的红利,包括可扩展、高可用、性价比、易用性等等。OceanBase选择从头开始做自研,这条道路虽然一开始非常艰难,但是越往后走其实会越容易。同样的,随着自研技术的不断发展,我们的技术研发团队也在不断成长起来。在快速成长的互联网企业中,人才才是企业的立根之本。OceanBase团队的技术愿景,是希望OceanBase能够成为可扩展的Oracle。 Oracle至今已经发展了40多年的时间,不可否认的是在当今世界它是一款非常优秀的数据库产品,它的优势在于功能完善,性能优秀,同时拥有强大的生态。Oracle的整套技术架构是基于40年前的场景所设计的,40年前很多人甚至认为一个小硬盘就能把全世界的数据储存下来。在如今的大数据库时代,井喷式爆发性增长的数据让已有的集中式架构越来越无法承载。 如果设想能够给关系数据库安上一个分布式的翅膀,最终研发出一款能够支持海量数据可扩展的Oracle,既拥有Oracle的强大功能,使用起来又像Oracle一样易用,同时这个数据库还能享受分布式技术的完美优势。对于用户来说,这不就是一款完美的数据库产品吗? 自研数据库的技术破局阿里巴巴是实验数据库最好的企业,因为在整个互联网行业,甚至是全中国的企业中,阿里巴巴拥有着最丰富的业务场景,包括电商业务、金融业务、物流业务、国际业务等等,而且每一个业务都对数据库有强需求。 最开始,OceanBase作为一个公司内部刚刚孵化出来的技术创业项目,前有商业数据库占位,后有开源数据库追赶,业务同学根本不买单。直到OceanBase成功应用于第一个业务,淘宝收藏夹后才逐渐打破僵局。后来经过了整个团队接近四年时间的发展,OceanBase在整个公司已经有了接近100个业务系统逐步上线。这期间,OceanBase所面对的最大的难题就是一直没有进入到阿里巴巴最核心的业务——也就是交易支付业务。 直到2014年的,OceanBase在支付宝遇到了一个宝贵的机会,当时支付宝的数据库用的是Oracle,而在公司的整体策略下希望能够去掉Oracle,彼时有两个选择,第一个选择是MySQL,第二个选择是OceanBase。最终在那一年的双11,OceanBase 0.5 版本成功替代Oracle应用于支付宝核心交易系统,承担了10%的流量,顺利通过了交易洪峰的考验。这其中最核心的原因就是OceanBase拥有一个非常关键的技术破局点——高可用的能力。当服务器出现故障时,系统能够自动恢复而且不丢数据。OceanBase首次在金融系统中引入了Paxos协议,这也是所有分布式系统里最难理解的协议。它的原理说起来很简单,用我的话总结就是三个臭皮匠顶过一个诸葛亮。 在传统的数据库中,我们把每一个数据库比喻为一个诸葛亮,每一个数据库都非常的可靠,基本不会出现问题。但是诸葛亮也会生病,OceanBase采用了Paxos协议,虽然每一台机器都是一个臭皮匠,都是普通的服务器。如果一个臭皮匠出了问题没有关系,只要整个系统里多数的臭皮匠是好的整个系统就能提供服务。 OceanBase采用Paxos协议最终成功实现了当服务器发生故障时30秒内能够自动恢复,而且完全不丢数据。过去,如果金融系统出现了故障,恢复的时间以天为单位。这在金融行业是一个巨大的创新。数据库一般会把业务分成两个部分,第一种是OLTP,用于在线事务处理型业务,另外一种是OLAP,用于数据分析型业务。过去数据库往往会把OLTP和OLAP这两种业务分别放到两个数据库里。100%的OLTP和100%的OLAP都极其少见,两者往往是并存的,所以OLTP的业务会放在OLTP数据库里,OLAP的业务会放在OLAP的数据库里,然后再进行数据抽取的操作,定期把OLTP数据库里的数据抽取到OLAP数据库里,整个过程非常麻烦,时效性也得不到保证。 OLTP和OLAP业务部署两套系统,维护成本很高,因为两套系统是不一致的。OceanBase的技术革新点在于在同一套引擎里同时处理OLTP和OLAP,即HTAP处理能力。得益于成长在蚂蚁金服的土壤上,OceanBase具有强大的在线事务处理能力,同时OceanBase基于分布式架构,天然能够通过分布式的能力做大规模的数据查询。这也就使得OceanBase有这样的基因在一套引擎里既能够处理OLTP业务,又能够处理OLAP业务,一站式地解决企业级应用的各种需求。国外的商业软件的功能非常强大,也非常细致,对于客户而言希望你既能够跟这些国外的商业数据库一样具有丰富的功能,同时也希望你能够以“互联网速度”完成对它们的兼容。我们还在Oracle兼容性方面持续耕耘,目前可以说是“万里长征的第一步”。随着基本功能的支持和完善,可以预见,更大的挑战是在整体的用户体验上能否追上甚至超越Oralce。 蚂蚁金服OceanBase的最佳实践OceanBase是阿里巴巴和蚂蚁金服自主研发的分布式关系数据库,我们第一次将分布式系统里最难的Paxos协议引入到关系型数据库,并且真正实现了服务器故障完全不丢数据。同时,OceanBase是一套工业级的shared nothing分布式数据库架构,无需业务修改代码。对于MySQL全兼容,Oracle部分兼容,原生多租户支持。 目前,OceanBase承载了支付宝核心链路100%的支付量,以及网商银行的全部流量,而且我们也随着蚂蚁金服的国际化战略进军到国际业务。今天已经有数十家金融机构正在使用OceanBase,并且应用在丰富的业务场景下。 OceanBase能够支持不同的业务类型,在互联网交易业务场景中使用OceanBase的客户目前包括建设银行、常熟农商行、东莞银行等;在互联网核心系统中使用OceanBase的客户包括南京银行、苏州银行、天津银行、广东农信、山西省农村信用社等;在保险业务场景中,人保健康险、国泰等机构也在使用OceanBase;同时在传统业务升级、主机下移场景下,西安银行、招商证券等客户同样基于OceanBase。最后,我们之所以做自研数据库OceanBase,除了技术情怀,更多的是业务需求的驱动。OceanBase是一款诞生于互联网场景的分布式数据库,通过先服务好互联网场景下自身的业务,然后不断打磨产品把数据库做得更稳定成熟,再一步一步推向整个金融行业。这个过程毫无疑问是充满艰辛的。目前,OceanBase已逐步成长为蚂蚁金服后台唯一的数据库,并且已经开始服务于更多的外部金融机构。我们也坚信,未来OceanBase能够以金融为起点,走出中国,走出亚洲,能够为各行各业提供优质的关系数据库服务。