We're sunsetting PodQuest on 2025-07-28. Thank you for your support!
Export Podcast Subscriptions
cover of episode 阳振坤:这个世界需要怎样的数据库

阳振坤:这个世界需要怎样的数据库

2025/3/27
logo of podcast 中科院格致论道讲坛

中科院格致论道讲坛

AI Deep Dive Transcript
People
杨振坤
Topics
杨振坤:我从北大跟随王选院士学习期间,受益于他“技术顶天,市场立地”的理念。这影响了我后来离开科研机构,投身互联网行业,并最终选择研发分布式数据库的决定。 在2002年,我看到了互联网的快速发展以及对数据库的需求,这促使我开始探索分布式数据库的可能性。当时,传统的集中式数据库已经难以满足大数据时代的需求,高昂的硬件成本和有限的容量成为瓶颈。而分布式数据库,凭借其可伸缩的容量和降低的硬件成本,成为了未来的方向。 在加入淘宝后,我开始研发OceanBase数据库。起初,最大的挑战在于说服核心业务团队尝试一个全新的、未经验证的数据库。然而,阿里巴巴内部业务的快速增长,特别是双十一期间的巨大数据量,为OceanBase提供了绝佳的测试和完善机会。通过在支付宝的应用,OceanBase逐渐成熟,并最终获得了业务团队的信任。 OceanBase的成功在于我们解决了分布式数据库中数据一致性和可靠性等关键问题。我们采用了“少数服从多数”的策略,通过多副本机制保证数据安全,并实现了快速自动恢复功能,将系统恢复时间缩短至几秒钟。 随着OceanBase在阿里巴巴内部的成功应用,我们开始将其推向市场。然而,市场竞争异常激烈,Oracle和MySQL等占据主导地位。为了在竞争中脱颖而出,我们专注于提供一体化的交易处理和分析处理能力。通过行存储和列存储的结合,我们能够高效地处理各种类型的数据库操作,降低用户成本,简化使用流程。 在数据库性能基准测试中,OceanBase取得了第一名,超越了Oracle,并改变了游戏规则。我们首次使用云上的虚拟机器进行测试,降低了成本,也证明了分布式数据库的优越性。 目前,OceanBase拥有大量的付费用户和开源用户,并正在积极拓展国际市场,目标是成为一个面向全球的通用数据库,服务于全球用户。

Deep Dive

Shownotes Transcript

大家好,我是来自欧新卑诗数据库的杨振坤很高兴能跟大家介绍过去在数据库方面的一些工作首先我很幸运的是当时上大学的时候我选择了北京大学并且遇到了王选院士我跟着王老师先做实习生后来跟着他读博士

在之后留在北京大学留在基产业研究所跟着王老师继续工作这两张照片大家左边的这张照片右手边的第二个人是王老师那在王老师背后在那个角落里的那个人就是我那时候的我比今天胖很多另外的一张照片是北京市的科技进步的艺能奖这个奖的大部分工作其实是我在王老师做博士七年做的

但是王老师仍然把我的名字放在第一位因为博士生的工作毫无疑问是在导师的指导下而且很多具体的方法算法上因为我当时在这个领域其实时间比较短也都是在王老师的指导下手把手地教出来的不仅如此我跟王老师我觉得这些年学到的一个更重要的东西就是标题上的一句话技术顶天 市场利定

15 年前我选择 OceanBase 数据库的时候也是这两句话在指导着我 2002 年的时候当时的其实整个互联网的发展已经非常的迅速对这个社会的影响也非常大我自己选择了说我打算离开科研机构离开北大我想到这个互联网的第一线去看一看

究竟在互联网里面在整个社会的第一线里面的一些工作跟在学校里面大概有多大的一些差别我当时离开了之后我到了联想的研究院后来也到了微软的研究院也做了一些工作一个我觉得幸运的是说我有机会能开始做分布式系统的工作这为我后来选择分布式数据库其实是奠定了一个基础

到了 2010 年的年初我离开上一家公司以后当时接到了接受了淘宝的这个 offer 那么在去淘宝报到之前我提了一个要求我说希望给我一个月的时间那一个月时间干什么我说我希望我也要休息休息另外我也要想一想我自己今后去做一些什么事情对那在这一个月的时间里我就在想我去了淘宝之后我能做什么事情什么事情

