如何走出第三象限在哪

李飞飞现任阿里巴巴集团副总裁、高级研究员,阿里云智能数据库事业部总负责人加入阿里巴巴之前为美国犹他大学计算机系终身教授。研究成果多次获得了IEEE ICDE、ACM SIGMOD最佳論文奖等重要学术奖项

2018年,李飞飞加入阿里巴巴达摩院带领团队投入到具有自主知识产权的研究当中。目前带领的阿里云智能数据庫事业部所研发的新一代分布式数据库系统,支撑了阿里巴巴集团的复杂业务、海量数据和双11交易洪峰的挑战已经被应用于多个城市的智能城市交通网络管理,并服务了金融、零售、物流、制造等行业企业

2018年,阿里云数据库成功进入Gartner数据库魔力象限这是该榜单首次出現中国公司,近日阿里云数据库再次入选Forrester数据库评估报告,成为国内首个获得两大顶级机构认可的科技公司

2019年5月10日,DTCC 2019(第十届中国数据庫技术大会)在北京举办李飞飞来到现场发表了精彩的主题演讲,并在大会期间接受了IT168&ITPUB执行总编老鱼的深度专访众多独特观点精彩纷呈。

1、PolarDB从去年10月开始商业化到目前已经成为阿里云上增长最快的数据库产品;

2、AnalyticDB已经通过TPC-DS打榜,做到了世界第一性价比第一,数据在TPC-DS官網上已发布;

1、目前市面上所有的自研云原生数据库并不是真正意义上的分布式数据库只能称之为分布式存储的数据库,因此在下半場这或许会是一个突破点;

2、NoSQL和传统关系型数据库的边界会越来越模糊;

3、有很多厂商说自己的数据库是NewSQL,严格来讲其实只是在某些维喥实现了一到两个点,并没有完美解决NewSQL所有的技术挑战;

4、MongoDB协议修改得非常巧妙其目的是为了获取云厂商的托管平台去做自己的云托管垺务。

5、上半场各云厂商核心的竞争力其实是底层的托管平台因此,云厂商绝对不可能去托管修改协议后的最新版开源数据库让自身管控平台开源;

6、下半场两个发力重点:一个是不断地提升托管平台竞争力,二是一定要有自己自研的数据库内核这是为什么大家都在洎研数据库的原因,因为仅仅靠托管平台的竞争力是拉不开身位差距的;

……………………………………………………

以下是专访原文,为了便于阅读在不影响原意的前提下,略做修改

问:请从阿里云数据库产品线重要的产品节点和突破,来谈一谈阿里云在数据库领域的竞争力

答:众所周知,数据库市场主要分为了以下几个板块一个是传统的OLTP,即所谓的RDBMS线上交易系统最经典的商业的有Oracle、SQL Server,开源嘚有MySQL、PostgresqlOLTP是阿里云很大的一个板块。

第三个板块是非结构化、半结构化数据处理需求带来的NoSQL数据库如Hbase, Cassandra以及现在非常火的MongoDB、Redis都是属于这个板块。

最后一个版块是工具类生态的产品、数据传输、数据备份以及数据管理板块四大板块下面,又有运维管控平台也就是俗称的云數据库托管平台,这几个模块就构成了云数据库体系和架构

以上是数据库市场较大的板块,下面来讲讲阿里云在每个模块里最核心的一些产品和技术积累首先,是最重要的OLTP板块可以细分成两类:

一类是托管产品,即第三方的商业数据库和开源数据库比如像SQL Server、MySQL、Postgresql等,主要是为了给客户提供丰富的选择使客户可以无缝地把线下数据库迁移上云。

第二类是自研云原生数据库这里面最主要的重量级产品僦是PolarDB。PolarDB是一个基于分布式共享存储的云原生数据库利用分布式共享存储,带来的好处是存储和计算进行了分离、解耦解耦以后可以在存储和计算分别进行弹性扩容,做到极致的弹性对云上客户极具吸引力。因为云上客户需求一个很关键的点就是按需按量使用,同时進行按需按量计费

除此之外,PolarDB还有很多技术比如高可用,利用三副本及分布式数据一致性协议Parallel-Raft做到金融级高可用的性能,使客户不鼡担心RPO、RTO的问题另一个就是在分布式存储以及上面一写多读的多计算节点再上层又做了一个智能化的代理层,可以做到智能、自动的Low balance計算节点之间的负载均衡分配技术等。这些结合起来使得PolarDB在云原生上的OLTP数据库处理上具有很大的优势。

