本文首先回顾并行硬件架构的发展,并进一步介绍基于并行硬件架构的数据库一体机系统与基于MPP架构的数据库软件系统。数据库一体机系统在银行等大型企业中采用广泛,一体机的优点是开箱即用、功能丰富、稳定、售后服务好,缺点是价格昂贵、扩展不灵活。基于普通服务器集群加MPP数据库软件构建的数据库系统,优点是硬件成本低、水平扩展容易、易于进行海量数据处理、吞吐量高,缺点是仅适合用于数据分析。
01并行硬件架构的发展
为了提高计算机系统的处理能力,在处理单元(CPU)性能确定的情况下,就需要增加处理单元的数量,此时从计算单元(CPU)对资源(特别是内存)访问的角度来看,并行硬件架构分为三种,详细说明如下。
SMP(Symmetric Multi Processing,对称多处理器)架构。这里的“对称”是指所有处理器之间是平等的,并且共享包括物理内存在内的所有资源,处理器访问不同资源的能力(速度)是一致的,每个处理器访问内存中的任何地址所需的时间是相同的,因此SMP架构也被称为UMA(Uniform Memory Access,一致存储器访问)架构。
- NUMA(Non-Uniform Memory Access,非一致存储访问)架构。NUMA架构服务器内部有多个处理模块(节点),每个模块有多个CPU和本地内存,但每个CPU也可以访问整个系统的内存,当然访问本模块的内存要比访问其他模块内存的速度快,这也是非一致存储访问架构名称的由来。
- MPP(Massively Parallel Processing,大规模并行处理)架构。MPP架构是将多个处理节点通过网络连接起来,每个节点是一台独立的机器,节点内的处理单元独占自己的资源,包括内存、硬盘、IO等,也就是每个节点内的CPU不能访问另一个节点的内存(这是MPP与NUMA的主要区别),MPP架构服务器需要通过软件实现复杂的调度机制以及并行处理过程。
这三种技术架构的发展是一个并行能力、扩展能力逐渐提高的过程,也是耦合度逐渐减低的过程,它们的区别如图1所示。SMP架构服务器的主要问题是扩展能力十分有限,随着CPU数量的增加,内存访问冲突出现的概率会快速增加。实验表明,SMP架构服务器CPU利用率最好的情况是服务器内有2~4个CPU。NUMA架构可以在一个物理服务器内最多集成上百个CPU,但由于访问非本节点内存的延时远远超过本地内存,因此在CPU达到一定数量后,无法再通过增加CPU实现系统性能的线性提高。MPP架构的扩展性最好,理论上对节点数量没有什么限制,可以包含几百个节点。
▲图1 并行硬件架构对比
02基于并行硬件架构的数据库设备
数据库厂商推出了很多软硬件一体的数据库设备产品,此类产品是由一台或多台主机组成的集成设备,将服务器、存储、操作系统和数据库软件集成在一起,可以实现开箱即用。国内一般将此类产品称为数据库一体机(Database Machine)。
为了提高性能,此类产品都会采用并行硬件架构。从资源共享角度来看,这类产品的数据库架构可分成三类,详细说明如下。
- 完全透明共享(Shared Everthing)系统。一般是针对单个主机,采用SMP或者NUMA硬件架构,是一个高性能的单台服务器,此类产品可以提供较高的事务处理能力。
- 完全不共享(Shared Nothing)系统。由多个主机组成,采用MPP硬件架构,各节点都有自己私有的CPU、内存、硬盘等,不存在共享资源,每个节点是一台SMP服务器,在每个节点内都有操作系统和管理数据库的实例副本,管理本节点的资源,节点间通过网络通信,能够处理的数据量更大,适合复杂的数据综合分析,对事务支持较差。
- 共享磁盘(Shared Disk)系统。由多个主机组成,也属于MPP硬件架构,各节点使用自己私有的CPU和内存。共享磁盘系统可实现高可用性,即使一个节点故障,也可以通过其他节点访问所有数据,但由于节点之间不共享内存,需要一个锁管理器来维护节点缓存之间的一致性,会带来额外的开销。
这三类产品的功能特点对比如下表所示。
▼表1 三类产品的功能特点对比
03基于MPP架构的数据库软件系统
基于MPP架构的数据库软件系统,一般简称为MPP数据库,它是运行在由普通商用服务器组成的服务器集群上,服务器(节点)之间通过网络连接,每一个节点都是独立的、自我管理的,且计算节点的功能是相同的。也就是说,每个节点是一台相对独立的数据库服务器,节点上运行着一个单机操作系统和数据管理系统,用于管理本节点上的资源与数据,即节点资源私有。以基于PostgreSQL的MPP数据库系统Greenplum为例,每个节点上实际运行着一个单机版的PostgreSQL数据库实例。如果是主从模式,由管理节点接收客户端请求并将任务分解分派到多个节点上,在每个节点上完成数据读取和计算后,再将各部分的中间结果汇总到管理节点一起计算,得到最终的结果并返回客户端。如果是环形模式,则每个节点都可以接收客户端的请求,并向其他节点请求数据,待完成汇总计算后将结果返回客户端。MPP数据库架构(主从模式或环形模式)如图2所示。
▲ 图5-2 MPP数据库架构(主从模式或环形模式)
从硬件架构上来说,MPP数据库与Shared Nothing+MPP的数据库一体机是一样的,区别是服务器硬件选择不限定厂商,集群弹性伸缩更灵活,成本更低。在大多数情况下,所有节点都使用相同的硬件和相同的操作系统。