挑战未来:下一代企业级应用数据库系统-阿里云开发者社区

开发者社区> 开发者学习资源库> 正文
登录阅读全文

挑战未来:下一代企业级应用数据库系统

简介: 随着数据量以及数据类型的不断增多,业务需求逐渐从“大数据”转向“快数据”。数据库系统领域充满机遇,也布满挑战,越来越多的企业开始思考下一代数据库技术。在2019年杭州云栖大会开发者峰会上,阿里巴巴副总裁、阿里云智能数据库产品事业部总经理、高级研究员李飞飞就为大家分享了阿里云对于下一代企业级应用数据库系统的实践。

摘要:随着数据量以及数据类型的不断增多,业务需求逐渐从“大数据”转向“快数据”。数据库系统领域充满机遇,也布满挑战,越来越多的企业开始思考下一代数据库技术。在2019年杭州云栖大会开发者峰会上,阿里巴巴副总裁、阿里云智能数据库产品事业部总经理、高级研究员李飞飞就为大家分享了阿里云对于下一代企业级应用数据库系统的实践。

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

正如AWS总裁所说的“The real battle will be in databases”,数据库已经成为上云的关键一环,连接IaaS层与智能化应用最为关键的步骤就是数据库。

image.png

数据库发展-业务视角

从业务视角来看,数据库的发展有这样几类,最传统的关系型事务处理数据库叫OLTP,对于事务型数据库而言,最关键的问题是保证结构化数据的读写一致性,主要挑战是高并发的问题,即在海量数据下如何正确处理海量事务等。另外还有分析型数据库,也就是所谓的传统数仓,它所解决的问题是面对大量数据如何进行实时的交互式分析。在2008年和2009年,谷歌的三驾马车——GFS、MapReduce和BigTable诞生之后,就衍生出了NoSQL数据库,因为传统关系型数据库由于具有强一致性,因此在大数据情况下对于扩展能力还存在很大的限制,NoSQL数据库则牺牲了一定的一致性,换取了扩展的能力。除此之外,数据库还包括数据管理、备份以及传输等相关生态工具。以上这些就形成了数据库四个不同的业务视角。

image.png

阿里云数据库-中国云数据库领导者

阿里云在云原生数据库方面做了很多工作,其中最核心的产品当属POLARDB和AnalyticDB。目前,阿里云数据库在亚太市场排名第一、全球排名第三,并且用户和开发者的数目已经超过了10万。

image.png

数据库系统演进

数据库系统的演进最早从结构化数据库开始,逐渐衍生出了关系型数据库,核心技术是SQL和OLTP。后来数据越来越多,由于读写冲突的原因,需要将数据从OLTP数据库里面转移到数据仓库里面。在建仓的过程中,可能还会把非结构化数据转化为结构化数据,并存储到数仓里,这样一来就可以在数仓对结构化数据和非结构化数据进行交互式分析,这部分的核心技术是ETL和OLAP。数据库技术发展到今天,数据类型越来越多,出现了更多新的数据类型,如图、时序以及文档等,也需要有新的数据库系统,因此现在除了RDS、NoSQL之外还有了NewSQL,将传统关系型数据库的能力和NoSQL的能力完美地结合起来,这就是所谓的NewSQL数据库。除此之外,数据库领域也非常关注Multi-Mode和HTAP。

image.png

Multi-Model多模数据库系统

数据库可以分为北向和南向,南向是数据库的存储层,在南向,数据结构和类型可能是多种多样的,比如结构化数据、图数据、时序数据、向量数据以及文档数据等;而在北向,则希望能够在查询层提供一个标准的统一查询接口,比如SQL。南向存储形式多样,而北向查询接口统一就构成了标准的数据湖服务。除此之外,还可以在南向仅提供一种标准的数据存储形式,而北向则提供多种多样的查询接口,让用户可以按照图、文档等方式进行查询。

image.png

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

对于开发者而言,数据库系统变化的一个重要趋势是越来越智能化,包括Oracle在内的各大数据库厂商都在强调数据库智能化。数据库的智能化可以分为两个主要方面,一方面是内核的智能化,比如对于数据进行查询以及冷热分离,可以借助人工智能和机器学习的方法进行优化。另外一方面是数据库运维管控平台的智能化,使得数据库系统可以像自动驾驶汽车一样管理数据库实例。

image.png

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

数据库系统变化的另外一个重要趋势是RDMA、SSD、NVM、GPU/FPGA等新硬件带来的软硬件一体化的设计。无论是内核开发还是应用开发,新硬件的出现和使用都对开发者提出了更高的要求。

image.png

下一代企业级数据库:云原生+分布式

今天的数据库领域存在三种主流架构,即单节点架构、存储和计算分离云原生架构以及经典的分布式架构。阿里云认为下一代的企业级数据库的架构一定需要结合云原生架构和分布式架构的优势。也就是说需要在上层实现Shared Nothing,使得应用可以水平拓展,能够应对双11这样的海量数据和高并发的场景。中间做分库分表,但是传统架构下的分库分表可能对业务有所改造和侵入,也会增加跨Shard以及跨库查询的概率,使得性能会大大下降。因此,阿里云希望在下面一层使用Shared Everything的云原生架构。这样就使得每个Shard的处理能力大大增加,使得跨库查询和Distributed Commit的概率大大降低,系统的复杂度也会大大的降低,同时开发对应用的侵入程度也会降低。

image.png

阿里云数据库技术与产品是完整的生态体系

利用云原生+分布式的这种技术架构就能够支撑双11瞬间120倍的流量峰值增长。通过利用OLTP的POLARDB和OLAP的ADB就可以形成一个从数据产生、事务处理到实时消费、分析的完整闭环。

image.png

