课题1-未来数据库管理技术发展方向
课题1:未来数据库管理技术发展方向
目录
[TOC]
介绍
未来数据库系统的新趋势[^0]:
- 云原生数据库;
- 端边云协同数据库;
- 分布式数据库;
- AI原生数据库;
- 新硬件驱动;
- 智能化数据管理和运维;
- 多模态数据管理;
- 数据安全隐私计算;
- ……
根据观察,许多现代数据库的设计都是多个趋势同时出现,这样做除了提高自家数据库产品的竞争力外,也能适应愈来愈多变的市场需求;
这样设计的目的是提升性能、扩展性、安全性和智能化管理能力。这种多重趋势的融合使数据库能够更好地应对当前及未来的复杂数据环境和多样化需求。
分布式数据库
概念
分布式数据库是用计算机网络将物理上分散的多个数据库单元连接起来组成的一个逻辑上统一的数据库[^1];
- 每个被连接起来的数据库单元称为站点或节点;
- 分布式数据库有一个统一的数据库管理系统来进行管理,称为分布式数据库管理系统。
与分布式相对而言的概念是单机式数据库,单机数据库指的是数据存储和管理完全依赖于一台服务器(单一节点)的数据库系统,分布式和区块链中的「去中心化」概念比较接近;
许多传统的数据库(例如MySQL,PostgreSQL)采用的就是单机式数据库,架构简单,适用于小规模应用,但是对于海量数据和高并发请求,容易遇到性能瓶颈和单点故障;
因此许多新诞生的数据库(例如华为GaussDB,阿里OceanBase),都往往选择了分布式架构的设计模式,也包括某些传统的数据库也开始向分布式转型;
也就是说,其实分布式架构是数据库解决高数据量和高并发的一种办法,在设计上还是有关系型和NoSQL之分的
注意,分布式不等于集群;
- 分布式:多个独立的计算节点(服务器)协作完成任务,这些节点通过网络相互通信,但对于用户来说,它们表现为一个单一的系统。
- 集群:一组协同工作的计算机(节点),它们紧密耦合来完成某些特定任务。集群中的节点通常位于同一个数据中心;
- 分布式更关注任务和数据的分布,节点相互独立,需要协调一致性和容错性,而集群系统更关注的是任务的协同处理和负载均衡,节点间通常同构,更强调同步和高效协作。
(提问:分布式和集群哪个更复杂?分布式要主要解决数据一致性问题,分布式锁,网络延迟问题,而集群主要考虑负载均衡)
(提问:为什么说分布式和集群往往同时出现?解决复杂计算和大规模数据处理场景下具有互补性…)

