【编者按】DTCC 2019已经结束,云栖社区沉淀了不少阿里巴巴所分享的优质演讲整理稿件。这篇转载自IT168&ITPUB执行总编老鱼的公众号,分享给你们。sql
李飞飞,现任阿里巴巴集团副总裁、高级研究员,阿里云智能数据库事业部总负责人。加入阿里巴巴以前为美国犹他大学计算机系终身教授。研究成果屡次得到了IEEE ICDE、ACM SIGMOD最佳论文奖等重要学术奖项。数据库
2018年,李飞飞加入阿里巴巴达摩院,带领团队投入到具备自主知识产权的研究当中。目前,带领的阿里云智能数据库事业部所研发的新一代分布式数据库系统,支撑了阿里巴巴集团的复杂业务、海量数据和双11交易洪峰的挑战,已经被应用于多个城市的智能城市交通网络管理,并服务了金融、零售、物流、制造等行业企业。安全
2018年,阿里云数据库成功进入Gartner数据库魔力象限,这是该榜单首次出现中国公司,近日,阿里云数据库再次入选Forrester数据库评估报告,成为国内首个得到两大顶级机构承认的科技公司。网络
2019年5月10日,DTCC 2019(第十届中国数据库技术大会)在北京举办,李飞飞来到现场发表了精彩的主题演讲,并在大会期间接受了IT168&ITPUB执行总编老鱼的深度专访,众多独特观点精彩纷呈。数据结构
一、PolarDB从去年10月开始商业化到目前,已经成为阿里云上增加最快的数据库产品;架构
二、AnalyticDB已经经过TPC-DS打榜,作到了世界第一,性价比第一,数据在TPC-DS官网上已发布;并发
一、目前市面上全部的自研云原生数据库并非真正意义上的分布式数据库,只能称之为分布式存储的数据库,所以,在下半场这或许会是一个突破点;负载均衡
二、NoSQL和传统关系型数据库的边界会愈来愈模糊;运维
三、有不少厂商说本身的数据库是NewSQL,严格来说,其实只是在某些维度实现了一到两个点,并无完美解决NewSQL全部的技术挑战;机器学习
四、MongoDB协议修改得很是巧妙,其目的是为了获取云厂商的托管平台去作本身的云托管服务。
五、上半场各云厂商核心的竞争力实际上是底层的托管平台,所以,云厂商绝对不可能去托管修改协议后的最新版开源数据库,让自身管控平台开源;
六、下半场两个发力重点:一个是不断地提高托管平台竞争力,二是必定要有本身自研的数据库内核,这是为何你们都在自研数据库的缘由,由于,仅仅靠托管平台的竞争力是拉不开身位差距的;
……………………………………………………
如下是专访原文,为了便于阅读,在不影响原意的前提下,略作修改。
问:请从阿里云数据库产品线重要的产品节点和突破,来谈一谈阿里云在数据库领域的竞争力?
答:众所周知,数据库市场主要分为了如下几个板块,一个是传统的OLTP,即所谓的RDBMS线上交易系统。最经典的商业的有Oracle、SQL Server,开源的有MySQL、Postgresql,OLTP是阿里云很大的一个板块。
第二个板块是OLAP在线分析,如Teradata,AWS Redshift都属于这个板块。
第三个板块是非结构化、半结构化数据处理需求带来的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 板块。
阿里云已经从Follower作到基本与AWS持平,甚至在技术上某些领域作到了领先。好比说刚才讲的OLAP , AnalyticDB的性能已经在TPC-DS上打榜,并排到了第一。经过和AWS官方Redshift对比(在AWS上去买Redshift跑一样的Workload),在TPC-DS的不少的Query,AnalyticDB的性能都是要优于Redshift。
另外,在某些领域,咱们也作到了人无我有,即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 cloud,SAP也作本身的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,在分析领域推出了Redshift。MongoDB修改协议之后,它又推出了本身的DocumentDB。这一系列动做背后的逻辑,和前面讲的是同样的。我我的认为,这场比赛已经进入了下半场。总结来说,做为云厂商,咱们须要在两方面发力,一个是管控平台,经过智能化的手段,提升它的运维能力和效率,另一个要提高它的安全可靠、可验证。AWS去年推出了QLDB、Quantum Ledger Database,利用区块链里面的Merkle tree技术,对数据库的运维日志进行验证。这样客户上云之后能够来验证运维日志,来确保作到了SLA的保障,这些是从管控平台要作的一些差别化。另外是从内核的角度,不断地去投入内核的研发,以可以和传统的数据库或者新生的像MongoDB数据库内核,进行差别化的竞争。以上是我认为的云数据库战场下半场的一些比较精彩的看点。
问:您提到了云原生数据库,我最近也老是听到几个词,云原生分布式数据库,分布式中间件等。如何去鉴别真正的云原生和伪云原生?
答:这个问题很好,传统的数据库架构是什么?是一种share-everything的架构,好比说一个本地磁盘上面可能有比较大的内存,能够插多个内存条,有比较大的内存池。再上面是计算,有共享的计算状态,有多个 Core。可是很关键的一点是transaction,或者有不少个 query进来,这些transaction和query在整个数据库从存储到内存,再到 Core都是共享状态的,这个就叫share-everything架构,也是传统的数据库架构,像Oracle、SQL Sever都是这种架构。
这种架构有它的优点,是共享状态因此Coordination比较容易作。但缺点是Scalebility(扩展性)会受很大的限制,因此就衍生出了分布式这个概念,分布式最核心的挑战就是要提供Scale Out以及Scale Up的能力。
Scale Out怎么作呢?比较经典的像Google 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用的是RDMA,RDMA是有限制的,好比跨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 guarantee,所谓的eventual consistency,weak consistency guarantee在不少应用下不适用,因此仍是要去作snapshot 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全部的技术挑战,因此我以为,目前咱们仍是有比较长的路去探索的。
本文做者: 老鱼笔记