并行数据库

关注
义项:数据库类型
并行数据库

并行数据库是借助多个处理器、多个磁盘和高速互连网络,把数据装载、索引建立、查询执行等操作并行化,以提升整体处理能力的数据库系统。它通常建立在大规模并行处理(MPP)与集群并行计算环境之上,通过增加节点来扩展处理能力和存储容量,并以此支撑海量数据下的联机分析与高并发事务处理。

百科 图文
目录
  1. 定义
  2. 原理
  3. 发展历程
  4. 应用
  5. 局限
  6. 参见

定义

并行数据库指通过并行使用多个中央处理器和磁盘,把数据装载、索引建立、查询执行等操作并行化,从而提升性能的数据库系统[1]。它的核心特征在于并行与分布,通常在大规模并行处理(MPP)和集群并行计算环境之上构建,属于一类高性能数据库系统[2]。

并行数据库系统的目标可以概括为高性能与高可用性两个方面:一方面让多个处理节点协同完成数据库任务,另一方面通过节点冗余在个别节点失效时仍能继续提供服务[3]。从性能度量的角度看,并行既能提高单位时间内完成的任务数量,也能缩短单个大任务的完成时间[4]。

原理

并行数据库并行性的发挥依赖于底层并行计算机的体系结构。按照处理器之间对主存和磁盘的共享程度,通常划分为共享内存、共享磁盘和无共享 3 类[5]。共享内存结构中所有处理器通过高速互连访问同一份全局内存和全部磁盘,处理器间通信开销小,但互连带宽容易成为瓶颈,可支持的处理器数量有限[4]。共享磁盘结构中每个处理器拥有私有内存、但都能访问全部磁盘,成本低于共享内存,需要分布式锁管理来维持缓存一致性[6]。无共享结构中每个节点自带处理器、内存和磁盘,节点之间仅通过高速网络通信,不存在对内存和磁盘的争用,可扩展性最好[7]。

数据在多个节点上的分布方式是并行执行的关键。最常见的形式是水平划分,即把关系中元组按某种规则分散到多个磁盘上,以缩短读取整个关系所需的时间[4]。同一查询内部也可以再拆解为多个可并行执行的子操作,从而在节点内部与节点之间同时获得并行度[3]。

衡量并行系统接近理想程度的常用指标是加速比与伸缩比。加速比描述固定规模任务在更大规模系统上的时间缩短倍数,若系统规模扩大 $N$ 倍而运行时间缩短至原来的 $1/N$,称为线性加速比[5]。伸缩比描述任务规模与系统规模同倍数扩大时运行时间是否保持稳定,若保持不变则称为线性伸缩比[3]。

阻碍线性加速比与线性伸缩比的因素主要有 3 类:启动并行操作所需的不可并行化时间、多个操作竞争共享资源造成的相互干扰,以及各并行子任务耗时不一致导致的偏斜[5]。无共享结构因为节点之间不共享资源,干扰很小,因此更容易接近线性加速比和线性伸缩比[3]。

发展历程

并行数据库技术的源头可以追溯到 20 世纪 70 年代的数据库机研究。当时的研究集中在关系代数操作的并行化,以及为关系运算设计专用硬件,试图用硬件直接实现部分数据库操作,这一路线最终未能成功[3]。这一时期的背景是应用数据量不断增长,单机性能已不足以支撑分析型数据库系统,因而出现了专用硬件与通用集群两条技术路线的选择[5]。

20 世纪 80 年代后期,研究方向逐步转向通用并行机,重点落在并行数据库的物理组织、操作算法、查询优化和调度策略上[2]。专用硬件厂商在性价比上逐渐落后于遵循摩尔定律快速迭代的通用硬件厂商,通用商用服务器集群成为更可行的基础平台[5]。

从 20 世纪 90 年代至今,随着处理器、存储和网络等基础技术的进步,研究重点转移到数据操作的时间并行性与空间并行性上[3]。此后在硬件成本与可扩展性两方面取得平衡的无共享结构逐渐成为主流选择,并被多款商用并行数据库产品采用[2]。

应用

在应用分工上,联机事务处理类负载通常在对称多处理机或集群上表现更好,而决策支持类负载更适合大规模并行系统[8]。因此并行数据库既用于需要高事务吞吐的场景,也用于需要扫描与聚合海量数据的分析场景[4]。

采用无共享架构的典型系统包括 Teradata、Tandem 的 NonStop SQL,以及 Greenplum、Vertica 等面向分析的数据库产品[9]。基于共享磁盘架构的代表性实现则有运行于集群之上的 Oracle 并行服务器类产品[8]。

随着并行计算框架的普及,一部分分析型产品借鉴了并行数据库的设计思路,形成了在分布式文件系统之上执行 SQL 的一类方案,并行数据库的技术思想由此扩展到更广泛的数据处理领域[1]。

局限

并行数据库的扩展性并非没有上限。共享内存结构受互连带宽限制,处理器规模通常只能达到数十个;共享磁盘结构虽然可支持更多节点,但需要分布式加锁与一致性协议,节点间通信开销较大,共享磁盘访问本身也可能成为瓶颈[6]。

无共享结构虽然可扩展到数千个节点,但实现复杂,且节点负载难以均衡,任务分配往往依据数据的物理位置而非系统实际负载[6]。由于数据分散在各节点私有存储上,需要在系统初始化时设计合适的数据划分方案,并在数据增删或查询模式变化后定期重新划分与再均衡,否则划分方案会逐渐偏离最优[10]。

跨节点查询还会带来额外的数据搬运代价。当连接等操作涉及多个节点时,需要通过函数下发与数据重分布来完成,这些通信开销会直接影响系统整体的可扩展程度[10]。此外,启动时间开销和并行子任务之间的负载偏斜,也是各类并行结构都难以完全消除的影响因素[5]。

参见

  • 分布式数据库 —— 在物理结构上与并行数据库相近,但节点在逻辑上平等、无主从之分。

  • 大规模并行处理 —— 无共享并行数据库常用的硬件与计算架构基础。

  • 数据分区 —— 将关系划分到多个磁盘或节点,是并行执行的前提。

  • 查询优化 —— 决定并行执行方案与调度策略的关键环节。

  • 数据仓库 —— 并行数据库的主要应用场景之一。

词条评价
词条统计

浏览次数:2 次

阅读量:0 次 · 阅读完成量:0 次

最近更新:2026-10-13T21:05:05Z

历史版本

本条目引用的词条
分布式数据库 大规模并行处理 数据分区 查询优化 数据仓库