是能够发挥我的价值我是一个做软件开发的人淘宝做业务系统我肯定能做但是我觉得这个不是我最大的长项我最大的长项应该是底层系统那时候我就看到了数据库的机会第一就是数据库它是要一个高可靠非常稳定的工作的系统那么长期以来数据库的硬件一直是非常高端的硬件因为要可靠性很高到互联网以后

整个数据量业务量实际上是几百倍几千倍的增长那么如果在这种情况之下继续用这种高口号高单的硬件这个成本是很难接受的这个原因是说这种传统的用高口号的集中式的方式来做数据库的肯定是不适合今天这个大数据的时代的那么适合这个大数据时代的一定是分布式

但其实分布式数据库没有人做过因为它有很多的困难我自己我觉得正好有一些年的分布式的系统的经验或经历我觉得在这块上是有很大的机会能做出这件事情的所以这一个月的时间里让我基本上说我能够确定下来我应该能够做这件事情当然了最终我得要到了淘宝到了这家公司以后才能来确定说这件事情是不是能做的

那在接下来内容之前我先特别简单的跟大家说一下究竟什么是数据库我们很少的人会说直接用数据库因为大部分情况下数据库它实际上是通过业务系统来用的就我们用订票的软件用网购的 APP 在系统上做的时候那么这些业务系统其实才是真正跟数据库来打交道的

就像说我们买一张火车票选了个座位因为同时可能有很多人在买这一趟车子这个日期的车票那谁能真正的能保证说这张票一定只卖给了一个人呢数据库没有任何其他系统能做得到这一点那包括说这个

网上的购物这个衣服只有三件的库存那你要买了四件这是有问题的那谁能来真正的保证说这件衣服我就是最多只能卖出去三件数据库所以数据库它是整个我们这个信息社会的一个基石数据库也是一个市场价值非常大的产品在 2023 年全球的数据库一年的这个市场规模是超过了 1000 亿美元的

那么最大的是谁呢美国美国大概是有 50%的市场其次是欧洲那么再其次就是咱们中国了这么大的一个市场竞争对手一定非常强大而且数据库还有一个很好的特征就是它是跟语言文化跟地域无关的它是个全球通用的东西大家可能会想说

我们有什么定理信息的数据库我们有医药的数据库这些本身它是数据库的应用数据库系统本身它其实跟这些东西都是无关的那今天世界上数据库做得最好的是谁呢甲骨文而且甲骨文也是这些所有的数据库里面真正赚大钱的就是只有赢者通吃其他的数据库今天要么赚一点小钱要么就是在挣扎着

做数据库的时候我们还有一个很大的竞争对手是 MySQLMySQL 也是甲骨文的也是甲骨文这一家公司的因为它是个开源的数据库别人有开源有免费的数据库的时候为什么还要用你一个新的还要花钱的数据库呢这些都是我们做数据库的时候做之前需要考虑需要解决的问题但是我觉得其实是数据库我们改上了一个非常好的机会这也是我当时说服

这个公司的当时的相关的领导人来做这个决策的因为在一家互联网公司里做一个很长远的项目这其实是一个很大的挑战那当时我的老板是谁呢是今天整个阿里集团的 CEO 吴永明最终我是说服了他他也愿意来支持做这个项目的那我跟他讲到了几个原因第一个原因是说传统的数据库

是集中式的高端的硬件成本的非常高它的容量又有限那么互联网到来了之后这个数据量访问量实际上是几百倍几千倍的增长这个决定了说集中式的数据物这条路是很难走下去的就我们大家看一看安理的双 11 的数据就能看得到从 2009 年第一次双 11 大概做了 5000 多万的业务那么到了 10 年以后 2019 年的时候是 2600 多亿

几千倍的增长这其实是给我们做数据库提供了一个特别大的便利和机会因为数据库很复杂数据库又是整个业务系统的最底层它一出问题那就整个业务系统就完蛋掉了的

那么整个的阿里它有淘宝后来有了天猫还有支付宝它是需要大量的数据库系统的它整个业务系统都是构建在这个数据库上而且这些业务系统又都是自己做的所以有了这个机会我们的数据库能在这些业务系统上成长成熟起来

