8 月 10 日,2022 OceanBase 年度发布会在京沪深三地同时召开,OceanBase 创始人兼首席科学家阳振坤在会上分享了《OceanBase 4.0 核心技术解读》的主题演讲,向大家分享了 4.0 的核心技术突破——业内首个单机分布式一体化数据库,RTO 从 30 秒迈入 8 秒,进入真正的秒级容灾时代。
在发布会上阳振坤从 OceanBase 的 0.1 版本聊到今天的 4.0 发布,并表达了 12 年技术演进背后的思考。“从 2010 年 OceanBase 的第一个版本开始到今天,已经过去 12 年多的时间,我们开发了好多的版本,可以说每一个版本都是整个 OceanBase 梦想的一次次迭代、一次次升级。”阳振坤表示。
0.1 时代,准分布式
基线+增量、中心写+分布式读
0.5 时代,高可用
正式启用 Paxos 三副本
1.0 时代,迈过分布式门槛
解决分布式事务
2.0 时代,原生分布式
水平扩展、存储压缩,两次登顶 TPC-C 榜首
3.0 时代,Oracle 兼容+开源
走出蚂蚁集团
4.0 时代,单机分布式一体化
业内首个单机分布式一体化数据库,RTO<8s
以下为演讲实录:
在 OceanBase 的 0.1 时代,我们要解决淘宝收藏夹的问题,当时淘宝收藏夹面临着巨大的业务压力,我们在技术上采取了两个对应策略。
第一个策略是用了数据从来没有用过的结构——把数据分成基线和修改的增量,基线放硬盘,修改的增量放内存。很多人对这个方案是质疑的,因为关系型数据库从来没有人这么做过,我们直到现在也只找到这一个办法来解决收藏夹的问题。
今天看这个技术方案确实给我们带来了很多挑战,因为传统的数据库是定长的页,它的执行只需要针对这一个对象,但 OceanBase 的基线是定长的数据块,它的修改内容在内存中是变长的,每次读都要做两者的融合。虽然给我们的评估优化器带来了很大的困难和挑战,但也给我们带来了很大的收益和好处。
尤其是在今天,我们想把交易和分析在一个系统上进行的话,曾经大家都认为这件事是不可能的,所有系统的列存都是批量更新,而交易的数据库都做到了实时更新,但 OceanBase 把这两者统一了——都能做到实时更新,就是因为我们有基于内存的增量。
第二个策略是半分布式结构。当时团队刚刚组建,人员的成长还需要过程,但业务却没有太多时间等待。所以,我们决定先采用一个中心的写节点加上多个读节点,读是分布式的,写是集中式的。
2013 年,支付宝交易库和其他核心系统决定从 IOE 升级至 OceanBase,当时面临最大的挑战就是数据的高可用、系统的高可用。为此,我们决定在关系型数据库上第一次采用三副本架构,在三个副本中选两个副本,当两个副本达到一致,整个数据也就达到了一致。
也就是在这一年,我们第一次在关系型数据库这个产业里提出 RPO=0,这是传统集中式数据库从来没有做到的;我们第一次在整个数据库产业里做到并提出 RTO<30s,如今,RTO<30s 已经成为中国数据库业界的标准。
2014 年,支付宝交易库上线的同时我们开始了 1.0 的开发,因为 OceanBase 的 0.5 还是维持中心单一的写节点,随着业务的发展,瓶颈越来越突显。所以,从 2014 年到 2016 年整整两年的时间,我们绝大部分资源都投入到把“半分布式”变成“全分布式”,让各个点都能写入。这是一个很大的挑战,但当这个挑战解决后,我们把支付宝的账务库在 2016 年后都逐步迁到了 OceanBase,真正在关系型数据库里做到了多点写入。
2.0 时代是 OceanBase 迈过分布式门槛之后的又一次进步。因为 1.0 是我们第一个真正的分布式版本,这在整个世界范围内的关系型数据库里,也算是最早期的版本,但它在性能功能方面有不少欠缺,所以在2.0 进行了不少的完善。借助这个完善,我们第一次登上了全球数据库性能的基准测试榜首,我们第一次做了一个小规模测试,做到了 6000 万,是当时 Oracle 的 2 倍。几个月之后,我们做了一次比较大规模的测试,做到了 7 个亿,直到今天 TPC-C 榜首第一、第二还是 OceanBase。
2.0 之后,我们逐步开始走出阿里巴巴和蚂蚁集团,开始向全社会提供数据库服务。在3.0版本时,我们进行了 TPC-H 的打榜,当时也以 1526 万QphH 拿下第一。
由于之前的版本更多是在蚂蚁集团场景下优化的,面对的都是非常高配置的服务器,我们走出来之后发现遇到的很多场景并不完全是这样,还遇到了很多分析上的需求。所以,我们一方面在进行小型化的工作,为今天的 4.0 奠定基础;另一方面,我们在逐步增加分析的能力,满足更多业务更多客户的需求。
12 年成长磨炼和积累,成就了今天的 OceanBase 4.0 小鱼,如同杨冰、韩富晟和大家展示的一样,4.0 我们有了很多新的突破。
今天我给大家展示两方面:第一,是我们的单机一体化架构。以前大家都知道OceanBase 是个分布式系统,我们可以支持很多大型的高并发业务,在过去几年努力的基础上我们能够支持从小型到中型到大型的各种业务。从我们的了解来看,今天的 OceanBase 4.0 是业内首个把分布式跟单机做到一体化的。不只是树莓派,普普通通的个人电脑也将能流畅运行 OceanBase 4.0。
第二,我们进一步实现了以前提出的目标。2014 年初,我们第一次在关系型数据库这个产业内提出了 RPO=0,就是没有数据损失,业务能够在 30 秒之内实现故障下自动恢复,经过这几年的努力我们在这一点上有了进一步的提高,我们把机房故障级单机故障做到 8 秒。F1 赛车最早更换轮胎的时间是几分钟,有点像我们数据库,前几年大家故障的时间都是分钟计时甚至半个小时,经过几年的努力我们能保证业务在 8 秒时间内恢复,给客户给业务提供更好的可用性。
最后是开源,随着 OceanBase 4.0 的发布,我们将做到企业版和社区版拥有同等性能。除了少数管理能力和安全能力外,其他 MySQL 兼容能力都会开源、开放出来,希望 OceanBase 能够给整个社会整个产业提供更大的动力。
过去 12 年的时间里,OceanBase 的很多同事凭着热爱、凭着梦想一直在数据库最基础的产业上奋斗前行。刚才有嘉宾问我们与其他的数据库最主要的差别是什么?我说最主要的差别是 OceanBase 数据库的每一行代码都是这些同学用他们的热爱、用他们的梦想一行一行敲出来的。所以,我们今天有能力解决大家使用过程中遇到的各种各样的问题,除了这些热爱和梦想之外,我们还有这么多合作伙伴、客户、用户的支持,相信 OceanBase 未来会有更大的发展。谢谢大家!