独家对话阿里副总裁李飞飞:数据库的进化之路

【写在前面】知道数据库界的李飞飞已有数年,几年来参与的 BDTC 曾数次听闻他的观点以及过往经历,2020 年 9 月,有一契机,可以与他一对一对话,为对话体版本,权做个人博客收录,希冀几年后,再回头看时,仍能津津乐道。


去年今月,我在杭州云栖小镇见到了行癫,他有一句「技术牵引,需求驱动」让我留下了非常深刻的印象,并且还以既是阿里云数据库的总负责人又是达摩院数据库首席科学家的李飞飞(花名飞刀)为例,说起阿里产品研发和科学研究是「一脉相承」的。

今年此时,在由阿里云联合英特尔共同主办的第二届数据库大赛 —— Tair 性能挑战如火如荼地报名之时,我在杭州阿里云 EFC 总部的昆仑顶,见到了李飞飞(花名飞刀),他同时说下了这样一句话 —— 将「登高望远、仰望星空」的能力和「日拱一卒、落子无悔」的工程师文化结合起来。

在数据库这一技术领域已成魁首的李飞飞,由学术界进入产业界已有两年多,这也是阿里云数据库全面开花的两年,譬如 OLTP 的 PolarDB、OLAP 的 AnalyticDB、NoSQL 的 Tair 等。

在王坚院士的《在线》一书中,他深入地谈到对「进化」的思考,互联网是世界向「在线」进化,云计算是计算机向「计算」进化。而在数据库这一领域,也正在发生由传统数据库向云原生数据库进化。

这一点在阿里数据库体系上体现得尤为明显。从最早依赖商业软件,拥有 20 多个节点的 Oracle RAC 数据库集群,成为开发使用开源 MySQL 最好的企业之一,再到云托管数据库以及今天的云原生分布式数据库,阿里数据库完成了从商用、开源到自研的发展路径,并以极其迅猛之势形成山河。

在这一次万字有余的对话中,李飞飞非常全面且深入地分享了阿里云数据库的成就以及他对于云原生、数据库趋势演进的思考。并表示,云的本质是利用虚拟化的技术将资源池化,云原生一定会一层一层地向上发展,资源池化一定会一层一层地实现。同时,在内存这一层早晚会发生内存池化这件事,只不过是技术哪天成熟的问题。

以下为完整对话实录:

加入阿里巴巴这两年

CSDN:飞刀老师好,加入阿里巴巴两年以来,取得了哪些非常重要的成就?

李飞飞: 非常感谢 CSDN 的采访,有机会和大家进行交流和分享。我加入阿里巴巴已经两年多,很快就步入第三个年头,取得了一些小小的成绩,当然这是和我们的团队,尤其是数据库团队以及阿里云一起取得的成绩,每个成绩背后都是非常坚韧不拔的付出换来的。

我简单从三个层面来分享所取得的成绩:

第一,是业务层面,我们在业务上取得了非常好的结果。从几个维度来看,首先是 IDC 最新推出的中国数据库市场报告,阿里云的中国关系型数据库市场份额在公共云突破了 50%,毫无争议的市场第一。在公有云+线下传统 On-Premise 线下部署的整个复合市场,市场份额也达到了近 25% 的比例,首次超过 Oracle,成为中国数据库市场份额第一,这是在国内。

我们再看世界范围内,在 Gartner 每年推出的云数据库市场分析报告里,在云数据库这个赛道上,阿里云数据库市场份额已经实现了全球第三、亚太第一,仅仅落后于亚马逊和微软,我们超过了一些传统的大家耳熟能详的巨头,比如 Google 和 Oracle。

这是对外的业务,我们取得了非常好的成绩。对内,阿里云数据库支持了阿里巴巴经济体几乎所有的业务。每年双十一,我们平滑地支持了集团内部非常复杂的业务,在双十一也持续不断地冲击更高的性能挑战。

除了这些市场份额之外,我还要强调一下,在支持重大企业和商业项目上,我们数据库是个中流砥柱的底层产品,包括很多的国家基础设施、国计民生核心系统,背后都有阿里云数据库的身影。

第二,从产品维度来讲,阿里云数据库也取得了非常好的成绩。尤其在企业级云原生数据库这个赛道上,我们聚焦收敛,将产品进行体系化梳理,推出了核心的关系型事务数据库 PolarDB 以及它的分布式版 PolarDB-X。同时在传统的 OLAP 领域,我们推出了新一代云原生数据仓库 AnalyticDB(简称 ADB),它也具备存储计算分离、存储池化、弹性、高可用、离在线一体化的大数据处理能力,用数据库的方式支持我们的客户去处理传统大数据的问题,取得了非常好的结果,产品化、标准化做得也非常好。