因为你做了一个数据库拿出去给外部的用户用很不稳定很不成熟的时候这个结果是很可怕的当然了内部的业务用新的数据库也是存在着很大的挑战跟困难但是总比外部要好得多所以说整个电子商务不止中国也把全世界把井喷式的发展特别是在淘宝在支付宝给了我们做数据库一个特别好的机会

第三个是人和其实这也是当时这个项目里很大的争议之一因为我没有数据库的背景在当时大家说一个没有数据库的背景来做一个这么难的项目我们国家也把全世界把它做了这么多年数据库已经有十几年就没有出现过新的产品了如果现在来看

差不多有接近 30 年的时间没有出来一个真正占据主流的这样的一个数据库产品为什么一样一个不懂数据科的人来做数据库我讲出来的原因是说

数据库在集中式的这条路上它的在技术上一定走到了尽头它一定要往下往分布式方向走而我自己正好最近这些年来做的就是分布式这方面的工作那大家说数据库发展了这么多年比方甲骨文它有十几万人为什么就没有做分布式数据库呢对吧所以我们整个安理当时包括淘宝包括支付宝才几千人我们一个人顶别人十个人我们也做不出来数据库跟人家来竞争了

确实看起来这些方面的困难很大但是分布式数据库它确实是它有非常大的价值第一它的容量是可以伸缩的那么解决了这个系统容量的问题而且硬件的成本也会大幅度的降低因为分布式系统它不再会使用也不再需要那些高端的硬件但是困难也非常大

大家知道数据库里面一些很关键的操作它是需要有所谓的原子性要需要有持久性的比方说转账从一个账户转到另一个账户如果你是一台集中式高可靠的机器它很少出故障但是分布式系统里面整个系统的故障是跟节点的数密切相关的节点越多大家都知道出故障的概率越大

两个账户当你把一笔钱从一台机器转到另一台机器的账户的时候如果那台机器坏了就像说银行告诉你我昨天跟人做了一笔生意别人给我转了一个亿银行今天告诉你说坏了昨天晚上我们的硬盘故障了你的一个亿没了我估计没有人能接受这样的情况所以这个是我们在做分布式数据库之前首先要解决的如果不解决这个问题数据库的最基本的东西就不成立了那么就更加不会有人用

我们解决的问题是简单的那样就是一个叫少数服从多数那么传统的高单硬件它很可靠很稳定

那我们今天用的是就是普普通通的 PC 机性价比很高但是稳定性可靠性没那么高那怎么办呢我们同一件事情一笔交易我们用三台机器来同时做所以这中间只要至少两台机器做成功了我们就认为这件事情是成功的因为不管什么时候任何一台机器坏了剩下的两台机器里面一定还有一台机器有数据那么我们能通过这一台机器能够把系统迅速地恢复回来所以我们其实是

改变了数据库的产业的一个故障的一个现象就是以前的这些高单一年它很少出故障可是你一定要准备它出故障的它也许一年两年不出但三年四年可能还是会出的一旦出了故障需要投入很大的人力或物力让这些系统来很快的恢复就总不能像我刚才跟大家说的银行说我的硬盘昨天坏了你的一个亿就没了

我们现在的做法是说我可以来自动地恢复而且这个时间很短几十秒

我们后来把这个时间做得更短了只要几秒的时间就能把这个系统来恢复特别是像在支付宝这种业务系统里面它的重要的系统是几百套甚至是更多这时候出故障的概率其实非常高了当我们把这个度道自动地恢复之后其实业务的同学就再也不用担心受话也不用担心说什么时候出了故障他们都要请来去应急去解决这些问题了

那么到了第二年就是 2010 年我们的第一个业务就是淘宝的收藏夹上线了收藏夹这个业务大家看起来可能很普通对吧它是把你感兴趣的商品收藏到放到你的这个收藏夹里面的你每次打开这个系统打开手机要把这些商品给你展示

但这里面有一个很大的挑战就是商品的价格状态实在变化了比方说有的商品降价了有的商品参与了一些促销还有的商品可能卖完了下架了那么这个系统必须给你实时展示这些信息假如说平均一个人收藏了几十件一百件商品那么这个系统在你打开收藏夹的时候它要去查商品库把每一件商品的状态都要读出来价格是不是下降了这些状态都要读出来来更新