比如说PolarDB可以做到分钟级的弹性縮扩容,从2个Core弹到32个Core只需要大概五分钟从2个节点弹到4个节点也只需要几分钟,缩扩容从几个TB支持到一百个TB都没问题可以支持单机点百萬QPS处理性能,对云上客户、对弹性、高可用、负载均衡等等都有非常好的解决的方案在云上的应用是非常有竞争力的,相对于传统On- Premise数据庫的架构PolarDB有非常大的竞争力。

我可以非常自信地说在阿里云上的PolarDB,无论是从性能、技术上都已经达到甚至在某些地方超越了AWS Aurora。阿里雲也在国际顶级的技术分享会议如SIGMOD、VLDB发表了论文介绍阿里的技术

从商业上来讲,从去年10月开始商业化到目前PolarDB已经是阿里云上增长最快嘚数据库产品,实际使用PolarDB的客户从新零售到金融再到传统的制造业,各个行业都有非常多的企业开始将数据库应用迁移到PolarDB上面,这是OLTP板块的情况

在OLAP板块,我们一样也会分成托管产品和自研产品托管比如说像传统的BI工具Tableau等,自研最主要的产品是AnalyticDB分析型分布式数据库其主要特点是行列混存,能够做到多表复杂的中文查询在秒级甚至毫秒级进行响应。

技术细节不展开讲讲两个具体的例子,一个是最菦做的TPC-DS打榜TPC-DS大家知道是业界公认的对分析型数据库非常重要的一个Benchmark,我们有一个好消息AnalyticDB已经通过TPC-DS层层考验,做到了世界第一性价比苐一,这个数据在TPC-DS官网上已经发布另外,介绍整个AnalyticDB系统的论文也会在今年的VLDB上宣讲,这两方面都可以从技术上来证明它的先进性

从業务上来讲,AnalyticDB支持了从税务、城市大脑到公有云从金融到地产等一系列各行业对海量数据高并发秒级在线分析的诉求,与PolarDB形成了一个天嘫的互补从OLTP到OLAP形成了完整的数据链路。

最后,阿里云在NoSQL和工具类方面也有很强的技术布局主要是通过集团的应用多年锻打出来的一些核惢产品。比如在工具方面我们有DTS数据传输,在不同的库之间云上云下以及云上不同实例之间进行实时的数据增量一致性备份传输等等,这样可以使得客户快速的进行数据库的迁移还有数据备份DBS服务。这一系列的产品都是从客户的角度出发客户需要什么?客户的痛点昰什么我们拿到客户的需求来反推我们技术上要做哪些东西,做到了今天这样一个状态

问:PolarDB对标的是Aurora,AnalyticDB对标的是Redshift那么,阿里云数据庫研发是有着自己既定的研发策略还是采取的跟随策略?

答:从客观上来讲在云上,不仅是数据库板块从IaaS到PaaS,AWS绝对是先行者他们嘚先进经验以及他们避免走过的弯路,我们没有必要一定要走完全跟他们不同的道路我个人认为还是要集百家之长,要有一种开放的心態

所以,回答您刚才的问题我觉得我们一开始是一个Follower(跟随者),这个没什么不好意思承认的但是我们要从Follower做到超越者,做到leader通過几年的努力,我们现在已经做到了能够走出一条不同的路做到了leader位置。那是怎样从Follower变成Leader的核心诉求是从客户的需求出发。

阿里云有什么优势阿里云的优势是能接触到中国广大的客户需求。AWS主要的市场在美国美国客户需求和中国的客户需求有相同的地方,但也有不哃的地方比如说,很多大中型国有企业美国没有这种组织架构,其需求和美国的商业公司肯定有不同这是一个很具体的例子,会对峩们的技术演进之路提出一些新的思考、新的挑战也就会使我们最终会走出一条不同于Aurora的技术之路。

另外我们背靠阿里巴巴集团,身處复杂的生态环境从电商到线下的新零售,像盒马以及线上娱乐如优酷等等不仅对我们的技术提出了非常大的挑战,也提供了极为丰富的练兵场这是我们能够持续走下去并不断衍生出新技术的一个核心保障。

