本文选自 InfoQ《中国卓越技术团队访谈录》(2022 年第四季),此次采访,希望能够将 OceanBase 具有创新性的技术演进历程展现在读者面前,让开发者和业内人士更加深入了解与 OceanBase 数据库有关的一切。
基础软件是个需要漫长时间积累才有可能沉淀出结果的领域。作为三大基础软件之一的数据库技术,没有十年以上的深耕和积累,很难在巨头林立的国际市场砸出水花。
我国数据库技术相对于欧美国家起步较晚,大约始于七十年代中期。1977 年 11 月,由中国科技大学在黄山主办了第一次数据库技术研讨会,标志着中国数据库软件产业进入了技术跟踪期,其后经历了三十多年的发展,中国数据库软件产业相继经历了强势垄断期、创新发展期,最终进入了目前的产品成熟期。
2009 年,淘宝发起了“双十一购物节”活动,使得瞬时数据呈爆炸式增长,传统单机数据库很难应付峰值时的海量数据,这也就有了 OceanBase 诞生的土壤。
2014 年,OceanBase 数据库的自研工作取得了一定成效,研发团队将支付宝交易业务中 10% 的任务量迁移到了 OceanBase 上,这是整个核心业务使用 OceanBase 迈出的第一步。对于业内来说,也是核心业务使用国产数据库的一个 0 的突破。
2016 年,OceanBase 数据库发布了架构重新设计后的 1.0 版本,支持了分布式事务,提升了高并发写业务中的扩展,同时实现了多租户架构,这个整体架构延续至今。同时,到 年“双 11”时,支付宝全部核心库的业务流量 100% 运行在 OceanBase 数据库上,包括交易、支付、会员和最重要的账务库。
至此,阿里巴巴实现了数据库自由。
2017 年,OceanBase 数据库开始试点外部业务,成功应用于南京银行。
2018 年,OceanBase 数据库发布 2.0 版本,开始支持 Oracle 兼容模式。这一特性降低应用改造适配成本,在外部客户中快速推广开来。
到了 2019 年,OceanBase 数据库 2.2 版本参加代表 OLTP 数据库最权威的 TPC-C 评测,以 6088 万 tpmC 的成绩备受瞩目。随后,在 2020 年,又以 7.07 亿 tpmC 刷新纪录。OceanBase 数据库是第一个也是截止目前唯一一个上榜 TPC-C 的中国数据库产品。
2021 年,OceanBase 数据库 3.0 版本基于全新的向量化执行引擎,在 TPC-H 30000GB 的评测中以 1526 万 QphH 的成绩刷新了评测榜单。这标志着 OceanBase 数据库一套引擎处理 AP 和 TP 混合负载的能力取得了基础性的突破。
在 2021 年一个特殊的日子——六一儿童节,OceanBase 数据库宣布全面开源。
经过多年的发展,在 8 月举行的 2022 OceanBase 年度发布会上,版本代号为“小鱼”的 OceanBase 4.0 正式发布,这是业内首个单机分布式一体化数据库,它实现了单机部署并兼顾分布式架构的扩展性与集中式架构的性能优势,不仅一举突破了分布式数据库单机性能的瓶颈,实现了单机性能赶超集中式数据库的行业历史性“跨越”。
OceanBase CTO 杨传辉在接受 InfoQ 采访时表示:“OceanBase 4.0 版本的发布,是我们对分布式数据库该怎样演进的一个重新思考。我们在这个版本上引入了一个一体化结构的理念,核心的目标是为了让这个产品能够通用,能够规模化地去支持大中小企业对数据库各种各样的需求,能够很好地适配在云环境中。从用户角度讲,4.0 版本与以往最大的不同在于它打破了分布式只能支持大企业、大体量数据的思维定式,让它也能够应用到中小企业中。”
随着大数据、5G 和 AI 的发展,目前市场上的许多数据库产品已经十分成熟。就拿单机数据库来说,如果数据量不是特别大,性能较好的单机数据库足以应付。
但是,当数据库数量变大以后,一些产品的缺点就暴露出来了:他们虽然采用了可扩展、灵活伸缩的分布式架构,但有些却连 SQL 都不支持;还有些虽然支持一部分 SQL 功能,也支持一些分布式的能力,但是这些 SQL 在设计时都牺牲掉了某些单机性能,用户在面临数据库选型时就会选入困扰——没有一款数据库融合了集中式和分布式的双重技术优势。
所以在迭代 4.0 版本时,OceanBase 研发团队瞄定了这样一个用户需求痛点,首次采用了单机一体化架构,在保证数据库可扩展、高可用的分布式特性后还不会牺牲集中数据库的优势。
在此之前,几乎没有产品能够做到在分布式的情况下还能保证单机性能足够好且能够实现小规模部署、灵活易用,这些都不是过去分布式数据库追求的目标。而现在通过动态的日志流,把集中式日志流的优势和分布式的扩展性的优势融合到一个方案里,最终形成了的单机分布式一体化架构的解决方案。
从最初的 1.0 演进到 4.0 版本,OceanBase 在架构上完成了第三次升级。最早的 OceanBase 0.5 采用的是单写多读的架构,到了 2016 年左右,蚂蚁集团主要核心业务就都用上了 OceanBase 数据库,于是 OceanBase 进行了第二次架构升级,完全采用了分布式架构。再到 2022 年,研发团队将架构进行了第三次升级,也就是现在的单机分布式一体化架构,每次架构升级都耗时六年左右的时间。
杨传辉坦言,“每次版本的迭代,比技术本身更难的环节是做决策。如何平衡成本和收益之间的关系,也是要考虑的问题,我们能够预想到所面临的技术挑战是非常大的。不过,我们对它的前景也是很乐观的,如果做这件事的收益足够大,大到甚至能够颠覆整个数据库行业的时候,我们就愿意去试一试。”
作为 OceanBase 高级研发总监的韩富晟,在这一点上深有体会。韩富晟表示:“我们决定做这件事情因为我们认为单机分布式一体化架构会是未来数据库发展的一个方向,因为它真正能解决客户的痛点。做了这样一个大的变革,对 OceanBase 自己来说也是一个颠覆,我们有 80% 的基层研发人员都投入到了 4.0 版本的迭代中。为此我们重写了底层架构,包括重写了存储模块、事务模块等,通过一系列重写保证了单机性能上的优势。”
尽管在架构上进行了三次调整,但自 1.0 版本发布以来,OceanBase 走分布式架构这条路的决心从未动摇过。
最近几年,分布式数据库在国内发展较快。一方面,技术的发展还是由业务和需求驱动的,丰富的数据库应用场景,新一代信息技术与实体经济的深度融合,这些变化都给数据处理和存储的主要核心技术带来了前所未有的发展机遇。数据规模和数据使用复杂程度的提升,使得老旧的数据库形式面对当下许多应用场景时变得力不从心,分布式数据库成为了很多企业的必然选择。
杨传辉称:“对于很多企业而言,分布式数据库就好比现在的电动汽车。当电动汽车产业刚刚起步时,它的市占率是很小的,但是在经过了几年的发展后,我们可以看到,越来越多人在购车时会优先选择电动汽车而不再是燃油车。分布式数据库也是这样,未来分布式会成为一种能力,蕴含在每一代新型数据库里面,回顾过去也可以发现,集中式数据库都是老一代数据库,而新兴的数据库都是面向云的、分布式的架构,它们更加弹性、更加灵活。分布式就犹如电动汽车的引擎或者叫电池,未来企业做数据库选型时,只要选择的是新一代数据库,那么都绕不开分布式。”
数据库本身是一个极其庞大的系统软件,它之所以能成为一个非常大的市场,就是因为它解决了企业业务中大大小小、核心的、边缘的不同业务场景的各种各样的需求。如果一款数据库都能很好的满足企业的各种需求,那么企业也愿意在数据库上投入更多成本,让企业的数据管理和使用更有效率。
归根结底,分布式数据库的本质还是数据库,它的存在就是要去解决实际业务场景里的各种处理数据的需求,包括首先要在同一个系统里去做交易处理和分析查询提供更有效率的结果赋能业务端;其次是扩展,解决研发团队按需扩容、不需要按照业务波峰额外准备硬件资源的问题;然后是高可用问题,集中式数据库的系统可用性很大程度构建在可靠硬件的基础上,分布式架构将高可用问题转变为软件解决。
企业在部署数据库时,除了要考虑分布式数据库本身的问题外,还要注意其与其他基础软件适配性。
韩富晟提到,在 OceanBase 与其他软件适配过程中,遇到的最大挑战之一是多核心扩展性。目前很多企业采用的是以 ARM 核心为主的架构,与 x86 的核心相比,ARM 的单核心的处理能力会相对弱一些,需要更多的核心来去支撑更多的处理能力,这个时候就需要数据库具有更好地去适应 CPU 多核心扩展性方面的能力。此外,一些企业有硬件替换的需求时,比如硬盘、机器的交换机、CPU 等,OceanBase 的容灾能力也能帮助企业把这过程中出现的故障屏蔽掉,让企业顺利完成替换。
解决了分布式数据库自身问题以及适配工作后,是否意味着分布式数据库已经成为了主流数据库?关于这个话题,过去几年争议度还是比较大的。但随着大众对分布式的接受程度和诉求越来越强后,这些争议的声音逐渐弱了下来,并且分布式数据库自身也在朝着越来越实用、易用的方向演进。
据杨传辉判断,未来的分布式数据库将向三个方向演技:第一,从架构上来看,单机分布式一体化架构将是大势所趋。分布式数据库会成为一个类似电动车的电池这样的一个核心技术慢慢应用到整个数据库的领域,而不只局限在大数据这样的细分场景中;第二个方向是混合负载 HTAP,也就是在做好 TP 的同时也会把一些偏实时性的 AP 放到同一个场景里去;第三个方向是多云。未来的数据库一定会越来越往云上发展,云数据库会越来越中立。
即便我们看到了分布式数据库在市场上备受追捧的现状,但企业在面临数据库选型时依然会在上百款数据库产品中摇摆不定。到底什么样的数据库是对业务有所助益的?分布式数据库选型可以从哪几个方面进行考虑?
在数据库选型过程中,首先最重要的考量因素就是它的稳定性和成熟度。因为数据库本身是一个功能繁多又极为复杂的系统,它的稳定性需要去实际业务场景中打磨和验证的,不成熟的产品,无论是软件还是硬件对于企业业务迁移的影响都是很大的。
其次,是产品的兜底能力。企业本身的业务也要发展、变化,在这个过程中,一定要有预防所有风险的能力。对于底层系统或基础软件来说,兜底能力就是不管遇到任何问题和异常,都能快速定位问题并解决问题,所以这背后一定要有一个技术过硬的团队来支撑。
第三,要评估这款数据库是否代表着先进技术的发展方向,是否能够持续迭代和改进,只有顺应技术潮流的技术产品才能走得更远,更有发展前景。
最后,要衡量这款数据库的一些具体性能,到实际业务场景中去测一测便可知晓。
在数据库选型过程中,要考虑数据库的稳定性和成熟度,还要看产品的兜底能力。而归根结底,这些技术能力的背后,还是要看到底是怎样一群人在支撑着这款产品。
在问及 OceanBase 在招聘工程师时,最看重他们的什么品质时,杨传辉坦言,是他们对一件事情的耐心和坚持。
数据库作为一款基础软件,其研发周期和困难程度相较于应用软件要漫长和困难得多。虽然近些年来互联网的兴起让手机操作系统 Android、IOS 也在快速演进,但也基本上是一年多才会发布一个版本,相对于 App 十几天、个把月就出一个新版本,还是要慢得多。
更多的技术,其演进过程都是非常漫长的。比如 IPv6,上个世纪开始,人们就开始焦虑 IPv4 地址会用完,但直到今天,还只是小规模在应用。HTTP 从 1.0 走到 2.0 也花费了快 10 年的时间,可见,做这些基础软件的研发,并不是那么容易,而从事基础软件研发的工程师们,也要耐得住寂寞,才能终有收获。
杨传辉表示:“在招聘时,我们比较关注应聘者对计算机基础知识的掌握、他们的学习能力,而不是他们的行业经验。从技术的角度来看,我们不怕一个人没有经验,因为他只要来到 OceanBase 团队,他会和这个行业里顶尖的数据库人才共事,能很快地跟着团队成长起来。此外,我还会特别关注他们是否真正有耐心能沉下心来钻研一件事,也就是要能耐得住寂寞,这个是进入 OceanBase 的必选项。那种只想快速取得成功、急于求成的人,我肯定不会要。因为这些人在 OceanBase 是没有办法取得他们想要的成绩的。能耐得住寂寞,说明他至少对这件事情是有坚持,有信念感的。这样他能在做这样一个世界级的技术项目里面收获更多快感。在 OceanBase 团队内部,很多人陪着 OceanBase 走过了十几年,如果不是情怀使然,很多人都留不下来。”
杨传辉,花名日照,现任蚂蚁集团企业级分布式关系数据库 OceanBase CTO。2010 年作为创始成员之一加入 OceanBase 团队,主导了 OceanBase 历次架构设计和技术研发,从无到有实现 OceanBase 在蚂蚁集团全面落地。同时,他也主导了两次 OceanBase TPC-C 测试并打破世界纪录,著有专著《大规模分布式存储系统:原理与实践》。目前,杨传辉带领 OceanBase 技术团队致力于打造更加开放、灵活、高效、易用的下一代企业级分布式数据库。
韩富晟,花名颜然,OceanBase 创始成员 & 资深研发总监,负责 OceanBase 分布式架构与高可用架构的设计与实现,主导了 OceanBase 4.0 版本架构升级,致力于将分布式数据库技术带到更多使用场景,更好支撑海量数据的处理需求。