在 NoSQL 领域,我们推出了两个核心产品,一个是云原生多模数据库 Lindorm(灵动),它主打的用 6 个字来总结,就是帮客户提供「存得起、看得见」的非结构化、半结构化的数据存储与处理解决方案。由此客户就可以将海量的非结构化和半结构化数据存储在 Lindorm 中,并以简易、高效的方式处理和查询数据,比如时序、日志、文档等。

还有最关键的是和此次数据库赛题非常相关的,就是我们的缓存或者叫「内存数据库」Tair,100% 兼容开源社区版的 Redis。技术界的朋友都知道,Tair 在阿里巴巴集团内部双十一多年使用,一般的使用场景是数据库前有个缓存,这样保证缓存和数据库的一致性,由此极大提升访问效率,RT(响应时间)可以大大降低。

从产品角度讲,它具备很多开源社区所不具备的性能和特性,比如热点打散、智能化冷热分离,以及我们最新研发的功能和特性,结合像英特尔 AEP(Apache Pass)非易失内存技术与神龙虚拟化技术,提供一个基于云原生缓存池的内存数据库,并且具备持久化能力。这样可以极大简化企业在使用缓存这一层所带来的很多传统挑战,比如将缓存数据库和一个传统数据库结合使用,如何确保数据一致性的问题,利用非易失内存池的技术就可以解决。

在产品化上面还做了很多其他工作,例如我们基于云原生打造的云原生智能化管控平台,我们把它叫作「DAS(Database Autonomy Service,数据库自治服务)」,就像今天有特斯拉等自动驾驶汽车,我们在推出自己的自动驾驶数据库平台,这样就可以做到自感知、自决策、自恢复,帮我们的客户尽可能地简易数据库运维管控等一系列流程,提升效率、降低成本。这是在产品化上做的一些工作。

怎么衡量我们产品的成熟度?非常高兴地和大家分享,我们在 Gartner 对全球云厂商在基础软件设施的最新评估报告里,我们的数据库位列全球第二,超过了 Google 和微软,而且在数据库必备的能力象限里取得了满分的优异成绩。Gartner 的评分涵盖了从 OLTP、OLAP 再到 NoSQL,以及生态工具(比如备份、传输等)一整套全领域覆盖的评分,对产品能力有非常高要求。例如工具领域,如何利用 DBS(数据备份服务)做多云备份容灾,利用 DTS(数据传输服务)做数据的实时同步等等。

第三,花点时间讲我们的技术,也取得了突飞猛进的成就。当然,我个人认为世界上没有最先进的技术,只有最好、最适用的技术,是跟场景要结合的。但同时我们也非常在意和提升技术的领先性,举例来看,我们在国际官方数据库和大数据领域 Benchmark 测试里,比如在复杂分析领域 TPC Benchmark DS(TPC-DS),AnalyticDB 获得了全球性能、性价比第一,在混合负载 TPC Benchmark H(TPC-H),ADB PG 版(AnalyticDB for PostgreSQL)获得了第一,相比第二名 SQL Server 2019,性能、性价比有三倍的提升,同时,ADB 也获得了「浙江省科技进步一等奖」。

总的来说,从商业、产品到技术,过去几年取得了非常好的成绩。

当然,阿里有句话,我今天也想分享给大家——「今天最好的表现是明天最低的要求」,我们希望避免「出道即巅峰」的现象,所以也希望大家能够帮助我们一起走向更好的明天,取得更好的成绩。

CSDN:在这之中,有哪些让您印象比较深刻的挑战呢?

李飞飞: 有非常多,包括集团内业务非常复杂的挑战,比如阿里巴巴集团决定全面整体上云,在癫总(张建锋,花名行癫,阿里云智能总裁、达摩院院长)的带领下,我们实施和推动了「经济体全面上云」,也就是说我们要证明给客户,阿里巴巴的云是一个可以信赖的云、非常稳定的云、非常高效的云,那阿里经济体自己复杂的业务要首先跑在阿里云上,所以启动了「经济体全面上云」的项目。

在这个过程中,大家可以想象,从天猫到淘宝电商、高德、优酷、饿了么等各行各业这么复杂的业务,你的数据库基础设施要从传统的「云化的数据库」向 100% 的「云原生数据库」技术演进,是有非常大挑战的。云化表示底层基础设施 IaaS 这一层云化了,但数据库只是部署在云化的 IaaS 这层上,但没有真正利用到云原生技术红利。

真正的云原生数据库的技术,一如我刚才提到的,首先,云的本质是什么?是利用虚拟化的技术将资源池化。传统的系统就像家家户户打一个水井,资源是紧耦合的,今天云虚拟化后相当于不用打水井,或者看着是打了一个水井,但底下江河湖海是连在一起的。资源进行了池化,继而利用智能化的技术实现高效、高可用资源调度,按需使用,按量付费,TCO(总体拥有成本)会大大降低。

