DTCC 2022 已落下帷幕有些时日,回顾大会上的一些分享,尤其是头一天上午几大数据库厂商均在演讲一开始纷纷表达了对数据库发展趋势的看法。从各个厂商的观点来看,对数据库发展趋势基本属于是不谋而合,未来数据库的样子离不开以下这几个关键词:
- 分布式,未来数据库一定是以分布式数据库为主,单机数据库无法满足超大数据量超大并发的业务要求
- 云原生,未来数据库一定是云+数据库,即数据库的架构与云计算的能力相结合,计算存储分离独立变配
- 融合(一体化),未来数据库一定是一个融合型的数据库,包括软硬件的融合、AP/TP的融合、开源闭源的融合、多模存储的融合、流批一体的融合、湖仓一体的融合、集中式分布式一体的融合等
- 智能化,未来数据库一定能做到自监控、自诊断、自调优、自优化、自动故障处理、自动限流等能力。提升运维体验,挖掘数据价值,简单好用易用,支持AI for DB、DB for AI等能力,支持NL2SQL、SlowSQL检测、索引推荐等
- 极致性能,未来数据库的性能将会随着硬件和软件的改进越来越好,硬件层面如高性能GPU、FPGA计算芯片、高性能RDMA网络的出现、高IO吞吐量的SSD存储等,对数据库的计算引擎、网络通信层估算、存储结构设计带来了变化与思路,软件性能上面基于DPDK的通信网络技术、基于SPDK的高性能存储技术也逐步得到推广
- 平台化,未来数据库几乎都是基于云平台提供一站式全链路数据管理服务,管理多模态数据源,基于云平台软硬协同创新,提升性价比
下面我们来具体回顾一下达梦、腾讯、华为、阿里这几家对数据库未来的看法。
达梦-数据库的未来:融合、专精特新、智能化、极致性能
当下,数据库甚至整个软件领域最流行的两个技术架构相关的关键词就是“分布式”和“云原生”。这和我们当前云计算环境的普及密不可分,当然,如果还要加上一个关键词的话,我想可能就是Serverless。
那么除了这几个关键词之外,我们看到的一个数据库技术发展的重要趋势就是“融合”,从不同的角度我们都可以看到这一点。在软件和硬件一体化的角度,我们看到当下在国内数据库一体机的热度又开始增加,特别是基于国产软硬件平台的数据库一体机,非常契合当下党政、央企等用户的需要,这是软件和硬件的融合。
从业务类型的角度,我们可以看到,越来越多的数据库可以同时支持HTAP业务,一套系统能同时满足事务型业务系统和分析型业务系统的需求,这是事务处理和分析处理的融合。
从是否开源的角度看,国内部分数据库厂商没有采用开源的模式,同时也有越来越多的厂商采用了部分开源的方式来推出数据库产品,其做法通常是社区版全部开源,但是企业版独有的一些特性不开源,这是开源和闭源的融合。
从数据模型的角度看,有些数据库产品的存储引擎可以同时很好的支持多种数据模型,我们称之为“多模数据库”。目前,多模数据库的概念逐步深入人心,一套数据库产品同时支持多种数据存储模型,比如像图模型、关系模型、文档模型、键值模型、时序模型等等,从而用一套产品满足不同业务类型的需要。
另外,数据湖和数据仓库也在融合。不少人应该都听到过湖仓一体,它是一种将数据湖的灵活性和数据仓库的易用性、规范性、高性能结合起来的新型融合架构,也是数据库行业未来的发展趋势之一。
在数据计算方面,流批一体已经成为当下主流的选择,用一套引擎同时处理流式任务和批量任务,实现降本增效,这是流计算和批量计算的融合。
数据库产品之所以要在技术上进行各种各样的融合,在我看来,根本的目的就是尽可能用一套系统来满足用户的多样化需求,从而进一步降低用户的使用复杂度,降低运维成本。
我们观察到的数据库技术发展的第二个趋势可以概括为“专精特新”,毫无疑问,大型通用数据库仍然是数据库领域占据主导地位的数据库产品。但是,在一些特定的领域,由于传统关系型数据库无法很好的满足用户需要,涌现出来一批新兴的数据库产品,例如图数据库,它主要用于数据之间的关联性分析,由于数据在入库的时候就已经按照临界点、临界边的方式建立起了关联性,在做数据之间的关联性分析的时候,性能通常可以比关系数据库快一个到几个数量级,解决了关系数据库无法实现高效数据关联性分析的问题。
时序数据库,则专门用于存储和管理具有时间标签按照时间顺序变化的数据,主要用于管理物联网等各行业的监测设备所采用和产生的数据,这些数据的典型特点是产生频率快,一个监测点有可能1毫秒就产生一条数据,比如说汽车上的部分传感器就要在毫秒级时间内采集数据,第二个特点是监测点多且信息量大,一套实时监测系统有可能有上万甚至十万的监测点,监测点每秒甚至每毫秒都产生数据,每天产生几十GB乃至TB级的数据量,对数据存储空间和计算要求都很高。关系型数据库无法满足对时间序列数据库的高效存储和处理,这是时序数据库在当下非常流行的主要原因之一。
文档数据库则可以解决关系数据库强模式导致的灵活性不够的问题,文档数据库中每一个被存储的对象可以与任何一个其他对象的结构都不同。关系数据库是高度结构化的,而文档数据库允许创建许多不同类型的非结构化的或者是任意格式的字段。
此外,还有专门用于支持文本数据进行检索的数据库,解决关系数据库无法满足对所有列进行高性能文本内容检索的问题。
还有一些大家可能比较熟悉的针对极限性能场景的内存数据库,通用的KV型数据库,地理信息数据库以及面向AI领域的向量数据库等等。
他们的出现,都是为了解决关系数据库无法满足特定条件下特定领域的需求而研发出来的。通常情况下,这些专用数据库能够提供更佳的性能,从而降低运行成本。我们把这些数据库都统称为面向新兴业务场景的专精特新类型的数据库。
数据库领域第三个技术发展趋势就是智能化程度在不断的提升,需要说明的是尽管数据库的智能化程度在不断提升,但是我个人认为离AI原生的数据库还有很长的一段路要走,目前阶段还只能说是智能化程度在持续提升。在数据库内核中具体表现在6个方面。
第一个是自监控。自监控是智能化程度不断提升的基础,没有自动监控,就无法提升智能化的程度。
第二个是自诊断。自诊断是在自监控的基础上判断系统状态是否正常,是否有软件故障、硬件故障或者是负载过大的情况出现,为自调优、自动故障处理、自动限流等功能奠定基础。
第三个是自调优。自调优是在自监控和自诊断的基础上综合系统负载的情况,自动调整参数,自动进行自然合理的分配的一种优化方式。
第四个是自优化。自优化主要是指数据库系统自动对用户发起的请求生成系统所认为的最佳执行计划的一个过程。对于数据库来说,主要体现在优化器的执行计划的选择上。
第五个是自动故障处理。自动故障处理是在自诊断的基础上选择合适的故障处理策略,使得数据库系统在发生故障的情况下对用户的影响降到最低。
最后一个是自动限流。自动限流是数据库系统判断当前系统负载超出承受能力时自动限制用户请求数量的一种保护措施。通常来说,自动限流是一种多层级的保护机制,比如说,在驱动程序层面进行限流,在消息发送层面进行限流,在任务队列层面进行限流等等。
那么所有这些智能化程度提升措施的最终目标同样还是降低数据库系统的使用复杂度,降低运维成本。
数据库领域第4个技术发展趋势是追求极致性能。可以这么说,性能持续提升是任何数据库都在始终追求的目标。数据库系统追求极致性能的手段主要通过硬件和软件两个层面的改进来实现。
在硬件层面,由于近些年出现了不少新型硬件,数据库产品也都在尝试和新型硬件进行适配和优化,期望通过合理利用新型硬件特性实现性能的大幅提升。典型的新型硬件包括已经普及了的具有高的IO吞吐量特性的SSD存储,它的出现引发了数据库存储结构设计的变化。支持字节寻址的高性能持久化内存PMEM,这种持久化内存为数据库故障恢复,缓存结构等特性的重新设计带来了新的可行性。高性能GPU、FPGA计算芯片的出现,为新的计算引擎的研发提供了新的思路。高性能RDMA网络的出现,使得分布式环境下网络通信层面的估算需要重新考虑和计算。
在软件性能提升方面,向量计算、分布式并行计算已经成了标配。基于DPDK的高性能通信网络技术进一步降低了通信代价,也会引发分布式环境通信代价计算的改变。基于SPDK的高性能存储技术也逐步得到推广,IO代价进一步降低,与内存的速度差距在逐步缩小,导致数据库进行IO成本估算时也需要重新考虑。当然,优化器的改进是数据库性能提升的永久课题,各大数据库厂商也一直在持续不断的完善,无论是软件层面还是硬件层面带来的性能提升,就本质上来说,都是为了降低数据库的运行成本,同时给用户带来更好的运行体验。
通过前面的介绍,我们可以看到,数据库技术发展的最终目标就是持续不断降低运维成本、降低运行成本,最终降低用户的数据库总体拥有成本。实际上,不止是数据库,任何其他行业技术的发展最根本的目标都是降低用户的总体拥有成本。而在数据库产品的发展方向来说,虽然数据库在专精特新领域近年来的发展特别快,但是大型通用关系型数据库在资源受限、混合事务模型、业务复杂不易拆分的场景下,仍然拥有明显的优势,短期内难以取代,并且在相当长一段时间内,在市场上仍将占据主导地位。与此同时,某一类型数据库完全垄断市场的局面很难出现,内存数据库、图数据库、文档数据库、时序数据库等专精特新数据库也会占有一席之地,并且随着应用和技术的不断发展未来甚至有可能会出现更多的专精特新类型的数据库。我们相信在数据库发展过程中,大型通用数据库肯定会不断的吸收这些新型数据库的技术特点,把自己打造的更加通用,适用面更广。而专精特新数据库只会针对特定场景更加追求极至性能,他们之间可以说是一种互补的关系,互相之间难以完全替代。
腾讯-数据库的未来:云+数据库,自研+融合
1.0的云数据库发展初期,可以理解为将传统的数据库的部署搬到云上,对于用户来说整体的安装部署流程相对于传统的软件部署模式具有颠覆式的变革。
1.0时代只是数据库加上云计算的便捷,但数据库的使用模式并没有本质的变化。2.0讲的都是云原生数据库,真正通过 云+数据库 的一个变化,从数据库+云 走到 云+数据库,真正通过云计算的技术对于数据库本质的技术架构的提升,典型的数据库如这样存算分离、或者是share storage的架构,如腾讯tdsql-c的数据库。实现存储和计算解耦,称之为日志级的数据库,用redo的方式在存储层面做回放,对我们来说是运维便捷性的大踏步的提升。
云数据库下一代的核心趋势就是自研+融合。真正从业务场景去出发自研一些东西。融合就是公有云私有云的融合、AP和TP的融合、软件和硬件的融合等。
华为-数据库的未来:分布式,云原生
数据库的未来,几个方面:
1 中国整个政企的数据化转型过程,与数据库的发展是紧密结合在一起的。数字化转型经过了一段时间的探索和摸索, 其中各个产品的供应商或是客户也好,已经积累了一些经验,应用和IT架构在持续不断的迭代,相互促进,使得业务和基础设施在相互成长,带来了互相之间创新的动力。我们看到传统的IT基础设施实际上从最初的我们去买一个软件来on premise的方式逐步走向云化,包括cloud-base(放到云里面去),以及我们现在的cloud-native(以云原生的方式来打造各种应用也好、数据库也好),这个实际上已经成为一种共识。
从数据库的角度来说,我们认为未来的数据库一定是走向分布式的以及和云的基础的能力结合的一种方式,这将是数据库市场的未来。我们认为分布式数据库上面的一些技术会整个引领数据库技术发展的趋势,从Garter的预测也是一样的,从传统的单机主备逐步的走向分布式数据库并且和云的一些技术结合,包括弹性伸缩、自治以及云的一些技术的结合,和云的存储的结合。另外就是我们要做一些快速的部署,和容器的弹性部署能力结合在一起。
2 在整个云原生里面,云原生数据库将会成为云上数据库使用的标准范式。在云化的演进过程中,数据库大体经过三个阶段。第1就是我们传统讲的线下部署,第2就是云化部署,我们把数据库放到云的基础设施里面去,第3个就是云原生的一个阶段。在不同阶段里面,他们所催生出来的关键技术是有所不同的。在云化的部署阶段,基本上是延续了传统集中式和分布式数据库的技术特点,本质上来说是将原来服务器上的部署搬到了云主机上来,它其实并没有针对云原生做深度的开发,更多的是在管理界面上做了一些工作。这里面我们重点要强调的是云原生的数据库是和云的架构来结合构建的一个数据库,这种架构上需要有更多的扩展性、多租户以及分布式部署的能力。在很长的时间内,这几种方式可能会并存,但随着数据库和云技术的不断发展,云原生数据库的占比会越来越大。
从行业的角度来看,国产的时机已经到来。从最初的我们知道数据库的三个巨头(Sybase、DB2、Oracle),现在国内谈到自主可控,一个是去O的问题,第二个是开源的问题。现在的国产数据库有200多家,这说明国产化的时代已经到来了。
从国产分布式数据库实践角度我们谈一谈分布式数据库到底是一种什么方式。最早我们谈的数据库基本是集中式数据库,包括RAC这种架构它本身也是属于集中式数据库的一个范畴。然后在这过程中数据库发展的时候我们想到集中式数据库怎么创新,其中最典型的一个方式就是通过应用的分库分表来解决数据库的扩展性问题,下面都是一个个单机数据库,这个实际上是应用和数据库结合的方式来解决数据分布的问题,这是一个非常正常的中间阶段,包括现在有的企业认为我们可不可以通过应用的这种分布式的方式和单机数据库的结合来解决企业的问题,我认为这也是一种可行的尝试,只不过是把一些复杂性放到应用上面去解决。
在这个发展过程中,有一种方案是能不能把应用做的与数据相关的东西做成一个中间件,用中间件的方式来避免很多逻辑分散到应用上面去,这就是我们提到的分布式中间件。这种方式在发展过程中还是做了很多的工作的。这里面核心的创新点就是“中间件”。
从我们个人角度认为,真正的要谈分布式数据库,还有一种方式就是有没有可能基于分布式理论实现原生分布式数据库,前面毕竟是一种过度型的产品。基于分布式理论的数据库,首先我们理解它要有分布式事务,怎么从分布式事务的场景去解决整个分布式数据库本质的问题,这是最核心的内容。第二个是怎么解决分布式事务的性能问题,以及空间放大和抖动的问题。
当然我们在讲分布式数据库还有一种方式就是有没有可能把数据和分布式存储结合起来。在分布式存储之上去构建一个sql接口,然后通过sql接口来支持一些简单的应用。这种方式本质的特点是以一种分布式存储+一些sql的能力。这种方式的特点是数据的分片能力比较强,但从数据库引擎的角度来讲不够完善。
阿里-数据库的未来:云原生化、平台化、一体化、智能化
数据库是全球企业级软件市场的第一类别,整个全球市场份额在700多亿美元,中国的市场份额只有5.8%,数据显示还是有非常大的空间的。国家国务院十四五数字经济发展规划中也提出来在接下来的一段时间内数字经济包括大数据数据库还是会高速的增长。
从业界的趋势来看数据的领域会有这么几个趋势,一个是规模会爆炸式的增长,数据格式会越来越多样化,尤其是非结构化数据的占比会越来越高,数据处理的实时化和智能化会越来越重要。
数据库从历史来看就是一个上下迭代牵引,随着应用的不断变化和基础设施的演进,数据库系统也发生了翻天覆地的变化。从早期的国防科学研究、大型机、大型商业处理、小型机,再到今天的云边端一体的应用场景、云+端的基础设施,催生了数据库从关系型数据库到关系型数仓,开源数据库,再到nosql,再到今天的云原生数据库整个一个发展脉络。
即使到今天数据管理还面临巨大的挑战,主要是面临数据处理、安全和效率之间的矛盾,数据价值的实时挖掘有待提升,具体来讲分为这么几个类别:
- 研发效率
- 数据主权与安全
- 数据孤岛
- 价值挖掘
- 部署与运维
从这些维度上还是面临着一系列的挑战,比如说高并发、高频交易、高可用、数据安全等等这些挑战。
从架构的角度看一下数据库发展的历史。传统数据库一般是单机的数据库, DB实际上是CPU+内存,底下挂一个本地的存储,它的特点就是部署简单,挑战就是扩展性不足,当你有更多的数据量以及更高的并发的时候或者是有高可用诉求的时候这个单节点是不能满足要求的。所以一般来讲它要做主备的数据实时同步,主从一致来保证业务的高可用。这个能解决高可用的问题,但无法解决可扩展性的问题。而且高可用在这种主备架构下在实际的应用过程中也存在非常多的挑战。
那后面业界为了解决这个问题衍生出来了2种不同的架构。一个是分布式数据库,也就是从架构的角度share nothing,分库分表,支持分布式事务,分布式查询的能力。理论上来讲它具备非常好的水平扩展能力,理论上可以无限水平扩展,但在实际部署过程中分布式数据库也是面临着诸多的挑战,实践中我们看到业界所有的分布式数据库当它的跨分片的分布式事务distribute commit比例如果达到一定的比例,那么整个数据库的性能会受到非常大的挑战,不管是tps还是qps。所以一般来讲分布式数据库部署的时候需要理解业务然后做比较完美的分片,最好大部分的事务能在一个shard里面处理,尽量避免跨shard的分布式事务。所以它应用起来还是有诸多的挑战,并且它难以保证对单机数据库生态非常好的兼容。
那另外一套架构是基于共享存储share storage以及共享状态share everything的云原生数据库的架构,它的核心思路是我利用分布式的技术,但是我将分布式技术的复杂性对上层的应用进行屏蔽,上层应用看到就是一个单机数据库一样,底下是一个分布式的共享存储,利用存储计算分离的能力,来做一个分布式共享的一个计算池,这样可以具备非常好的弹性,按需按量使用的能力,然后计算节点之间共享状态。它的优点非常明显,非常利于实现事务的一致性,保证与单机数据库的兼容性,但也是它的局限性,一般只能做到20个节点左右。但在实际的场景中,这种共享存储架构基本上可以满足90%甚至更多场景的需求,但对那种超高并发超大量数据可能还是需要一个share nothing的架构。
那我们怎么解决这个问题,这也是PolarDB正在做的,就是将云原生分布式一体化,实现集中分布一体化的能力,也就是上面有一层share nothing的分库分表,支持分布式事务,分布式查询,底下每个shard用一个云原生的架构来实现,这样每个shard的处理能力大大提升,这样对同样的数据量同样的并发所需要的分片的数量会大幅降低,同时也会带来分布式事务比例的降低,同时需要的话我还可以做分片。从计算模型上来讲,它是一个将传统的MPP数据库和BSP模型可以结合起来可以支持离在线一体化的能力。
再看业界的变化,Oracle提出融合数据库,基于多模、多租户、混合负载和智能化,提供敏捷、便捷的一站式数据服务。
数据库向云原生一站式数据管理与服务发展,包括:
- 云原生化
- 平台化
- 一体化
- 智能化