特点
- 物理分布性:
- 数据存储在多个节点上;
- 节点可能分布在不同的服务器、数据中心,甚至跨越不同的地理区域;
- 逻辑整体性
- 有一个统一的中心协调事务的分配与管理;
- 节点间彼此通信,保证数据和事务的一致性;
- 站点自治性
- 各个节点相对独立,处理自己的计算事务,存储事务
- 数据分布透明性
- 用户不需要知道数据存储在什么地方,数据库系统会自动管理这些细节。
- 用户可以像操作单一数据库一样访问和使用数据。
- 按既定协议达成共识的机制[^2]
- 共识机制能在数据一致性、故障容忍、网络分区、顺序一致等关键问题上确保节点之间协调工作;
- 常见的协议有Paxos协议,raft协议,ZAB协议
- 适当的数据冗余度
- 存在数据复制和冗余机制;
- 在部分节点失效时仍然保持系统的正常运行,有一定的抗风险能力和容错性;
- 如果某个节点发生故障,系统可以切换到其他节点继续工作,确保数据的持久性和可访问性。
工作原理
CAP定理
在理论计算机科学中,CAP定理[^3]指出对于一个分布式计算系统来说,不可能同时满足以下三点:
- 一致性(Consistency):所有节点访问同一份最新的数据副本;
- 可用性(Availability):每次请求都能获取到非错的响应;
- 分区容错性(Partition tolerance):以实际效果而言,分区相当于对通信的时限要求,即系统能够容忍网络分区的发生。(注:网络分区指的是系统中的节点因为网络故障而无法通信,分布式系统必须继续运行,即便部分节点之间不能正常通信。)
分布式数据库在设计上必须做出权衡,一般会在读写数据库上采取不同的设计策略,来满足各种场景的需求,一般分为CP系统和AP系统;
(提问:在互联网领域的绝大多数的场景中,最广泛的设计是什么:都需要牺牲强一致性来换取系统的高可用性,系统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。)
数据操作
分布式数据库的核心原理包括数据分片、数据复制和数据一致性保证[^4]。
数据分片
数据分片是将数据分散到多个数据库节点上进行存储和处理的过程。通过数据分片,可以将大量的数据分散到不同的节点上,从而提高系统的可扩展性和性能。数据分片的关键在于如何合理地将数据划分为不同的片段,并确定每个片段的存储位置。
数据复制
数据复制是在多个数据库节点上创建数据副本的过程。通过数据复制,可以提高系统的可用性和容错性。当某个节点出现故障时,其他节点可以接管其任务,保证系统的正常运行。数据复制的关键在于如何保证数据的一致性和同步性。
数据一致性保证
数据一致性保证是分布式数据库系统的核心问题之一。由于多个节点之间可能存在数据复制和更新操作,因此需要确保不同节点上的数据保持一致性。常用的数据一致性保证方法包括两阶段提交、三阶段提交和分布式事务等。
分布式锁
分布式还有一个确保共享的重要机制:分布式锁[^5];
为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用并发处理相关的功能进行互斥控制。
但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的应用并不能提供分布式锁的能力。
分布式锁正是这种跨机器的互斥机制来控制共享资源的访问,目前有三种实现方式:
- 基于数据库
- 基于缓存
- 基于Zookeeper
优点
- 随时能针对各区域的用户做调整:例如一个全球电商平台可以将用户的购物数据存储在离用户最近的数据中心,从而减少请求的延迟。
- 资料共享和分布式控制 :去中心化保证一个节点故障不会导致整个系统不可用,其他节点依然可以继续工作,增强了系统的容错能力和弹性。
- 增加处理绩效,可作平行处理:在大数据分析场景下,分布式数据库可以将大规模的数据集分片,分配到不同的节点进行并行计算,加快数据处理速度。
- 系统管理费用较低:这是相对于中心化的传统数据库而言的。提升存储能力和计算能力就要更高级的服务器配置,分布式系统允许通过增加便宜的节点来提高存储和计算能力
- 质量维持容易:在数据备份和恢复方面,如果某个节点的数据丢失或损坏,其他节点的备份副本可以帮助恢复,降低数据丢失风险。
- 增加结点可以轻易实现拓展:这种水平拓展有利于业务的拓展;
缺点
- 重复存储资料很花时间:写入操作需要将数据复制到多个节点,在所有节点完成写入之前,操作可能无法确认成功,这会增加操作的延迟。
- 资料处理与管理上具复杂度,为保证共识的基础上,性能可能会有一定损耗:例如在Raft协议中,写操作必须等待大多数节点确认,才能算作成功提交,这可能导致响应时间增加,尤其是在节点分布较广的情况下。
- 资料的保密性与安全性受到威胁:分布式数据库中的数据被存储在多个节点和地理位置,这意味着安全性问题变得更加复杂。需要考虑如何在不同节点之间安全地传输数据、如何确保不同节点的数据访问权限不被滥用。此外,更多的节点也意味着更多的潜在攻击面。
应用场景
(此处需要图片)
- 大规模网站和应用:如社交网络、电子商务网站,它们需要处理大量的并发用户请求和数据存储。
- 全球化业务:需要在多个地理位置提供快速的本地化数据访问。
- 大数据分析:分布式数据库可以作为大数据平台的数据存储后端,支持分布式计算框架(如Hadoop和Spark)进行高效的数据分析。
云原生数据库
概念
云原生数据库是通过云计算平台构建和访问的数据库服务[^6]。
- 它的许多功能与传统数据库相同,但增加了云计算的灵活性。
- 用户在云基础架构上安装软件来实施该数据库。
云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需求提供给计算机各种终端和其他设备,使用服务商提供的电脑基建作计算和资源,其三大服务模型包括:基础设施即服务(IaaS),平台即服务(Pass),软件即服务(Saas)[^7];
简单理解云计算:用户透过浏览器、桌面应用程序或是移动应用程序来访问云的服务。
上云意味着用户无需管理底层硬件和设施,也能做到存储,访问和管理数据,因此相较于其他的NewSQL,云数据库节省了硬件成本,也可以适应如今的企业海量的数据管理和动态的业务需求;

