一、数据库发展阶段
1. 人工管理阶段
2. 文件系统阶段
随着大容量磁盘等辅助存储设备的出现,文件系统应运而生。文件系统的特点包括:
1)数据可以长期保留:程序可以通过文件名访问和读取数据,不必关心数据的物理位置。
2)数据不属于某个特定应用:应用程序和数据不再是直接的对应关系,可以重复使用,但不同的应用程序无法共享同一数据文件。
3)文件组织形式的多样化:包括索引文件、链接文件、Hash文件等,文件之间相互独立,数据间的联系需要通过程序构造。
4)缺点是数据冗余、数据不一致性、数据孤立。
3. 数据库系统阶段
数据库系统阶段是数据库技术发展的最高阶段,实现了有组织地、动态地存储大量关联数据,方便多用户访问。数据库系统的特点包括:
1)采用复杂的数据模型表示数据结构:数据模型描述数据本身的特点和数据之间的联系,数据不再面向单个应用,而是整个应用系统。
2)较高的数据独立性:数据库以更高级的组织形式存在,应用程序和数据库之间由DBMS负责数据的存取。
3)数据共享和交叉访问:不同应用程序可以直接操作这些数据,数据库对数据的完整性、唯一性、安全性有一套有效的管理手段。
近年来,数据库技术不断进步,出现了多种新型数据库系统,如分布式数据库GaussDB、关系数据库MySQL、列存数据库HBase、文档数据库MongoDB、键值数据库Redis、图数据库GES、时序数据库InfluxDB等。这些新型数据库系统针对不同的应用场景和数据类型进行了优化,提高了数据处理效率和性能。
而在当下云原生时代,任何软件系统拥有分布式能力成了标配。特别是在目前基础软件国产化的浪潮下,国产数据库百花齐放,分布式数据库大有弯道超车的趋势。
在云计算和大数据的推动下,分布式数据库技术因其在可扩展性、高可用性和容错性方面的优势,成为数据库技术发展的一个重要趋势。特别是在云原生时代,分布式数据库的弹性伸缩能力、跨地域数据复制和实时数据同步功能,使其成为构建高可用、高性能数据基础设施的理想选择。此外,在基础软件国产化的浪潮中,国产数据库百花齐放,分布式数据库展现出在特定技术领域实现弯道超车的巨大潜力。
二、分布式数据库技术介绍
1. 基本概念
分布式关系型数据库是指将关系型数据库的数据分布存储在多个物理节点上,通过网络进行通信和协调,共同对外提供数据库服务的系统。它继承了关系型数据库的数据一致性、完整性、事务性等优势,同时利用分布式系统的特性,实现了数据的水平扩展和负载均衡,提高了系统的整体性能和可用性。
分布式关系型数据库基于Shared-Nothing架构,同时支持x86和ARM计算架构,提供高吞吐、强一致性事务处理能力、金融级高可用能力、分布式高扩展能力、大数据高性能查询能力,应用于金融、电信、政府等行业关键核心系统。数据库的设计原则包括最高性能原则、最小迁移工作量原则、系统易于扩展扩容原则、最低成本原则。
分布式关系型数据库的特点包括:
1、数据分片:将大数据集分割成多个较小的子集,每个子集存储在不同的节点上,以实现数据的水平扩展。分片策略包括哈希分片和范围分片等。
2、数据复制:为了提高系统的可用性和容错性,对数据进行冗余存储。通过数据复制,即使某个节点发生故障,系统也能从其他节点恢复数据,保证服务的连续性。
3、一致性模型:在分布式系统中,由于网络延迟和节点故障等因素,数据在不同节点之间可能存在不一致性。因此,需要选择合适的一致性模型来平衡系统的可用性和一致性需求。常见的一致性模型包括强一致性、弱一致性和最终一致性等。
4、负载均衡:通过合理的负载均衡策略,将请求均匀分配到各个节点上,避免单点过载,提高系统的整体处理能力。
5、故障恢复:分布式系统需要具备自动检测和恢复故障的能力。当系统检测到节点故障时,应能够自动将故障节点的数据和服务迁移到其他健康节点上,确保服务的连续性。
2. 总体架构
分布式数据库是基于Shared-Nothing架构(又称为无共享架构),它是由众多拥有独立且互不共享的CPU、内存、存储等系统资源的逻辑节点组成。在系统架构中,业务数据被分散存储在多个计算节点上,数据查询任务被推送到数据所在位置就近执行,通过协调节点的协调,并行地完成大规模的数据处理工作,实现对数据处理的快速响应。总体架构如下:

图1 总体架构图
Shared-Nothing架构具备如下优点:
1、易于扩展的架构。
为BI和数据分析的高并发、大数据量计算提供高扩展能力。
并行处理机制。
2、内部处理自动化并行。
数据加载和访问方式与一般数据库相同。
数据分布在所有的并行节点上。
每个节点只处理其中一部分数据。
3、最优化的I/O处理。
所有的节点同时进行并行处理。
节点之间完全无共享,无I/O冲突。
4、增加节点实现性能扩展:增加节点可增加存储、查询和加载性能。
3. 功能架构
分布式数据库基于Shared-nothing架构,面向开放x86和ARM平台,数据跨所有节点均匀分布,所有节点以并行方式工作,提供标准SQL接口,支持SQL92,99,2003标准,支持JDBC/ODBC标准接口,提供多达2048个物理节点PB级数据存储分析的扩展能力。

图2 功能架构图
分布式数据库主要包含以下几个组件:
CN(Coordinator):协调节点组件,独立进程,SQL的统一入口,对外接收客户端SQL语句,生成分布式执行计划,下发计划片段到各执行节点,各执行节点返回执行结果到Coordinator,返回给客户端。主要职责是接收SQL请求,生成执行计划,汇聚最终结果。
DN(DataNode):执行节点组件,也称之为数据节点,独立进程,SQL执行计划的执行主体,并存放数据。
GTM(Global Transaction Manager):全局事务管理器,独立进程,主要是用于维护分布式系统中全局事务一致性。
CM(Cluster Manager):集群管理组件,由两部分组成,一个是CMServer,一个是CMAgent,每个主机节点部署一个CMAgent,CMServer和CMAgent均为独立进程,每个主机节点上部署一个CMAgent,CMAgent监控这个节点上的所有资源,包括监控网络状态,磁盘状态等硬件设备,以及CN节点,DN节点,GTM节点等软件设备的状态,CMAgent进程每隔一定时间向CMServer汇报集群各组件状态信息,CMServer根据CMAgent上报的状态信息判断集群资源是否发生故障,在集群发生故障时,能够根据故障类型作出相应的故障处理指令,保证集群自恢复。
OM(Operation Manager):安装部署运维,配置管理接口工具,独立进程。
4. 核心技术
并行加载
数据并行导入(加载)的核心思想是充分利用所有节点的计算能力和I/O能力以达到最大的导入速度,数据并行导入实现了对指定格式(支持CSV/TEXT/FIXED格式)的外部数据高速、并行入库。高速、并行入库是和传统的使用INSERT语句逐条插入的方式相比较,入库性能得到提升。
并行导入过程中,CN只负责任务的规划及下发,把数据导入的工作交给了DN,释放了CN的资源,使其有能力处理外部请求。各个DN都参与数据导入的工作,充分利用各个设备的计算能力及网络带宽,提高数据导入的整体性能。以Hash分布策略为例,在数据库中创建内表和外表,内表指定HASH分布列,外表指定数据源。启动导入数据后,根据外表指定的数据源将数据分割成固定大小的数据块,发给每个数据节点。各个数据节点并行地处理数据块,每解析出一条数据元组就根据其分布列计算出来的Hash值判断存储的物理位置。数据到达Hash所在的节点后写入对应的数据文件。通过GDS和CN/DN的交互配合,完成整个数据的高速并行加载。
分布式执行
分布式查询处理是分布式数据库中最核心的技术,关键在于尽量降低查询中节点之间的数据流动,以提升查询效率。Coordinator负责查询请求的解析、优化以及向DataNode进行任务下发。DataNode上运行Query Executer进程,基于本节点存储的数据执行任务。每个片段(Fragment)都是接收下级任务的数据输入,并向上级任务输出数据。是一个生产者—消费者的流水线工作模型。
自适应压缩
根据数据特征自适应地选择压缩算法,常见的压缩算法包括Delta Value Encoding ,Dictionary , RLE , Prefix Compression , LZ4 , ZLIB等。在特定场景下最多能达到10+倍压缩比。
自动故障检测
自动故障检测处理,使得运维更为方便和快捷。CM检测到节点故障时,首先尝试重新拉起节点服务,重新拉起节点失败后会做故障切换。每个节点上多个数据库实例,当发生故障切换时,负载均匀分摊到多个节点,保证集群性能下降最小。
扩容不中断业务
在线扩容的原理和本质是集群内众多本地表在不同NodeGroup之间的数据搬迁。对于每个扩容重分布的表而言,数据扩容可以分为三步:#1基线数据扩容重分布、#2增量数据重分布、#3表切换。其中第二步尤为关键,在这一步内,通过行级增量标记技术,来补偿在第一步基线数据重分布过程中来自业务的并发在线插入、删除和修改。通过引入Hash聚簇存储,可以进一步降低数据重分布过程中数据的扫描量和搬迁量,以及数据重建的规模,从而缩短重分布流程的整体时间,降低对用户在线业务影响的时间窗口,实现快速扩容。
负载均衡
负载均衡为多CN提供一个统一的入口,将客户端的请求均匀地分发给各个CN服务器,使系统整体负载均衡。负载均衡作为集群系统的一个重要组件,承担两个职责:
1、均衡各CN负载,充分利用多CN计算能力。
2、故障隔离,当CN故障后,负载均衡能感知故障,并自动停止向故障CN节点转发请求。具体的故障感知的时间取决于不同的负载均衡模式。
热补丁升级
热补丁可以在业务不中断的情况下加载补丁,在不影响业务的前提下,在线解决一部分数据库内核的紧急问题。热补丁基于发布的代码版本生成补丁文件,然后以模块的形式插入到数据库内核运行地址空间中,通过寻找热补丁目标函数的地址,并动态地、原子地替换入口地址,重定向函数代码段至补丁文件代码段达到修复线上系统缺陷的目的。
热补丁的制作通过修复特定缺陷函数,制作成模块,动态地加载到运行中的内核系统。热补丁找到目标函数,并在目标函数的入口处加入跳转指令,当目标函数被调用时,跳转到补丁区执行补丁函数。目标函数的替换和还原是原子地操作CPU寄存器,热补丁可以随时随地加载和卸载,线上系统无需中断,即随时可运行最新的代码
数据脱敏
三、数据库在数据流通中的作用
数据库技术在数据流通中的作用主要体现在以下几个方面:
1. 数据组织与管理
数据库通过结构化的方式存储数据,使得数据查询和处理变得更加高效和便捷,增强了数据的可访问性和可维护性。数据库管理系统(DBMS)提供的数据定义语言(DDL)允许用户创建、修改和删除数据库结构,如表、视图和索引,而数据操作语言(DML)则用于插入、查询、更新和删除数据。这些语言的标准化使得用户可以跨不同的数据库系统进行数据操作,极大地提高了数据管理的灵活性和效率。此外,数据库的规范化理论帮助设计高效的数据库模式,减少数据冗余,提高数据一致性。
2. 促进数据流通和利用
数据库在数据流通中起到了关键作用,通过提供高效的数据检索功能、保证数据的一致性和完整性、实现并发访问和安全控制等,使得用户能够快速访问所需数据并确保了数据的可靠性和安全性。数据库的备份和恢复功能也保障了数据的持久性和业务连续性。此外,数据库支持的数据共享和交叉访问功能,使得不同应用程序和用户能够访问和利用相同的数据集,促进了数据在不同业务流程和组织间的流通。
3. 数据一致性和完整性
数据库通过事务管理机制确保了事务的安全可靠执行。在多用户环境中,即使多个事务并发执行,数据库也能保持数据的一致性。数据库通过实施各种约束,如主键、外键、唯一性约束和检查约束,确保了数据的完整性。这些约束条件帮助维护数据的准确性和有效性,防止了数据异常和业务规则违反。
4. 并发访问和安全控制
在多用户环境中,数据库通过锁机制和隔离级别控制并发访问,确保数据的安全性和一致性。锁机制可以是行级锁、表级锁或更细粒度的锁,它们控制了对数据的并发访问,防止了数据竞争条件和不一致的更新。隔离级别定义了事务可以看到其他事务的哪些更改,从而控制了事务的可见性,确保了事务的一致性和隔离性。此外,数据库的安全控制功能,如用户认证、权限控制和审计日志,提供了数据访问的安全保障,确保了只有授权用户才能访问敏感数据,保护了数据的隐私和安全。
专家介绍
孙长森
华为技术有限公司数据领域资深专家,从事政务大数据、数据要素、数据空间、人工智能、智慧城市等方面的顶层规划、解决方案设计等相关工作,参与多项国家标准、地方标准的编写,熟悉“华为数据之道“方法论,并在多个领域落地。
关于“中国信息通信研究院”
关于“CAICT数据基础设施”