问:到目前为止阿里云数据库产品线服务总计有多少个?

答:我们现在从托管产品到自研产品加起来在16个产品左右。这些产品分成四大个板块:OLTP、OLAP 加NoSQL加工具最后还有一个用户看不到的底层托管平台。底层托管产品不是独立的产品它就是一个隐形存在。

从数据库产品数量上讲大家其实大同小异,基本上都是在同一数量级沒有太大的差别。核心的差别是在OLTP和OLAP 板块

另外,在某些领域我们也做到了人无我有,即AWS不一定有阿里云有。比如在分布式数据库板块,因为集团的“双11”场景需求我们需要做share-nothing的架构。因此我们在PolarDB基础上做了PolarDB-X。这样一个share-nothing的分布式架构来支持“双11”海量高并发数据嘚应用场景支撑

从AWS的角度看,没有和我们对标的产品所以,现在云数据库时代是百花齐放、百家争鸣的状态全球各个厂商,包括阿裏AWS、 Azure和Google大家在某些领域都有各自领先的地方,但在其他领域可能另外一个厂商又有领先的地方客观来说,阿里云的数据库在国内无论昰从市场、技术还是产品方面都绝对处于领先地位,在国际上也完全是跟AWS拉齐的水平希望后续竞争到下半场,我们能够在某些领域真囸的做到领先者地位

问:我们知道,像MongoDB等好几家开源数据库厂商都修改了许可协议主要针对的就是云计算厂商,您觉得未来两者之間会是一个怎样的关系?这是否是云厂商纷纷发布自研云原生数据库背后的推力之一

答:这是个非常好的问题,我把这个问题延伸一下不仅是开源数据库厂商会有动力和压力去做云原生方向的转变,传统的巨头如Oracle也绝对是不遗余力的要去往云原生云数据库这个方向去发展

云原生数据库有很多技术点,最重要的是弹性、存储计算分离、隔离、多租户还有很重要的一点要有自己的云托管平台。像Oracle或MongoDB要在雲上提供服务就必须要依赖于云厂商的管控平台,这也是为什么去年MongoDB修改协议的原因

其实,MongoDB的协议修改得非常巧妙它允许对MongoDB开源版夲进行托管服务,但是如果要基于以后的版本继续提供服务那么,下面的托管平台就必须要开源也就是说,如果AWS或者阿里云要继续托管MongoDB的最新版本底下的管控平台就要开源,开源以后MongoDB可以拿去做自己的云托管服务事实上MongoDB也是这么做的,研发了自己的Atlas从MongoDB最新的财报僦能看到,其Atlas的增长已经达到了40%多市场份额从去年年初只有百分之十几,到去年年底Atlas云托管服务已经增长到MongoD整个营收的30%多。

MongoDB的思路很簡单比起让云厂商提供托管服务并基于MongoDB开源版来占领市场份额,它更希望自己做托管服务加上自己的内核,来把蛋糕整个切下来把雲厂商定位成只是做IaaS(Infrastructure as a Service)的一层。MongoDB是一种策略其他的开源数据库厂商包括商业数据库Oracle、SAP, Oracle做Oracle cloudSAP也做自己的SAP Cloud,它们背后的思路和逻辑都是如絀一辙

云厂商的应对策略也很简单,继续托管产品但只托管以前版本的产品,即对托管平台没有要求的开源版本绝对不可能去托管朂新版让自身的管控平台开源。云数据库之战上半场各个云厂商核心的竞争力在哪里其实就是在底下的托管平台。因为在上半场大家主要还是靠MySQL、PG以及商业的SQL Server这些数据库,来拉动线下的on- premise数据库市场往云上迁移这是最核心的竞争力。

用户上云有两种选择要么用托管的MySQL囷PG或者SQL Server,或者就是在虚拟机里面自建

这两个选择对客户来讲,云厂商的价值就是在托管平台来体现的因为在内核上跟自建完全没区别。托管平台最核心的就是SLA的保证Service-Level Agreement、RTO、RPO能够做到比自建要好很多或者说和自建SLA一样,但是成本要比它低

对用户而言,可能需要强大的DBA团隊才能做到与托管平台一样的SLA保证。这可以极大减少运维的投入这是上半场的态势。

下半场如果MongoDB等厂商做了自己的云托管服务就会倒逼原来上了云托管服务的客户,回到虚拟机里面自建把云厂商彻底地定位成IaaS。因为,现在对客户而言比如说客户用MongoDB的Atlas,那相当于拿到叻AWS或者阿里云托管平台提供的SLA的能力但又不需要给云厂商直接付费,成本上有优势可能就会去选择自建。

那云厂商怎么应对呢有两點:第一是不断地提升托管平台竞争力。比如说我们阿里云上有一个叫SDDP的自动驾驶云托管平台它是利用机器学习人工智能的技术,来对雲托管平台上的数据库实例进行自动运维、自动优化等等来确保托管平台的竞争力。第二个从内核的角度来说为什么亚马逊、阿里和Google,都在自己做自己的云原生数据库因为大家意识到,仅仅靠托管平台的竞争力是拉不开升位差距的所以一定要有自己的自主可控的内核,而且这个内核能够和传统的on- premise DB有性能上的差异针对云原生的一些特点,能够吸引客户从MySQL、PG、Aurora和MongoDB等迁移到自主开发的云原生数据库上来

AWS是最典型的,率先推出了Aurora在NoSQL领域又推出了DynamoDB,在分析领域推出了RedshiftMongoDB修改协议以后,它又推出了自己的DocumentDB这一系列动作背后的逻辑,和前媔讲的是一样的我个人认为,这场比赛已经进入了下半场总结来讲,作为云厂商我们需要在两方面发力,一个是管控平台通过智能化的手段,提高它的运维能力和效率另外一个要提升它的安全可靠、可验证。AWS去年推出了QLDB、Quantum Ledger Database利用区块链里面的Merkle tree技术,对数据库的运維日志进行验证这样客户上云以后可以来验证运维日志,来确保做到了SLA的保障这些是从管控平台要做的一些差异化。另外是从内核的角度不断地去投入内核的研发,以能够和传统的数据库或者新生的像MongoDB数据库内核进行差异化的竞争。以上是我认为的云数据库战场下半场的一些比较精彩的看点

问:您提到了云原生数据库,我最近也总是听到几个词云原生分布式数据库,分布式中间件等如何去鉴別真正的云原生和伪云原生?

答:这个问题很好传统的数据库架构是什么?是一种share-everything的架构比如说一个本地磁盘上面可能有比较大的内存,可以插多个内存条有比较大的内存池。再上面是计算有共享的计算状态,有多个 Core但是很关键的一点是transaction,或者有很多个 query进来这些transaction和query在整个数据库从存储到内存,再到

这种架构有它的优势是共享状态所以Coordination比较容易做。但缺点是Scalebility(扩展性)会受很大的限制所以就衍生出了分布式这个概念,分布式最核心的挑战就是要提供Scale Out以及Scale Up的能力

Spanner的做法,是做一个share-nothing然后做分库分表,做partition做sharding。在shard之间如果有跨shard嘚查询和事务就需要做分布式的查询和分布式的事务处理。这个就是分库分表、Spanner的架构也是PolarDB-X的架构。这是一种在share-nothing上面有两个分支,┅个是原生的分布式架构也就是说,实际上在底下是做了sharding和partition的但客户不需要去感知。对客户来讲业务逻辑不需要改,如果有分布式嘚事务处理分布式查询就会自动搞定。客户不需要去担心怎么去分库分表去拆分业务逻辑,这是一种

还有一种就是您刚才问题里面提到的,利用中间件的形式做一个分库分表的解决方案这个对业务逻辑是有侵害的。这需要数据库的服务商或者是客户自己要对业务邏辑有很清晰的认识。比如说库存、订单这两个库是分开的,平时也不会有交集所以,在业务逻辑上把它拆分成两个库,这两个库存在不同的节点这就是一种中间件的解决方式,业界有很多这样的解决方案

这种方案的好处是比较简单,劣势就是它没有像原生分布式数据库那样对客户的业务逻辑有侵入式的改造。另外就是它对事务分布式查询的支持,无法做到像原生的分布式数据库那么好以仩是关于share-noting分布式数据库。

现在大家讲的所谓叫云原生分布式数据库。我认为这是一个伪命题、伪概念实际上,现在所有的厂商在云数據库上还没有一个真正的分布式的架构大部分都是利用分布式存储做共享存储,然后在上面做一写多读比如PolarDB, Aurora都是这样的架构它实際上是分布式的共享存储,上面做一写多读存储计算分离这个是我认为现在所谓的云原生数据库或云原生分布式数据库最典型的一个架構,分布式利用RDMA快速网络做一个分布式共享存储它看起来像一块盘,实际上它是一个分布式的磁盘但对上层的kernel来讲,它看起来像一块夲地盘它带来的好处就是物理数据只有一份,它避免了像MySQL、PG这种传统的主备需要在主库和备库之间做这种物理数据的备份的挑战。主庫、备库写的节点和读的节点是一份物理数据这样就带来很多很多好处。但严格来讲它是一个分布式存储的数据库,不能把它叫一个汾布式数据库这和我们经典定义的分布式数据库还是有一些区别的,但是现在大家把这个叫云原生数据库或云原生分布式数据库

在下半场再往前发展会出现一个什么现象?我个人认为下半场可能会比较有突破点的地方,就是把刚才所说的真正的分布式架构通过shardin架构和雲原生分布式共享存储的shared-storage架构(云原生分布式数据库从架构上来讲叫共享存储shared-storage架构)结合起来这个结构的好处是什么?因为shared-storage用的是RDMARDMA是囿限制的,比如跨AZ或者说更严重的情况要跨区的时候,它不可能无限的扩RDMA共享存储可能只能做到十几个节点、几十个节点。因为一旦跨了network swich以后RDMA的性能损耗非常大,远程访问不可能做到和本地访问一样快这样shared-storage架构就有限制。

最经典的Oracle RAC做到 10个节点、20个节点就没办法再往仩了但如果并发高到一定程度或者数量大到一定程度,只能再往上扩Scale Out要一直往下该怎么办?这时候一定要做分布式partition、sharding这种架构但是partition、sharding如果不用共享存储的话,带来什么影响呢每个shard不能做太大,因为单节点就只能存这么多数据也就是说可能要分很多个shard,分布式的transaction非瑺多一旦有distributed commit,性能损耗是非常大的所以这两个如果能结合起来,有一个好处就是还是可以Scale Out因为我上面有share-nothing这一层,底下是共享存储的節点每个shard就可以做得非常大。也就是说对同样的数据来讲我只需要很少的shard就可以来支持。很少的shard也就意味着分布式跨shard的这种处理会大夶减小分布式的能力会大大提升。所以这两个结合起来我觉得会是一个比较新、比较有意思的挑战。

问:接下来的一些问题其实也┅直比较困扰我。刚刚您说了分布式其实过去还有一种分类,比如说SQL、NoSQL、NewSQL那NewSQL和分布式数据库之间到底是一个什么关系?过去我会把它悝解成SQL、NoSQL之外的就是NewSQL分布式数据库和NewSQL之间是一个包含关系还是其他的关系?

答:这也非常好的一个问题数据库的同仁和朋友很多时候會有一些混淆的地方。首先NoSQL虽然叫NoSQL但它实际上含义并不是不要SQL,它是Not Only SQL的缩写取了个巧叫NoSQL,但它实际上是指不仅仅是SQL的意思NoSQL的最早发展是怎么来的?实际上来源于传统的关系型数据库关系型数据库里面因为要保障强一致,也就是ACID所以Scale Out能力是受到限制的,所以在做Atomicity、 Consistency、Avilability、Durability这些保证的Isolation的时候和分布式fundamentally是有冲突的,当时的硬件技术、软件技术没有使得传统关系型数据库能够无限的水平拓展

但以Google为代表嘚很多互联网公司,在当时确实需要数据和事务处理、查询处理能够无限的水平拓展因为数据量太大了,每天运行的数据都要存这是個无限增长的过程。而且这些数据还有个特点它不一定是结构化的,它可能是半结构甚至非结构数据的所以,就衍生出NoSQL这个概念总結来讲,NoSQL最核心的理念就是把传统的关系型数据库里强一致的需求弱化比如说Isolation level,传统关系型里可能要snapshot isolation,现在只要做到ReadCommitted就行了只要没有脏讀就可以。其它的应用如果应用层需要更高的隔离机制,那就在应用层去写逻辑用external Consistence的方法来解决,在数据库层面只需保证没有脏读犧牲一定的数据一致性,换来几乎无限的水平拓展这类系统最经典的就是Hbase、Google的BigTable、Cassandra等等,这就是NoSQL的来源

总结来讲,就是为了提供无限的沝平拓展Scale Out的能力牺牲一定的一致性保障,主要是在Consistency 和Isolation上做一些牺牲换来无限的水平拓展Scale Out的能力。

NewSQL怎么来的在NoSQL大概发展了有十年左右,大概是在2008年、2009年那时候出来这个概念到现在接近10年了。大家发现把一致性等推到应用逻辑层去写还是很多困难的而且大家发现慢慢哋发现对非结构化、半结构化数据也是有强一致性需求的。不是说传统的transaction事务处理只对结构化数据有需求对非结构化、半结构化没这个需求。所以大家就发现NoSQL系统也得去保证ACID Isolation在NoSQL的场景下,这是从事NOSQL的朋友发现有这个需求从事关系型数据库的朋友发现了什么?比如说MySQL从5.7開始PG11.0、11.2版本都加入了对Json的支持。典型的半结构化的数据结构也就是说传统的关键性数据库仅仅支持结构化数据也不行了,它必须也要提供非结构化、半结构化数据的支持也就是说两边都开始往中间靠。一个有强一致的guarantee但是它只支持结构化数据,Scale Out能力有限另外一个支持半结构化、非结构化数据,Scale Out能力很好但没有一致性保证。两边都牺牲了一些东西换来自己想要的,但后来越来越发现牺牲的东西愙户也是需要的不仅限于自己所保留的,所以两边都开始补齐缺失的功能

两者都要有,就变成了“既要......又要......”的状态这就变成了两方的结合,也就是NewSQL所以最终我个人认为,如果NewSQL真能发展到最后变成比较常见的一个态势传统的NoSQL和关系型数据库的边界就会越来越模糊。

也就是说,NewSQL它不等于分布式数据库分布式数据库可以是NewSQL数据库。NewSQL里面很重要的是Scale Out能力它首先肯定是一个分布式存储的架构。也就是说咜不一定是分布式共享存储但它肯定是有shard的,有partition像HBase、MongDB都是shard default的最常见的一个态势。但分布式的数据不一定是分布式的数据库这要看它昰不是真正做到了分布式查询和分布式事务。因为有可能它做了shard分布式的数据,但是查询和事务是所谓的叫perfect shardable workload这个事务和查询只用看第┅个shard就完成了,另一个查询只看第二个shard所以虽然它有很多个shard,也有很多个查询和事务但是具体到每一个查询和事务,都是单个shard搞定的严格来讲,我认为它不是一个分布式数据库只是对业务逻辑进行了比较巧的一个partition,使得它可以就完美地去并行处理

真正的分布式数據库有两个特点:第一,数据肯定是分成了多个shard;第二它的查询和transaction是有可能产生cross shard这种查询和cross shard transaction,这种叫分布式传统的NoSQL只支持第一个特点戓只支持第二个特点的。支持第二个特点的是牺牲了数据一致性(isolation level)换来了它能够支持分布式事务、分布式查询的能力。

关于NewSQL我个人认为┅个真正好的NewSQL数据库,它必须是支持结构化、半结构化、非结构化数据这第一点。

第二点是优秀的NewSQL数据库要有非常好的水平拓展的能仂和Scale Out能力,支持分布式查询、分布式事务同时在单节点上又有非常好的弹性和Scale Out的能力。目前来看还没有一个数据库可以做到完美的解決所有问题,还有一些其它的技术点像HTAP(混合的事务和分析处理)、读写并存怎样高效的去处理还有多模multimode、多种数据形态在一个库里,怎样在统一界面去查询如果能够完美地解决所有这些问题,我认为它就是一个比较优秀的NewSQL数据库

目前来看NewSQL只是从技术概念上出现的一個东西。严格来讲有很多厂商说自己的数据库是NewSQL,他可能只是在某些维度实现了一到两个点但并没有完美解决我们刚才提到的NewSQL所有的技术挑战,所以我觉得目前我们还是有比较长的路去探索的。

我要回帖

更多关于 第三象限 的文章

 

随机推荐