特点
- 按需自助服务:用户可以选择多种方式管理数据库(自托管云,自动化云,托管云,自治云)
- 广泛的网络访问:云计算服务可以通过各种设备(如电脑、手机、平板等)和网络轻松访问。
- 资源池化:云计算将底层资源(如服务器、存储、网络带宽等)进行集中管理,按需动态分配给多个用户,资源是共享的,但对每个用户是隔离的。
- 快速弹性:云计算可以根据需求快速扩展或缩减资源,无论是增加计算能力还是存储空间。
- 按使用付费:用户根据实际使用的资源量(如处理能力、存储空间、网络带宽等)进行付费,不使用时无需付费,避免了资源的浪费。
工作原理
云数据库使用混合云概念收集、交付、复制组织的所有数据并将其推送到边缘。用户不再需要部署依赖的中间件来将数据库请求传递到世界任意位置。他们可以将应用程序直接连接到数据库。
混合数据库创建分布式混合数据云,以提高性能、覆盖范围、正常运行时间、移动性和节省成本,以便组织能够:
- 从小处着手,发展壮大
- 按需弹性扩展
- 跨多个数据中心的集群
- 独立管理云,或让提供商为他们管理云
- 混合和匹配云提供商以优化地理覆盖范围、服务级别协议 (SLA)、定价和法规需求。
例如,金融组织正在采用混合概念,将数据库作为所有不同数据源的核心数据库,然后以 JSON 格式提供这些金融数据。然后,这些数据作为服务分发到数据库,并复制到世界各地的地理区域。如果新加坡的客户必须等待 4 秒以上才能从新泽西州的数据库检索其移动应用程序数据,则该客户不太可能再次使用该应用程序。数据库即服务 (DBaaS) 可以立即进行复制和分发,并在全球范围内提供近乎实时的数据访问。
优点
- 基于标准,易于访问:用户几乎可以使用提供商的 API 或 Web 界面从任何地方访问云数据库,为实现出色的互操作性和工作负载可移植性,云原生服务通常基于开源和标准技术构建而成,这有助于降低供应商依赖,提高可移植性[^8]。
- 可扩展性:云数据库可以在运行时扩展其存储容量,以适应不断变化的需求。组织只需为其使用的内容付费。
- 增强敏捷性和创新:用户可以非常快速地创建和停止云数据库,轻松、快捷地测试、验证和实施新的业务构想。当企业决定停止实施某个项目,则可以直接放弃项目(及其数据库),然后继续下一个创新。
- 加快上市速度:将新产品添加到开发队列后,企业无需购买硬件,等待发货,进行安装和设置网络,只需几分钟即可访问数据库。
- 降低风险:云数据库(尤其是 DBaaS 模式)能够从多个方面降低整个企业的风险。云技术服务提供商可以通过自动化方法来实施安全性优秀实践和特性,降低人为错误几率 — 这是软件停机的主要原因。同时,自动化的高可用性和服务水平协议 (SLA) 可以减少甚至彻底消除因停机而造成收入损失。最后,在实施项目时,由于云技术解决方案是一个无限、实时的基础设施和服务池,容量预测将不再是难题。
- 降低成本:得益于云数据库按使用付费的订阅模式和动态扩展能力,最终用户可以先行少量供应,满足稳定状态下的需求,然后在繁忙时段扩展,满足峰值需求,并在需求恢复到稳定状态时再缩减供应。这意味着,与本地部署相比,云数据库可以显著降低成本。采用本地部署时,即便每个季度的峰值需求只持续几天,企业也需要购买足够强大的物理服务器。而采用云数据库,企业无需如此,甚至可以在不需要时关闭服务,利用少量基础设施投资实施全球计划,降低成本。最后,在很多情况下,云技术软件自动化可以代替成本高昂的数据库管理员 (DBA),消除昂贵的内部资源需求,降低运营支出[^8]。
缺点
- 数据库迁移场景多变复杂:将现有的本地数据库迁移到云端可能涉及大量的工作,包括数据结构调整、应用改动以及确保数据的完整性和安全性;
- 用户对数据库控制权有限:用户无法像在本地数据库那样对硬件、操作系统和数据库进行完全的自定义配置。这可能限制特定应用的性能优化。
- 网络依赖性:云数据库完全依赖于网络连接,对于实时性要求较高的应用,可能会产生延迟问题。
- 成本难以预测:对于需要频繁读写大规模数据的应用,成本可能比预期高出很多。
应用场景
(可补充)
- 通信物联网
- 金融与电子商务
- 大数据挖掘,高性能计算
智能数据库
概念
从构建一个高效、高可靠、 高可用、自适应性强的数据库系统角度出发,从下 面八个方面来总结基于机器学习的数据库技术[^9]

智能数据库利用机器学习来处理数据索引、查询优化、模式检测以及自动化调优等任务,从而减轻人工操作负担,并提高系统的整体效率和性能。
前景展望
目前没有太好的商业级的智能数据库,以期解决数据库设计可能存在的问题;
市场上大部分数据库产品,内置的Copilot是一个组件,在数据库运维方面能做到高效的自动化,在大数据挖掘方面也有不错的发挥;
我们相信随着机器学习技术的不断发展,未来我们将看到更多的数据库系统利用机器学习技术实现更高的智能化和自动化。
一些NoSQL
Redis:键值对数据库,基于内存
内存数据库是指一种将全部内容存放在内存中,而非传统数据库那样存放在外部存储器中的数据库。
- 内存数据库指的是所有的数据访问控制都在内存中进行,这是与磁盘数据库相对而言的,磁盘数据库虽然也有一定的缓存机制,但都不能避免从外设到内存的交换,而这种交换过程对性能的损耗是致命的。
- 由于内存的读写速度极快(双通道DDR3-1333可以达到9300 MB/s,一般磁盘约150 MB/s),随机访问时间更是可以纳秒计,所以这种数据库的读写性能很高,主要用在对性能要求极高的环境中,但是在服务器关闭后会立刻丢失全部储存的数据。
- 常见的例子有redis、eXtremeDB、FastDB、SQLite、Microsoft SQL Server Compact等,下均以redis进行举例[^10];
优点[^11]
- 响应迅速:Redis 响应非常快,每秒可以执行大约 110 000 个写入操作,或者 81 000 个读操作,其速度远超数据库。如果存入一些常用的数据,就能有效提高系统的性能。
- 支持多种数类型:它们是字符串、哈希结构、列表、集合、可排序集合和基数。比如对于字符串可以存入一些 Java 基础数据类型,哈希可以存储对象,列表可以存储 List 对象等。
- 操作都是原子的:所有 Redis 的操作都是原子的,从而确保当两个客户同时访问 Redis 服务器时,得到的是更新后的值(最新值)。在需要高并发的场合可以考虑使用 Redis 的事务,处理一些需要锁的业务。
- 高性能:Redis是一个基于内存的数据库,数据存储在RAM中,因此具有非常快的读写速度。它采用了高效的数据结构和算法,能够在微秒级别完成大量的操作,使其成为处理高并发场景的理想选择。
- 简单易用:Redis提供了简洁、直观的命令行接口和易于使用的API,使开发人员可以轻松地进行数据存储和检索。其支持丰富的数据类型,如字符串、哈希表、列表、集合和有序集合,可以满足不同场景下的需求。
- 数据持久化:Redis支持数据的持久化存储,可以将内存中的数据保存到磁盘上,以防止数据丢失。它提供了两种持久化方式:快照和日志追加,用户可以根据实际需求选择适合的方式。
- 高可用性:Redis支持主从复制和Sentinel机制,可以实现数据的自动备份和故障转移。主从复制可以将数据从主节点复制到多个从节点,提高读取性能和数据冗余;Sentinel机制可以监控主节点的状态,并在主节点故障时自动切换到从节点,确保系统的高可用性;
缺点
- 内存限制:由于Redis的数据存储在内存中,因此受到可用内存大小的限制。当数据量超过内存容量时,性能会受到影响,甚至导致系统崩溃。虽然Redis提供了数据淘汰策略和内存优化选项,但仍需要合理规划和管理内存资源。
- 单线程模型:Redis采用单线程模型来处理客户端请求,这意味着在高并发场景下,性能可能受到限制。虽然Redis通过异步操作和事件驱动的方式提高了并发处理能力,但在某些特定场景下,单线程模型可能成为瓶颈。
- 缺乏复杂查询支持:Redis主要用于键值对存储和简单的数据结构操作,并不支持复杂的查询操作。相比之下,关系型数据库具有更强大的查询语言和查询优化。
GUI
下图可以很明显的看到键值对存储,基于内存的特征:


支持多种数据结构:

内置的AI和大数据可视化:



应用场景
Redis适合的场景主要局限在较小数据量的高性能操作和运算上,在频繁读写的场景下表现较好;
- 缓存应用;
- 会话共享等分布式场景;
- 文章阅读量,点赞数等计数器;
- 消息队列;

MongoDB:基于文档
MongoDB是一种面向文档的数据库管理系统,用C++等语言撰写而成,介于关系型数据库和非关系型数据库之间,以解决应用程序开发社区中的大量现实问题[^12]。
特点
- 高性能:MongoDB提供高性能的数据持久性。对嵌入式数据模型的支持减少了数据库系统上的IO活动。索引支持更快的查询,并且包含嵌入式文档和数组的键。
- 高可用性:MongoDB的复制工具称为副本集(reolica set),它包含提供自动故障转移和数据冗余。
- 高可用性:MongoDB提供了水平可扩展性作为其核心功能的一部分。分片将数据分布在一组集群的机器上。(海量数据存储、服务能力水平扩展)
- 丰富的查询支持:MongoDB支持丰富的查询语言,支持读写(CRUD)操作、比如数据聚合、文本搜索、地理空间查询等,MongoDB自己号称「任何结构的数据均可查询」,因为它们基于文档的特性;
优缺点
MongoDB的最小存储单位是文档对象,相当于MySQL中的行,数据以BSON文档的形式存储在磁盘上。BSON采用了类似于C语言结构体的名称、支持内嵌的文档对象和数组对象,具有轻量级、可遍历性、高效性三大特点,可以有效描述非结构化数据和结构化数据,灵活性高,但空间利用率不是很理想。
GUI
支持对json或csv文件的导入,存入数据库;

下图是内置的数据分析组件:

应用场景
- 数据量大
- 读写操作频繁
- 数据价值较低,对事务要求不高
(比如:游戏内的装备信息,物流中的订单,物联网中的设备信息,直播中的用户信息,点赞互动)

参考文献
[^0]: 战略研讨-《“十四五”数据库发展趋势与挑战》报告正式发布 (ccf.org.cn)
[^1]: https://zh.wikipedia.org/wiki/%E5%88%86%E5%B8%83%E5%BC%8F%E6%95%B0%E6%8D%AE%E5%BA%93
[^2]: 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结_分布式算法有几种 paxos、raft、zab-CSDN博客
[^3]: https://zh.wikipedia.org/wiki/CAP%E5%AE%9A%E7%90%86
[^4]: 深入剖析分布式数据库:原理、架构与实践 (baidu.com)
[^5]: 什么是分布式锁?实现分布式锁的三种方式 - 刘清政 - 博客园 (cnblogs.com)
[^6]: 什么是云数据库?| IBM
[^7]: https://zh.wikipedia.org/wiki/%E9%9B%B2%E7%AB%AF%E9%81%8B%E7%AE%97
[^8]: 什么是云数据库? | Oracle 中国
[^9]: Microsoft Word - 2019-4-23-07898-确认稿.docx (tsinghua.edu.cn)
[^10]: https://blog.csdn.net/giantleech/article/details/
[^11]: https://zhuanlan.zhihu.com/p/632293767
[^12]: https://zh.m.wikipedia.org/wiki/MongoDB