在这个过程中,我们经济体上云也希望实现这样一个部署。那数据库如何从云上或者云化的数据库全部向云原生的数据库系统演进,包括事务处理、分析到非结构化数据处理和存储,其实有非常大的挑战,这是我们集团内部的一个案例。

在外部也有很多挑战,如何将我们的云原生技术向下一代演进?举个例子,如何将云原生和分布式的技术结合起来,云原生是将资源池化,存储计算分离,实现弹性、高可用等。但如果并发特别高,或者数据量特别大时,希望能够做分布式的水平拓展,甚至需要做跨 AZ、跨 Region 的分布式部署,怎么确保在这种情况下还能做到数据一致性、读写一致性、金融级的高可用?这里有非常多挑战。比如 PolarDB 版本里,我们在全球率先推出了 Global Database 版本,可以跨可用区、跨 Region 部署,只读实例和写的实例保证数据的金融级、高可用、一致性,这些技术挑战都是我们跨越的鸿沟。

再从业务上来讲,数据库市场发展到今天,我认为从传统的泛互联网行业上云开始至今,我们已经进入了下半场深水区,即从泛互联网行业向政府、制造业、传统的金融行业进行渗透。这些行业上云过程中,面临着各种各样的挑战,比如没有做好 100% 上公有云的准备,要上专有云、混合云的部署,这种情况下,我们如何做多云、混合云部署的技术和解决这种业务挑战。

还有,传统企业大量使用传统的商业型数据库或传统商业数仓,不仅仅是传统数据库和传统数仓的迁移,如何做上面大量传统的 Legacy 应用的迁移改造是非常大的挑战。数据库或数仓可以迁移过来,但是基于传统数据库和传统数仓所开发的应用代码,迁移改造工作量是非常大的,因为要做各种各样的适配。

我们在这个过程中如何尽可能去做标准化、产品化、规模化的迁移,帮助客户实现应用层代码可以几乎不改,平滑迁移到我们的云原生数据库和数据仓库 PolarDB、ADB,以及云原生多模数据库 Lindorm、云原生内存数据库 Tair?

这个过程中我们所采用的方式是保持开放、兼容的生态,我们不做锁死的生态、不做封闭的生态,保证标准是开放兼容的。和竞争对手保证一样的标准,这样客户永远不用担心被锁死,今天使用了阿里云数据库的产品,明天可以平滑地迁移到别的云上,完全没问题。

我们是用一个开放的心态、开放的生态来做这件事,在这个过程中确保客户可以从传统的封闭生态商业数据库、商业数仓迁移到开放的生态里来。

不仅是在国内,我们在海外,比如马来西亚,帮助其第三大电商 PrestoMall 在不到两个月的时间里,将 Oracle 这种传统典型的商业数据库平滑替换掉,实现 100% 从传统架构升级到云原生架构。

这是我们这几年越过的一些挑战。我个人认为,数据库这个领域接下来发展还会有非常多的挑战,还有很多激动人心的挑战等着我们去解决。

为什么数据库得生态者得天下?

CSDN:您刚才也谈到了生态,阿里在数据库上有非常丰富的产品体系,您有一句话让我印象很深——「得生态者得天下」。我记得之前和周傲英教授(华东师范大学副校长)聊时他也说到了「生态」,大家很关注中国的数据库为什么做不起来,核心即在于生态上,您在生态上的构思以及体现在阿里云数据库上的布局是什么样的?

李飞飞: 这个问题非常好,我非常高兴有机会和大家交流和探讨这个问题。我从两个维度解释一下。

第一个是比较传统的维度。大家谈到生态,就会想到开源、想到标准。开源和标准是建立生态的方法之一,但不是唯一,不是说不开源就没有办法形成一个好的生态,这两个不划等号。比如,我们看传统的商业数据库 Oracle、SQL Server 也没有开源,但 Oracle 的生态做得非常好,全世界(包括中国市场在内)有无数合作伙伴和 Oracle 建立紧密的生态合作关系、商业合作关系。

这个过程中,我们采取的策略是什么?第一,我们的核心产品,包括 PolarDB、ADB、灵动、Tair,决策就是不开源,但这并不代表我们不支持开源社区。譬如我们是全球第一家先于美国和 MongoDB 达成新开源授权模式的云厂商。MongoDB 是一家美国的数据库厂商,但包括 Google、亚马逊、微软云在内的美国云厂商,都没有和它达成协议,反而中国的阿里云是和它达成合作的第一家企业,就表示了我们对开源生态的支持上是非常坚定的。

我们选择的打法是坚持自主可控自研,但是我所做的产品一定要 100% 兼容现有的生态。这也是为什么我们的 PolarDB 有 MySQL、PG 兼容版,有高度兼容 Oracle 的版本。

ADB 也是一样的策略,100% 兼容 MySQL,还有一个版本 100% 兼容 PG,PG 的兼容版又可以高度兼容 Oracle RAC、Teradata、GreenPlum 等传统数仓。

多模数据库 Lindorm 就选择了 100% 兼容 HBase,在它的时序处理上会 100% 兼容现有的时序数据库的接口。像 Tair,我们的内存级数据库、企业级缓存,100% 兼容 Redis。

这是我们的一个策略,就是 100% 兼容或者高度兼容现有的主流生态,而不是另起炉灶、自我封闭,由此避免客户从一个 O 走向另外一个 O。

我们选择了 100% 兼容生态后,就可以和现有生态里的伙伴一起去快速地帮助他们或一起建立新的生态。不是 0 和 1 的选择,而是可以都有,然后实现一个市场化、平滑的生态建立,最终将这个选择权交给市场。

我们的产品做得好,自然会有更多的伙伴和我们一起打造生态。我们选择一个标准开放的生态,客户可以游刃有余地在这之中选择自己的位置、找准自己的定位,这是我理解的「得生态者得天下」的第一个维度。

第二个维度,可能平常大家不怎么去讲,但我觉得非常重要,在这里要展开分享我对这件事的理解。很多人印象中的数据库就等于 Oracle,等于是传统的事务型、关系型数据库,我个人是非常反对这种观点和论调的。

数据库的生态之所以叫「生态」,这里有一个很关键的逻辑和观察,就是「多样性」,非常重要。整个产品体系的多样性,是不是能形成一套丰富的解决方案,帮助客户端到端地解决问题,这个至关重要。如果我们只是事务处理,只能解决在线数据从生产、处理到存储的这么一小段问题,但在今天这个数据为主的世界里(我们称之为 DT,Data Technology),客户、应用所需要的是数据从生产、处理、存储到消费、分析,全链路、端到端的解决方案。

如果有一个产品体系能够解决这个问题,客户一定不希望自己的数据从一个产品体系搬到另外几个产品体系,解决一个问题需要 4、5 个不同的产品体系组合来解决。最好的体验是一份数据库把问题都解决掉,这样对客户的价值一定是最大的。

这也是为什么传统的数据库领域就有 OLTP、OLAP、NoSQL 这些分类,发展到今天,业界的趋势非常明显。我们看 Gartner 最新的市场报告,其中最受关注的魔力象限(Magic Quadrant,简称 MQ)中,过去和数据库、数据处理相关的有两个 MQ,分别是 DMSA(分析型数据管理解决方案)和 OPDBMS(操作型数据库管理系统),前者包含传统的数据仓储、数据湖和离线的数据计算等,后者是传统的 TP 事务型数据库。

在 2019 下半年,Gartner 推出了 2020 年新魔力象限分类,将刚才我提到的 DMSA 和 OPDBMS 合二为一,叫「Cloud DBMS」,即云数据库市场魔力象限。什么意思呢?Gartner 的原话是「There is only one DBMS market」,只有一个数据库市场,表达的什么意思?就是「分析类的和事务类的历史上我们分开处理,是因为性能和业务需求的这种关系,将它分开,但随着技术的发展,现代的基于云架构的数据库系统是应该也可以去解决所有这些问题的。」在一个产品体系里,一个生态,所以将它合二为一。

第二点,回到我刚才讲的。生态非常重要,亚马逊雨林是生态,张北防护林不是生态。不会只做 TP 数据库、事务处理,我个人认为接下几年的发展会越来越多看到像 HTAP 这种技术,将事务处理和分析合二为一,我们会越来越多地看到数据库和大数据的结合。比如 TiDB 黄东旭讲「会 MySQL 就会大数据」,我要将这个理念升级一下,我认为不是「会 MySQL 就会大数据」,而是「会数据库就会大数据」,数据库和大数据就是一体化的趋势。这是我讲的第二点,就是从产品体系上,要为客户提供端到端的数据处理、存储、分析的解决方案。

所以生态有两个维度:

  • 合作伙伴,我们的标准、使用体验是不是开放兼容,和伙伴一起打造一个丰富的生态;

  • 产品体系是不是足够丰富,帮客户用一套数据库的标准,来解决数据处理、存储、计算、分析的痛点。

这也是为什么我们会推出 Tair,它不是传统意义上的关系型数据库、事务数据库。但我们都知道,内存计算、内存分析,尤其随着包括 AEP 非易失性内存技术的出现和发展,会对数据分析、数据处理领域带来本质的冲击和改变。

云原生数据库的黄金时代

CSDN:您一直在持续推进云原生数据库,相对传统数据库有着什么样的优势?为什么现在是云原生数据库的黄金时期,有哪几个关键因素?

李飞飞: 云原生数据库在海外被称为「Cloud-Native Database Systems」,前面译成中文就是「云原生」,这是什么含义?我用通俗易懂的方式来解释一下,想要理解云原生,这里有几个关键词,一个叫「云」,一个叫「原生」。我们回到「什么叫云」这个问题上,就是前面所说的用虚拟化的技术来实现资源池化,那什么叫「资源池化」?这又要到计算机是什么?也就追溯到六十年代的冯·诺依曼架构,因为它奠定了现代计算机体系架构。

冯·诺依曼里最核心的无非是两个要素,即计算和存储,构成了冯·诺依曼架构的基石,可能还要加上第三个要素,就是计算和存储之间的通信。在单机部署情况下,这个通信就是计算和 Memory Bus、IOBUS。但在集群部署的情况下,计算和存储的通信就是网络,这是经典计算机架构。

我们传统的数据库系统都是基于这种经典的传统架构来设计的,这里有一个问题,就是它的资源是紧耦合的,计算、存储、通信或者网络都是紧耦合在一起的,基于这个体系和架构设计了上层的数据库系统。

系统是什么?最标准的操作系统教材定义「系统」是「用任何高效、安全的方法使用有限的硬件资源」。为什么是有限资源?因为我们的计算资源、存储资源、通信资源是有限的,所以必须高效、安全地使用有限的资源。

传统数据库系统因为系统架构方式,必须是紧耦合的设计方式,才能最大效能地发挥出系统的优势。有点像过去在村庄里各家根据自己的用水量打一个水井使用起来,这就相当于传统的数据库系统来使用、计算、存储资源,使用方式是一样的,但它是紧耦合的方式。

但如果水不够了怎么办?这就是传统数据库系统里经常提到的业务扩容。在传统的金融行业,数据库系统扩容需要提前几个月甚至半年去做规划,进而细致部署、缜密实施,上线-灰度-再验证,一整套流程就是为了扩容、缩容。为什么?我们的业务有变化起伏,不是平滑几十年不变的,传统扩容过程非常痛苦。同时,当业务高峰过了后缩容也很痛苦,并会造成极大的资源浪费,这是传统架构带来的必然问题。

云原生到底是什么?我们把这些概念、背景都解释清楚了,就很好理解了。「云」,使用虚拟化的技术将资源池化,什么意思?水井是资源,我们不用紧耦合的方式来部署和使用资源,不用家家户户打水井,而是整个村庄联合起来打一个湖或池塘,修管道连到各家各户的厨房里,这就是资源池化。

资源池化后可以做到什么?就是按需按量使用资源,需要大时开大,需要小时关小,不需要时彻底关掉。资源池化以后可以做到按需按量使用,弹性调度这些资源。甚至还可以将资源进行解耦,将厨房当作一个计算节点,水当作存储节点,可以随时切,如果这个厨房不够了,可以快速拉起另外两三个厨房做计算,然后通过 Switch 调度。这就是我们讲的云原生核心逻辑,资源池化以后带来了很关键的「资源解耦」,比如计算存储分离。

我们今天做的计算存储分离是 CPU 和 Memory 绑在一起,然后和 SSD 持久化存储分开。随着 NVM 非易失技术的成熟,下一步甚至会将 CPU 和内存再进行隔离,内存再进行池化,形成三层池化,进一步隔离、弹性,更好地帮助客户实现按需按量使用资源、弹性。

并且这过程中不仅仅有弹性的好处,还带来了高可用的好处,为什么这么说?因为以前单节点部署、紧耦合的部署方式,总要担心如果这个物理资源挂掉了怎么办,要做主备,主备不够甚至要做「两地三中心」等部署方式,非常耗时耗力,成本也非常高。

资源池化后,客户的业务不用关心数据是存在哪个物理节点上,我在资源池里提供了高可用能力、三副本能力,甚至可以让资源池做到跨区、跨 Region 高可用,这些都是 Transparent,对上层的应用都是透明的,对高可用也非常好解决,可以很轻便地提供金融级的高可用。

所以,总结一下云原生带来的本质性好处,就像我刚才讲的水井和池塘的逻辑。另外,随着池塘不断变大,越来越多应用迁移上云,我们的池塘不再是池塘,而变成了江河大海,它带来的好处,就是经济学里经常听到的一个基本、朴素的道理 —— 规模化应用后带来边际成本下降效应。这个效应体现在我们的产品上,客户就会因此受益,它的 TCO 一定会下降。规模化上来后,边际成本一定会下降,这是颠覆不破的经济学原理。

同样,如果有 1 万吨水,要维护 1 万个独立的井,和 1 万吨水放在一个水库里维护,哪个更简单?现代人类文明发展已经很清晰地告诉我们答案是什么。这个规模化带来的边际成本下降也就是云原生带来的技术红利以及经济红利,这个向云原生技术演进的趋势是自然而然发生并非常清晰的,不论用公共云还是专有云私有化部署,都一样。

内存数据库的机遇与挑战

CSDN:接下来我们看下在阿里云数据库产品体系里的 Tair,飞刀老师刚才讲了很多关于 OLTP、OLAP 和 NoSQL 方面。Tair 已经发布多年,在阿里云数据库产品体系里的定位是什么样的?同时,它和其他 NoSQL 数据库相比,表现怎么样?阿里内部已经有非常大规模的应用,那么它在阿里内外的应用场景是什么样的?

李飞飞: 非常好的问题。国内的开发者和社区,以及企业级,尤其是互联网行业,大家对 Tair 耳熟能详,因为这是一个非常有影响力的产品和技术,在缓存这一层是阿里巴巴最早为了支持双十一这个场景,基于开源的 Redis,在上面做了大量的修改提升演进而来的这么一个「缓存」、「内存数据库」的产品和技术,这是它的历史和背景。

它核心解决了哪些问题?就是利用我们对缓存技术的深度理解,基于最早的开源版本的 Redis,做了大量的优化改进,比如热点打散、智能化冷热数据分离、将一个集群内存进行集群化的管理和使用和调度等,由此极大提升应用对缓存、内存数据库这层的访问,提升它的效率和降低成本。

我们知道,传统的缓存一般意义来讲,是架在一个关系型数据库或者 NoSQL 数据库,类似像 MySQL、PostgreSQL 或者 HBase 前面的,主要是为了解决冷数据访问 IO 延迟比较大的问题,将数据可以 cache 在缓存这一层。

但这里也带来了很多其他的挑战,比如缓存是不是具备易失性,如果系统 Crash 缓存数据丢失了怎么办?我们在 Tair 里做了持久化,应该是业界第一个提供持久化缓存能力的产品,并且是在 NVM 出世之前就具备了这样的能力,大大提升了 Tair 相对于社区 Redis 产品竞争力。性能也有极大提升,在标准的 Benchmark 上,同样的资源消耗情况下,我们的性能基本有 2-3 倍的提升。

每年的双十一,Tair 都是我们最核心的产品和链路,在云上现在把它叫「企业级的 Redis」,后续也会将 Tair 这个品牌正式商业化。现在我们在云上是通过企业级 Redis 这个品牌,也取得了非常好的商业化成果。

最后,我再分享 Tair 下一步演进路线,和本次大赛的赛题是紧密相扣的,如果我们今天有了类似像 NVM 技术,非易失的缓存,像英特尔 AEP,那我们如何更好地利用这种硬件特性来设计一个全新的、下一代企业级云原生缓存、云原生内存数据库?解决哪些问题?比如原子读写一致性问题,以及在内存里要做计算建立索引,索引和数据一致性的问题,高并发情况下写入索引 Update 的问题,以及 NVM 带来的单位 Byte 价格下降但是 RT 和 Throughput 没有相对 DRAM、没有太多损耗的情况下,能不能做一个智能化的内存池,有 NVM、有 DRAM,根据业务需求可以动态化调整 NVM 和 DRAM 的比例,这样可以满足在并发高、写入大、访问量大的情况下 RT 没有变化,但是 NVM 越多的话使用成本越低,智能化地进行调整。还有许多是可以探索的,这也是为什么我们基于 Tair 和英特尔一起,在神龙虚拟化平台上设计了本次大赛赛题的初衷。

CSDN:那在 Tair 持久化内存上已经取得了哪些成果?

李飞飞: 我们在这方面做了大量探索,会在云栖大会上有一个重磅发布。这个问题的答案,我邀请大家期待云栖大会 NoSQL 专场,我们会有深度解析 Tair 结合 NVM、AEP 做的最新技术和产品的发布,我邀请大家去关注云栖大会 Tair,应该有一个企业级 NoSQL 的分论坛,大家可以去那个分论坛上一探究竟。

CSDN:Tair 对持久内存技术未来的规划是怎样的,有哪些期待,以及面临的挑战?

李飞飞: 我们希望基于这种新的存储媒介,像 NVM 非易失内存,类似于像英特尔 AEP 的技术和产品,去打造和研发下一代云原生缓存、云原生内存数据库。比如我刚才提到的将内存进行池化,打造一个混合存储媒介的云原生内存池,这样可以大幅提升内存使用效率,降低成本,基于此可以去构建下一代云原生内存数据库。

这里要解决核心的一些技术挑战,比如我刚才提到的读写原子性、数据一致性,还有索引在构建高并发读写情况下如何在内存数据库上、内存的缓存上基于非易失缓存构建索引这种技术,保证索引和数据的一致性。还有 Tair 目前具备的热点打散等等这些技术如何平滑地迁移到基于非易失内存上,DRAM 和 NVM 特点的不同,针对 DRAM 的热点和针对 NVM 上的处理方法会不会有不同?这些挑战都需要我们去探索和研究的。

还有就是我们准备在下一代 Tair 里准备集成达摩院数据库与存储实验室做的一系列工作,去做智能化冷热分离。传统的数据库系统、缓存里,我们用的冷热分离技术都是比较简单的基于统计信息,比如 LFU 或者 MRU,非常简单的一些热点的冷热分离的技术。但这种基于简单统计的热数据分离技术,它其实不能很好地反映业务动态变化情况、数据冷热温度变化情况。就像今天机器学习在其他领域解决的很多问题,用传统统计方法是没有办法达到今天人工智能、机器学习所带来的效果的。

我们希望将机器学习、深度神经网络技术带到缓存管理里来,实现智能化、透明的冷热分离,这样我们的应用使用 Tair 时可以更加得心应手、更加透明,更加不用关心内核的非常复杂的理念。对它来讲得到一个高效、低成本、智能化的缓存数据库或者缓存,提供原子的一致性读写、索引构建、智能的热点打散、智能的冷热分离等等一系列技术,这是我们期待的下一代云原生内存数据库的样子。

CSDN:您刚才谈到了它的将来,从内存数据库的发展历程来看,您觉得内存数据库未来会呈现一个什么样的趋势?同时,因为是在云原生时代的技术背景下,它有什么样的新机会?

李飞飞: 我认为想回答好这个问题可以看看历史,以史为鉴。为什么?我们可以看看数据领域另外一个非常典型的例子,就是在传统大数据领域里有 Hadoop。Hadoop 当时出来是 MapReduce,然后 Shuffle,但在 Shuffle 和 MapReduce 过程中会产生大量的 IO,因为它要写磁盘。今天主流的大数据系统像 Spark 就没有这个问题,为什么?它用 RDD(Resilient Distributed Datasets,弹性分布式数据集)的技术,将数据处理用 Transformation,所有的处理都是在内存里完成的。这就是一个从非内存、传统的持久化存储,向内存、纯内存处理演进的例子,带来了非常多好处,吞吐率、RT、访问效率、系统处理效率都有大的提升。

我们用这个例子看今天内存数据库下一代的演进,我个人认为,随着 NVM 的诞生和成本相对于传统 DRAM 下降,我们的 Memory Hierarchy(存储层次)有一个大的变化,我个人认为会对系统设计带来非常多的变化和挑战,也是机遇。

比如在传统关系型数据库里,做数据库的同行们都知道 WAL(Write-ahead logging,预写式日志),当你对数据库的一条记录要进行更新时,要先把更新操作的内容通过写日志的方式记录下来,这个操作对应的日志记录持久化后再去做真正的操作。

这样的话,如果系统出现问题、操作没有成功,数据库系统不至于留下一个脏的数据,可以利用持久化日志记录来 replace 或者回滚这个操作,这是传统数据库里非常经典的技术 —— WAL。这个技术设计的初衷就是因为内存是易失的,在数据上直接进行更改的一个后果,因为数据是缓存在内存里的,内存如果发生问题,任何操作都是永远不能再追回来的,所以必须要有 WAL,把操作用日志持久化的方式记录下来,这是传统这个问题的本质,这个本质就在于内存是易失性的。

今天如果内存有非易失性了,是不是还一定要用 WAL 的技术呢?这就是一个很好的问题,我觉得未必。这个简单的例子就可以非常鲜明地说明,系统设计会带来非常大的改变和冲击的,有可能不需要再做 WAL 这个操作了,或者 WAL 不需要写到传统的持久化存储上。日志如果在 NVM 里都不需要做所谓的 WAL,日志本身就是持久化的,可能不需要再去考虑 WAL 和事务处理间的复杂逻辑关系。甚至 Record 在数据库记录上直接做操作,如果这个 Record 是在 NVM 里非易失内存里,甚至可以不做或者简化日志。

另外,在计算领域,就像今天 Spark 取代 Hadoop 一样,我们在 OLAP 领域传统的数仓,今天有 NVM 后,我们的分析、计算、离在线一体化,如果完全可以在基于非易失内存来完成的话,它的 RT 和吞吐一定会大大提高的,我们在这个前提下如何做好资源隔离、Memory Hierarchy 之间数据 Transfor 的调度,对云原生数仓、云原生 OLAP 领域也带来很大挑战。

最后,对 NoSQL 领域来说,我们的 Tair 可以基于这些技术去打造下一代企业级缓存、企业级内存数据库,实现成本降低、性能提升,并且在这个基础上打造新一代云原生内存的计算和分析,将数据处理和计算分析一体化,为我们的客户带来更好的体验,更轻便、更简易的使用方式。

这是我能看到的一些未来的发展趋势,以及我认为在内存这一层早晚会发生内存池化这件事,只不过是这个技术哪一天成熟的问题。云原生一定会一层一层地向上发展,资源池化一定会一层一层地实现。这是我的另外一个推断,对未来技术的预测,我们可以拭目以待,看我说的准不准。

CSDN:关于此次大赛是聚焦在 Tair 性能挑战上,您对此希望的目标是什么?同时,有很多开发者参与其中,开发者能够收获什么?