阿里云RDS For MySQL/AliSQL

当开发者来到阿里云的数据库平台,所看到的RDS For MySQL其实并不是官方版本的MySQL,而是阿里巴巴自己维护的AliSQL分支。在AliSQL之上,阿里巴巴做了大量企业级应用,比如支持TDE、BYOK等,还实现了线程池,增加了企业级应用开发的功能,也大大简化了开发者使用MySQL生态进行应用开发的复杂度。此外,RDS还支持单节点、双节点以及三节点的部署方式。正因为做出了这些贡献,阿里巴巴获得了MySQL 2018年的社区贡献奖,也是亚太地区唯一获得这个奖项的公司。

image.png

阿里云RDS AliSQL三节点金融级高可用集群

阿里云RDS AliSQL实现了三节点金融级高可用集群,其最大的优势就是高可用,因为它将CAP理论中的三点比较完美地结合起来。其核心思路是三节点中存在一个RDS的Leader以及两个Follower,通过Paxos形成三节点之间的Binlog同步,这样就可以保证数据和应用的高可用。

image.png

阿里云PostgreSQL独有的增强功能

除了MySQL之外,阿里云的PostgreSQL在社区版本上做了大量优化,比如Ganon支持GPU时空遥感引擎,varbitx支持对用户画像数据进行处理,BYOK实现了存储层加密等。在POLARDB for PostgreSQL版本上可以做到16个计算节点的拓展,在AnalyticDB for PostgreSQL上引入了HyperLog预估分析,比传统使用直方图进行预估分析准确得多,并且成本也低很多。因此,对于中小型业务,可以使用标准的社区版的RDS for PostgreSQL;对于混合型复杂业务,可以使用POLARDB for PostgreSQL;对于海量分析型BI以及报表业务,可以使用AnalyticDB for PostgreSQL,这样就形成了PostgreSQL生态的完整闭环。

image.png

POLARDB架构细节

接下来展开分享下一代企业级数据库架构,首先介绍大家比较熟悉的POLARDB。POLARDB的主要架构设计模式是计算与存储分离,使用RDMA做共享存储,在存储层通过Data Chunk和Parallel Raft协议保证数据高可用,这就实现了单一实例的多个主备架构。同时,前面增加一层PolarProxy实现多节点之间的读写分离和负载均衡。在下层实现了PolarFS文件系统,对接底层的PolarStore分布式共享存储。现在,POLARDB发布了MySQL 5.6版本以及MySQL 8.0版本,还有PostgreSQL的版本以及高度兼容Oracle的版本,各种各样的生态都能够在POLARDB数据库上得以完美的体现。

image.png

此外,阿里云POLARDB还实现了并行查询优化,使得查询的平均性能提升了27倍。大家知道MySQL等数据库的查询优化器或者查询执行器在实际上并没有做并行查询优化。而阿里云POLARDB则实现了线程池,因此可以实现并行化查询。举个简单的例子,一个包含100个Group by的SQL语句,如果做并行查询Group by,执行时间可能是原本串行执行Group by的1%。

阿里云POLARDB分布式版本——POLARDB-X

阿里云POLARDB分布式版本POLARDB-X简单而言就是把DRDS和POLARDB进行集合,形成上层Shared Nothing,下层Shared Everything、共享存储的架构,这种架构在针对海量数据进行开发的场景下具有诸多优势。

智能化OLAP:AnalyticDB实时交互式数据仓库

在生态兼容方面,AnalyticDB MySQL版本兼容MySQL生态,AnalyticDB PostgreSQL版本兼容PostgreSQL生态。AnalyticDB使用行列混存引擎,因此支持高吞吐写入和高并发查询AnalyticDB也采用计算和存储分离的架构,它会把计算资源进行池化实现灵活调度,将计算节点分为写入节点和只读节点,并做智能化的调度,根据实际负载决定读写节点的分配情况。AnalyticDB具有向量化的执行引擎,支持对结构化数据和非结构化数据进行联合分析,对人工智能以及机器学习的很多应用非常有帮助。

image.png

AI for DB-DBAdvisor:智能化数据库管控与内核

阿里云在智能与安全方面提供了DBAdvisor工具。DBAdvisor能够帮助开发者优化数据库管控策略,比如索引策略和分库分表策略等。DBAdvisor能够根据实际业务复杂推荐如何做Sharding。此外,SDDP,Self-Driving Database Platform是DBAdvisor最核心的组件,其能够帮助阿里经济体的数据库每天节省大约27TB的存储空间。

image.png

云上数据安全

云上的数据库安全非常重要,目前阿里云已经拥有标准的数据库安全体系。而在未来,开发者也需要考虑更多的安全因素,比如日志是否不可篡改、数据库内核是否可以全程加密等。在云上数据库安全方面,阿里云在全球首先实现了全加密数据库PostgreSQL版本,能够做到在任何情况下数据都不会泄漏。

image.png

数据传输云服务DTS

想要享受云数据库所带来的开发便利,那么数据从一端传输到另外一端的工具必不可少。阿里云提供了数据传输云服务DTS,它支持多种不同的数据源到异构数据库的实时同步,同时也可以支持一定程度的ETL,这样在数据传输的过程中,还可以到其他系统中进行消费。

image.png

阿里云数据库:数据上云高速公路

综合上述内容,阿里云数据库形成了一个从关系型数据库到分析型数据库,再到NoSQL数据库和工具的完美生态。

image.png

拥抱开放生态,携手客户与开发者共成长

阿里云希望并且欢迎和开发者共同成长,一起为社区做出贡献。AliSQL在开源领域获得了很多荣誉,阿里云DRDS也会在未来几个月内进行开源。阿里云希望和大家携手共建世界一流的分布式数据库系统。

image.png

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: