达摩院首席数据库科学家李飞飞:云原生新战场,咱们如何把握先机?

阿里妹导读:云计算大潮来袭,传统数据库市场正面临从新洗牌的情境,包括云数据库在内的一批新生力量崛起,动摇了传统数据库的垄断地位,而由云厂商主导的云原生数据库则将这种“改变”推向了高潮。

云时代的数据库将面临怎样的变革?云原生数据库有哪些独特优点?在 DTCC 2019大会上,阿里巴巴副总裁 李飞飞博士就《下一代云原生数据库技术与趋势》进行了精彩分享。数据库

李飞飞(花名:飞刀),阿里巴巴集团副总裁,高级研究员,达摩院首席数据库科学家,阿里云智能事业群数据库产品事业部负责人,ACM 杰出科学家。跨域

大势所趋:云数据库市场份额增速迅猛

以下图所示的是 Gartner 关于全球数据库市场份额的报告,该报告指出目前全球数据库市场份额大约为400亿美金,其中,中国数据库市场份额占比为3.7%,大约为14亿美金。安全

具体到数据库市场分布,传统五大数据库厂商 Oracle、Microsoft、IBM、SAP、Teradata 占比达到了80%,云数据库的份额占比接近10%,而且云数据库市场份额占比每一年也在快速增加,所以, Oracle、MongoDB 等也在大力布局其在云数据库市场的竞争态势。网络

根据 DB-Engines 数据库市场分析显示,数据库系统正朝着多样化、多元化的方向发展,从传统的 TP 关系型数据库发展到今天的多源异构的数据库形态。目前,处于主流位置的仍是你们耳熟能详的数据库系统,好比商业数据库 Oracle、SQL Server以及开源的 MySQL、PostgreSQL 等。而一些比较新的数据库系统,好比MongoDB、Redis 则开辟了一个新的赛道。数据库 License 的传统销售方式在逐渐走下坡路,而开源以及云上数据库 License 的流行程度却在不断提高。数据结构

数据库:云上应用关键的一环

正如 AWS 创始人 Jeff Bezos 所说:“The real battle will be in databases”。由于云最先是从 IaaS 作起来的,从虚拟机、存储、网络,到如今如火如荼的语音识别、计算机视觉以及机器人等智能化应用,都是基于 IaaS 的,而数据库就是链接 IaaS 与智能化应用 SaaS 最为关键的一环。从数据产生、存储到消费的各个环节,数据库都相当重要。架构

数据库主要包括四大板块,即 OLTP、OLAP、NoSQL 以及数据库服务和管理类工具,也是云数据库厂商发力的四个方向。对于 OLTP 而言,技术发展已经历经了40年,而现在你们还在作的一件事情就是“加10元和减10元”,也就是所谓的事务处理。当数据量变得愈来愈大和读写冲突的缘由,对数据进行在线实时分析的需求衍生出了 OLAP。因为须要 Scale out,而数据强一致性不可以获得保证,就有了NoSQL 。而最近又出现了一个新名词—— NewSQL,这是由于 NoSQL 也有所不足,故将传统 OLTP 的 ACID 保证与 NoSQL 的 Scale out 能力进行了整合,变成了NewSQL。并发

数据库系统架构演进:All depends on what is shared

纵观数据库40年来的发展历史,从最先的关系型数据库时期,衍生出了 SQL、OLTP 等技术;到数据量急剧增加,须要避免读写冲突,经过 ETL、数据仓库以及 Data Cube 等技术实现了 OLAP;再到今天,面对异构多源的数据结构,从图到时序、时空到向量等,也就诞生了 NoSQL、NewSQL 等数据库,同时也出现了一些新的技术,好比 Multi-Model 和 HTAP 等。负载均衡

数据库系统最为主流的架构是 Shared Memory:共享处理器内核,共享内存而且具备共享的本地磁盘,这样的单机架构属于很是主流的架构,传统的数据库厂商基本采用的也是这样的架构。运维

而随着互联网企业的大规模发展,如 Google、Amazon 以及阿里巴巴,你们发现原来的单机架构有不少限制,其可扩展性以及吞吐量没法知足业务发展需求,因而就衍生出了 Shared Disk/Storage 架构,即共享存储架构。也就是说数据库底层多是分布式存储,经过利用 RDMA 这样的快速网络让上层的数据库内核看起来像是在使用本地的磁盘,但其实是分布式存储。上面能够有多个独立计算节点,通常是一写多读,可是也能够作多写多读,这就是共享存储架构,其中比较典型的表明就是阿里云的 POLARDB 数据库。机器学习

另一种架构是 Shared Nothing 。共享存储虽然有诸多优势,解决了不少问题,可是 RDMA 网络也存在不少的限制,好比其跨越 Switch 甚至是跨 AZ 和 Region 的时候性能都会有所损失。分布式的共享存储达到必定的节点数量以后,性能会出现必定的损耗,因此不能保证访问远程数据和访问本地数据的性能彻底相同,因此共享存储的架构当扩展到十几个节点以后就达到了 scale out 扩展的上限了。此时,若是应用须要继续扩展怎么办呢?那就须要实现分布式架构了,比较典型的就是 Google Spanner,其利用原子钟技术可以实现跨数据中心的数据一致性和事务一致性。而在阿里云,基于 POLARDB 实现的分布式版本 POLARDB-X 采用的也是 Shared Nothing 架构。

这里须要注意的一点就是:Shared Nothing 和 Shared Storage 能够结合。能够在上层作 Shared Nothing,而对于下层的 Shard 分片采用 Shared Storage 架构。这样混合架构的好处在于可以减轻分出太多 Shard 的痛点问题,减小分布式事务distributed commit的 几率,由于 distributed commit 的代价很是昂贵。

总结三种架构设计,若是在 Shared Storage 架构上作到多写多读而不是一写多读,实际上也就实现了 SharedEverything 。将 Shared nothing 和 Sharedstorage 架构进行结合的 hybrid 架构应该是后续数据库系统发展方向的一个重要突破点。

云原生数据库核心四要素

上面从架构方面分析了云时代的主流数据库架构。从技术上来说,除了架构上的不一样,云原生时代还有一些不一样点。

多模(Multi-model)

其一是多模(Multi-model),多模主要有两种,即北向和南向。南向表示存储结构是多种多样的,数据结构能够是结构化的也能够是非结构化的,能够是图、向量、文档等,但对于用户只提供一个 SQL 的查询接口或者 SQL-Like 的接口,这部分业界比较典型的就是各类各样的数据湖服务。而北向的多模就是存储只有一种,通常是经过 KV 存储数据形态来支持结构化、半结构化以及非结构化数据,但但愿可以提供不一样的查询接口,好比 SPARQL、SQL、GQL 等。业界典型的表明是微软 Azure 的CosmosDB。

数据库智能化+自动化管控平台

数据库的自治化也是很是重要的发展方向,从数据库的内核以及管控平台两个角度都有不少技术点能够作。在数据库自治化部分,阿里巴巴认为,须要作到自感知、自决策、自恢复以及自优化。自优化比较简单,就是在内核中利用机器学习的方法来进行优化。而自感知、自决策、自恢复更多的是针对管控平台的,好比如何保证明例的巡检,当出现问题后如何可以自动快速修复或者自动切换等。

新硬件: 软硬件一体化设计

云原生数据库的第三大核心点是软硬件一体化设计。数据库首先是一个系统,而系统就须要可以安全高效地使用有限的硬件资源。因此数据库系统的设计和发展必定是和硬件性能和发展紧密相关的,咱们不可以面对硬件的变化而坚持旧有数据库设计不改变,好比 NVM 出来以后就可能对传统的数据库设计有一些冲击。而新硬件所带来的变化也是数据库系统设计须要考虑的。

RDMA、NVM 以及 GPU/FPGA 等新硬件或者架构的出现,对于数据库的设计都会提供新的思路。

高可用

高可用是云原生最基本的要求之一,上云的用户势必不但愿业务出现中断。高可用最简单的解决方案就是冗余,能够作 Table 级别的冗余,也能够作 Partition 级别的冗余。不管是使用哪种,基本上都是三副本,甚至更多的时候须要作四副本或者五副本,好比金融级别的高可用可能须要作两地三中心或者两地四中心。

对于高可用的多副本而言,如何保证副本之间的数据一致性?在数据库里面有一个经典的CAP理论,其理论结果是在 Consistency、Availability 和 Partition Tolerant 三者之间只能选择两个。如今你们的通常选择都是 C+P,同时对于 A 而言,经过三副本技术和分布式一致性协议,使得 A 达到6个9或者7个9,这样基本上就作到了100%的 CAP。

云原生数据库 POLARDB:极致弹性+兼容性 为海量数据和海量并发而生

前面介绍了数据库市场背景和云原生数据库的基本要素,接下来我将结合阿里云 POLARDB 以及 AnalyticDB 两款数据库系统,分享以上技术的具体落地状况。POLARDB 是阿里云的云原生数据库,目前已有很是深厚的技术积累。咱们在VLDB 2018,SIGMOD 2019等国际学术会议上发表了相关论文,主要介绍存储引擎等方面的技术创新。

POLARDB 采用共享存储架构,一写多读。共享存储架构有多个优点,首先是计算和存储分离,计算节点和存储节点能够分开实现弹性缩扩容;其次,POLARDB 突破了 MySQL、PG 等数据库对于单节点规格和可扩展性的限定,可以实现 100TB 存储容量以及每一个节点100万 QPS 的性能;此外,POLARDB 可以提供极致的弹性能力,备份恢复能力也有很大提高。在存储层,每一个数据块都采用三副本高可用技术,同时对于 Raft 协议进行了修改,经过实现并行式的 Raft 协议保证了三副本数据块之间的数据一致性,提供了金融级高可用。POLARDB 还能作到100%兼容 MySQL 以及 PG 等数据库生态,能够帮助用户实现无感知的应用迁移。

因为底层是共享的分布式存储,PolarDB 属于 Active-Active 的架构,主节点负责写入数据,从节点负责读取数据,所以,对于进入数据库的事务而言,主备节点都处于Active 状态,其好处在于经过一份物理存储避免了在主从之间不停地作数据同步。

具体而言,POLARDB 有一个 PolarProxy,也就是前面的网关代理,下面有 POLARDB 的内核以及 PolarFS,最下面对接的是 PolarStore,利用 RDMA 网络管理底层的分布式共享存储。PolarProxy 会对客户需求作分发,将写请求分配到主节点,而对于读请求而言,则会根据负载均衡以及读节点的状态实现对于读请求的分配,这样就可以尽量地实现资源的最大化利用以及性能的提高。

POLARDB 共享存储采用分布式+三副本。其中 Primary 节点负责写,其余节点负责读,其下层是 PolarStore,每部分都会有三副本的备份,经过分布式一致性协议保证数据一致性。这样设计的优点在于可以实现存储与计算分离,同时可以作到无锁备份,因此备份可作到秒级。

在一写多读的状况下,POLARDB 可以实现快速伸缩。举例而言,从2核 vCPU 升级到32核或者从两个节点扩展到4个节点,都可以在5分钟以内生效。存储和计算分离可以带来的另外一大好处是下降成本,由于存储和计算节点能够独立地进行弹性伸缩,充分体现成本优点。

下图展现了 POLARDB 如何利用物理日志实现持续恢复。左侧是传统数据库的架构,而在 POLARDB 里面,因为采用了共享存储,所以可基本保留相似传统数据库利用物理日志进行恢复的过程,经过共享存储实现持续恢复,作事务的 Snapshot 恢复。

对比一下,若是 MySQL 作主备架构,首先须要在主库里面有一个逻辑日志和物理日志,在备库里面要重放主库的逻辑日志,而后再按照主库的方式作逻辑日志和物理日志。而在 POLARDB 里面,由于是共享存储,可直接经过一份日志实现数据恢复,备库可以直接将所须要的数据恢复出来,而不须要去重放主库的逻辑日志。

POLARDB一写多读集群的另外一大优点是动态 DDL 的支持。在 MySQL 架构下,如要对数据的 Schema 进行修改,须要经过 Binlog 去 Replay 到备库,所以备库会存在Blocking 的阶段,须要必定时间 Replay 动态的 DDL。而在 POLARDB共享存储架构下,全部 Schema 信息以及 metadata 均以表的形式直接存储在存储引擎里面,只要主库改完了,那么备库的元信息也实时同步更新,所以不会存在 Blocking 的过程。

POLARDB 的 Proxy 最主要的做用就是作读写分离、负载均衡、高可用切换以及安全防御等。POLARDB 是一写多读架构,当请求进来以后,须要进行读写的判断,将写请求分发到写节点,将读请求分发到读节点上去,而且对于读请求作必定的负载均衡。这样就能保证会话的一致性,而且完全解决了读不到最新数据的问题。

无损弹性是 POLARDB 监控的模块之一。分布式存储须要知道分配多少磁盘量 /Chunk,POLARDB 会监控未使用的 Chunk 量。好比当可用量低于30%的时候,就会在后台自动地对其进行扩容,这使得应用基本不受影响,可连续写数据。

对于云数据库 POLARDB 而言,以上技术带来的最大优点是极致的弹性。这里咱们以一个具体的客户案例进行说明。以下图所示,红线部分指离线资源的消耗状况,这些成本是客户不管如何都须要付出的,而其上面的部分则是计算资源的需求。

好比客户在三、4月有新品上市,5月还有促销活动,这两个时期计算需求会很是大。如按照传统架构方式,可能须要在新品上市以前就将容量弹到更大的规模,而且保持这样的水位,到了后面的促销阶段又须要弹到更高的规格,成本很是高昂。但若是可以作到极致弹性,好比 POLARDB 的存储与计算分离,实现快速弹性扩容,那么用户就只需在蓝色方块出现以前将容量弹上去,以后再弹下来便可,这样就能大幅下降成本。

除了云原生数据库 POLARDB ,阿里云数据库团队在其余方向还有众多探索。

分布式版本 POLARDB-X : 高并发+跨域高可用 支持水平拓展

若是企业须要极致的 Scale out 能力,像阿里巴巴以及传统行业中的银行、电力等对高并发、海量数据支撑要求极高的用户,共享存储架构只能支持弹至十几个节点,确定是不够的。所以,阿里云数据库团队也采用 Shared Nothing 作水平拓展,将Shared Nothing 与 Shared Storage 相结合,造成 POLARDB-X 。POLARDB-X 支持金融级跨可用区数据强一致, 对支持海量数据下的高并发事务处理有着极好的性能表现。目前,POLARDB-X 在阿里内部已上线应用,利用存储计算分离、硬件加速、分布式事务处理和分布式查询优化等技术,成功支持了在双11这样的场景下阿里巴巴全部业务核心链路数据库洪峰的挑战,咱们后续将推出商业化版本,敬请期待。

OLAP 数据库标杆—— AnalyticDB:海量数据 实时高并发在线分析

此外在 OLAP 分析型数据库方向,阿里云数据库团队自主研发了数据库产品——AnalyticDB,在阿里云的公有云和专有云上均有售卖。AnalyticDB 拥有几大核心架构特色:

  • 行列混存引擎,可以支持高吞吐写入和高并发查询;
  • 支持海量数据处理,对于海量数据能实现秒级分析,完美支持多表、中文以及复杂分析;
  • 利用向量化技术,支持结构化数据和非结构化数据的融合处理。

近日,AnalyticDB 打榜 TPC-DS,在性价比方面达到了全球第一,经过了 TPC 官方的严苛认证。同时,介绍 AnalyticDB 系统的论文即将在 VLDB 2019 会议上展示。AnalyticDB 的经常使用应用场景是从 OLTP 应用咱们的数据传输与同步工具 DTS 至AnalyticDB 进行实时的数据分析。

自治数据库平台:智能调参上线 iBTune (individualized Buffer Tuning)

云原生数据库的特色之一是自治化,阿里云内部有个平台叫 SDDP(Self-Driving Database Platform——自治化数据库平台),SDDP 会对各个数据库实例进行实时的性能数据采集,并使用机器学习方法建模进行实时调配。

iBTune 的基本思想是,每一个数据库实例都包含一个 Buffer Size,传统数据库里面的Buffer Size 是提早分配好的,不能变化。而在大型企业里,Buffer 是一个资源池,须要消耗内存,所以但愿作到弹性自动调配每一个实例里的 BufferSize。好比淘宝商品库的数据库实例晚上不须要那么大的 Buffer,那么就能够自动将其 Buffer Size 弹下来,到早上再自动弹上去,同时要求不影响其 RT。为了知足上述需求并进行自动Buffer 优化,阿里云数据库团队构建了 iBTune 系统,目前监控近 7000个数据库实例,经过长期运营,可平均节省20TB 内存。介绍 iBTune 项目的核心技术论文也发表在了今年的 VLDB 2019大会上。

安全上云是关键 多重加密护航数据安全

云上的数据安全是很是重要的内容,阿里云数据库团队在数据安全方面也作了大量的工做。首先,数据落盘加密,在数据存储的时候就进行加密。此外,阿里云数据库也支持 BYOK,用户能够将本身的密钥拿到云上来实现落盘加密以及传输级别的加密。将来,阿里云数据库还将在内存处理时实现全程加密,对日志实现可信验证等。

阿里云企业级数据库云服务:全方位运维 全链路布局

阿里云数据库按照工具产品、引擎产品以及运营管控的全程数据库产品分类提供服务。下图展示的是阿里云——云数据库经常使用链路,经过 DTS 工具将线下数据库迁移到线上,基于数据需求/分类,分发相当系型数据库、图数据库以及 AnalyticDB 等。

阿里云数据库:客户第一,一切价值来自于服务用户

目前 POLARDB 数据库的增势迅猛,已经服务于通用行业、互联网金融、游戏、教育、新零售、多媒体等多个领域的龙头企业。

而 AnalyticDB 在分析型数据库市场也有很是出众的表现,支持实时分析以及可视化应用。

基于阿里云数据库技术,阿里巴巴支持了城市大脑等一系列关键项目及云上云下的大量客户。截止目前为止,阿里云数据库已经累计支持了近40万数据库实例成功上云。

云原生是数据库的新战场,它为发展了40多年的数据库行业带来了许多使人激动的新挑战和新机遇,阿里巴巴但愿与国内外数据库行业的各位技术同仁一块儿,将数据库技术推向更高的境界。

本文做者: 李飞飞

原文连接

本文来自云栖社区合做伙伴“ 阿里技术”,如需转载请联系原做者。

相关文章
相关标签/搜索