李飞飞: 期待我们通过这次大赛,在阿里云神龙裸金属服务器上提供持久内存存储介质,能够让大家接触到最新技术、最新软硬件一体化设计的理念、云原生的理念,以及内存数据库发展的最新趋势。同时,也希望给大家提供一个舞台,展现自己的才华,学习中获得成长、获得机遇,也希望大家通过这个平台能够交流认识新的朋友,也能够反馈给我们阿里云 Tair 的产品,让我们利用这种大赛看到大家的好点子,帮助我们的产品做得更好。

这是我非常朴素、非常简单的一些期待。

阿里数据库掌门人的人才观

CSDN:您本身是数据库界大神,从学术界进入产业界,在阿里担任两块,一块是达摩院数据库首席科学家,同时也是数据库事业部的当家人,这两个角色的区别是什么?以及各自的挑战和压力有哪些?

李飞飞: 这还是有很大不同的,达摩院实验室更有一点点像传统的学术界高校的科研,但也不完全一样。我们鼓励天马行空、星辰大海的科研,但同时强调要脚踏实地。怎么实现这点?比如在数据库与存储实验室里,我的要求是每个人做的 50% 是星辰大海,可能短期内也不一定看到应用业务产生商业价值的渠道。但没关系,鼓励你去做。因为开放、创新、科研很多时候就像我们人吃饭,你吃了 10 个馒头吃饱了,但如果没有前面 9 个馒头,只吃第 10 个馒头,永远吃不饱。

科研创新就是这个过程,可能 100 个项目、100 个创新技术里面,有 50 个最后产生商业价值、社会价值就已经很不错了,但不能说只做 50 个,另外 50 个不做了。你不做那 50 个,这 50 个也不会有,是这样一个逻辑。所以我们在实验室里鼓励大家做一些开放式的前沿探索,但同时一定要能够收回来,同时手上要有一些项目和技术是真正和数据库事业部紧密结合能够马上落地的。

对数据库事业部就很简单了,我们数据库事业部给大家讲的一个核心逻辑是从技术到产品、再到商品,然后从商品倒推产品怎么做、技术怎么做。

既然是商品,就要非常清楚考虑毛利、净利、商业化模式是什么,商业利润从哪里来,把这些问题都要想清楚,然后倒推到产品、技术上。

千万不能上来就说自己有一个很牛的技术,技术做出来再去想怎么包装成一个产品,然后再去想怎么商业化,这个思路肯定是不行的,一定是个倒推的逻辑。所以我们每一个人都要去思考「Why、What、When、How」,为什么要做、做什么、什么时候做、怎么做,把这些问题都想清楚了。

拿一句话来讲,就是将「登高望远、仰望星空」的能力和「日拱一卒、落子无悔」的工程师文化结合起来。

把这两者结合起来,既要有创新思路、眼界,同时,“日拱一卒、落子无悔”工程师文化要深入到团队里每一个人,产品、商品、技术结合起来,这样才有可能取得产业化、商业化的成功。

计算机是一个比较偏应用的技术领域,所以我们要从产业化角度去思考,尤其数据库是一个产业化系统,不是像量子物理等还没有看到大规模商业化、产业化前景的探索,数据库已经是一个非常成熟的领域,我们还是要从产业中来、回到产业中去,结合我们的科研一起去做,这是我的基本思考。

CSDN:这也是您的人才观?

李飞飞: 是的,我觉得今天很难把科研和工程彻底分开,两者一定是相辅相成的。我们和国内外知名高校有非常好的合作关系,这也是为什么阿里云非常重视和产学研结合的渠道和做法。我们也非常鼓励通过我们的 AIR 项目(Alibaba Innovative Research,阿里巴巴创新研究计划)和工程师团队、达摩院一起做探索式的科研,其中并不是每一个都要产生产业化价值,但我们希望最终这些会带来产业化价值。

CSDN:相应的,您对开发者有什么建议?

李飞飞: 把我跟团队讲的一句话送给开发者,叫「Work hard and work smarter」,什么意思呢?翻译成中文就是你要聪明地全力以赴。仅仅全力以赴是不行的,就像我们计算机里最经典的一个算法排序,我们用 Bubble Sort(冒泡排序),用 1000 个核、1 万个核已经非常努力了吧?但如果设计出一个 QuickSort(快速排序),轻而易举 1 个核就可以击败 1 万个核,所以 work smarter 非常重要。我们的开发者不能光关注懂什么语言、知道怎么写,还是要深刻理解里面的“Why”。

我们经常把算法和程序设计分开,我个人认为是不能分开的。在新的时代里,开发者不仅要具备非常好的开发能力、系统设计能力,我认为也要具备非常优异的算法能力,这两者是没办法做一个非常泾渭分明的切割。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:C马雯娟 返回首页