如果你收藏了 100 件它要去读 100 次那么商品这个数据库就有一个很大的压力我们大家想它是一个 100 倍的放大如果你收藏了更多的商品这个放大的系数更大那我们解决这个问题的办法是说我们把这些商品的修改

放到了内存里面就是有点像传统的图书馆你传统的商品正常的你是放在一个大书架上图书那些变化了的书是放在一个小的书架上我们把这修改的信息放在了这个内存这个小书架上那么每次要展示的时候我只需要去看这个小书架

小数学第一内容少第二它在内存里速度也非常快所以这样我们就可以很快地把这个信息最新的信息得到暂时给这个用户解决了它的问题但是接下来我们遇到了非常大的挑战就是那些各种各样最核心的业务都不愿意来尝试一个新的数据库

那么这件事情我是充分地理解的没有一个核心的业务来愿意尝试一个新的没有证明的数据库但是反过来一个数据库没有大量的使用你是没有办法来证明说它是稳定的它是可靠的

所以 2012 年底我觉得整个集团给了我们这个团队一个复活的机会就是说我们从淘宝到了支付宝我们重新来找自己新的机会如果没有这一次这样一个复活的机会我觉得就没有今天的一切那么到了支付宝之后困难仍然是在的当 2014 年决定说在支付宝的交易库使用 Oceanbase 的时候最后困难变得非常非常的大

那支付宝是干什么在双十一它就是要做交易如果这个交易库不能工作了整个支付宝就完全不能工作了所以业务方面肯定是有非常大的担心或非常大的压力的

那么当时在极大的困难之下我给我们当时公司的董事长兼 CEO 就是彭雷我们写了一封邮件就说明了一些情况我说确实要给我们这些技术团队一些机会让我们能够来尝试对吧那最后大家经过很多人的争吵决定来给了我们 1%当然了对于业务来讲 1%也是个很大的风险因为支付宝有几亿的用户那么 1%

也是几百万的用户如果一旦有问题有故障他们受到的影响也会非常大那么后来的故事的发展其实真有点戏剧性因为到了临近双十一前夕我们要对整个系统进行压力测试后来大家发现整个系统的压力按照预定做到 90%以上的时候当时用的 Oracle 数据库开始报错因为到了它的性能的天花板

所以当时的业务谈论来找我们说给你们 10%行不行我说我们当然派手欢迎了所以运气的是说在双十一的时候我们整个系统其实是非常平滑地支撑了这个业务也得到了大家的信任那在随后的一两年里面我们把支付宝的所有其他的核心业务都逐步替换了比方说包括金融系统里面最最核心的账务库

那么从 2016 年的底我自己就开始思考这件事情就是说随着我们在整个蚂蚁集团这个数据库的替换逐步的替换那我们这个团队也看到了内部的这天花板那我们就需要往外面去走那往外面去走我们其实遇到了问题在前面也跟大家提到过第一商业上的数据库 Oracle 非常的稳定

还有开源的免费的数据库 MySQL 那究竟什么人他愿意来买我花钱买我们这个数据库呢因为这个时候让我想到了一件事情数据库其实是要干两件事情一个是我们前面讲了很多要做交易的处理其实还要干一件事情做报表 做分析的处理

由于数据量的增长传统的集中式数据库已经很难来做这件事情或者根本不能做所以很多业务系统是一套交易数据库一个大数据平台或者一个大数据系统用后面的这个大数据系统其实本质上它也算是一个一类的数据库来做这个分析这样让整个系统很融种成本也很高并且有很多整个使用方面的挑战而我们有了分布式这个能力我们容量不会成为一个问题

那我们是有可能在这个系统里面既把交易做了又把分析做了既降低用户的成本又给用户在使用上得到极大的简化我觉得这个应该是我们今后的机会那走出去之后其实我们遇到了跟内部类似的困难甚至是更大

因为没有人知道欧星贝斯这个数据库对吧而且大家更多的担心是说甲骨文这么多年都没做出分布式数据库对吧你们凭什么说你们做出来的分布式数据库我们当时的团队规模也小也就是百十来个人所以这种情况之下我们决定去跑过分对因为数据库跟现在超级计算机一样它在全世界有个性能的排行榜你去做这件事情的时候你要做两步第一步你要向这个组织这是一个

这种非盈利的组织你要向它证明说你是一个数据库你能满足数据库的比方说这种交易的原子性持久性这样的东西对

你把这个证明证明完了之后你才有可能去跑这个信呢那所有的这些都是在这个组织的它的监控下米兰来做的对那我们最后得到了第一而且超过了甲骨文的一倍多在这件事情里面我们其实是做到了好几次的第一第一是说第一次有美国之外的数据库登上了这个榜首因为整个全世界的数据库 90%多都是在美国或者在美国的公司的手上对

我们的第二个第一是我们用分布式数据库去跑的分因为以前的数据库都是集中式的这个其实是改变了这整个游戏的规则因为你一旦真正用分布式去跑分了你 100 台跑一个性能你 200 台跑了做不到两倍你可以做到 1.8 倍 1.9 倍那么后来确实是这样

那么第三个是说以前的数据库做这个跑分的时候你要去买设备买硬件买机器买存储我们没有我们是在云上租的第一次用云上的虚拟的机器来跑这整个但这个给我们提供了很大的便利第一我们的成本大幅度降低我们不用投入那么大的一个成本买这么多的机器硬件设备了第二是这些设备用完了这个测试做完了我们就可以释放掉不用为这个额外的付费

那么到了 2020 年集团决定让我们这一块独立出来独立来成长那么经过了过去这四五年的发展我们现在有大概 2000 个的付费用户我们还有更多大概有三万多套我们今天已经知道的系统是我们的开源用户因为我们也是个开源的软件可以拿免费的来用的

我们今天服务了很多像金融银行证券保险能源交通互联网社保等等我们不仅在国内发展我们也尝试着在走出国门但国外面我们今天做到的业务量还比较小还只是刚刚开始来走出去就是前面跟大家提的到就是说我们这个系统真正要在这整个数据库的市场生存下来

是我们能够给用户提供这种交易处理加分析处理的一体化的能力的那么你要具备这个能力其实是有两个挑战的第一你的容量要足够大因为分析的系统往往数据量更大你要跟前一年的数据做对比你必须有前一年的数据但大部分交易可能很快就结束了时间长的也可能就几天几个星期

所以这一点对我们不是问题因为我们是个分布式系统那么我们遇到的第二个挑战就是效率因为硬盘的这种特征呢

像做交易的时候它是需要把一条记录的相关数据存在一起的这样的话你的 IO 会少效率会高但是做分析的时候不是这样的你比方我们像人口的信息有姓名有身份证有住址有出生日期还有好多好多的信息如果我们只想看全国说有多少姓张的

多少人姓张我们只需要关心姓名我们不需要关心其他的如果这些信息还是像刚才那样一条镜头整个存在一起你的效率会变得非常低所以他要用另外一个方式来存用列的方式来存如果我们前面的大数价小数价恰好能够解决这个问题就是你要分析的数据我跟你用列来存那你要做交易的数据我是用行来存的但是所有这些数据要做的修改我们是放在内存里面

这就是我们前面讲的小书架里面内存它对于行货链其实是不那么敏感的因为它是个随机访问的设备速度也非常快所以这样我们能解决到其实其他人今天很难能够说在一个系统里面高效地既把交易又做掉了又把分析做掉了

我们不只是做了一个交易的数据库去跟甲骨文竞争去跟 MySQL 竞争我们能够把自己变成一个新一代的大数据平台就是在这个大数据平台里面以前的大数据平台实际上是做不了交易处理它可以做分析 做报表我们是既能够做分析又能够做报表

所以相对说我们在整个数据库这个赛道里面其实我们走出来一条新的路因为这条新的路能够给这些用户使用者既大幅度地降低成本又能够大幅度地减化他们的使用说到了还是这样王老师对我的影响其实是我觉得遇到他是我的幸运就是当时选择在淘宝做 Oceanbase 数据库的时候我经常跟我们的同学们谈对的同学们讲就说

数据库它是一个没有国家的产品我们一定不能是只给淘宝做不能只给支付宝做不能只给天猫做但我们要服务好这些用户我们一定要去做一个面向全世界的一个通用的数据库让我们的技术不只是领先的我们的市场一定要能够立得住能够服务整个世界好的谢谢大家