一个并行数据库系统可以作为服务器面向多个客户机进行服务。典型的情况是,客户机嵌入特定应用软件,如图形界面、DBMS前端工具和C/S接口软件等。因此,并行数据库系统应该支持数据库功能、客户机/服务器接口功能及某些通用功能(例如,运行C语言程序等)。此外,如果系统中有多个服务器,那么每个服务器还应包含额外的软件层来提供分布透明性。
对于C/S架构的并行数据库系统,它所支持的功能一般包括:
(1)会话管理子系统。提供对客户与服务器之间交互能力的支持。
(2)请求管理子系统。负责接收有关查询编译和执行的客户请求,触发相应操作并监督事务的执行与提交。
(3)数据管理子系统。提供并行执行编译后查询所需的所有底层功能,例如并行事务支持、高速缓冲区管理等。
上述功能构成类似于一个典型的关系型数据库系统,不同的是并行数据库系统必须具有处理并行性、数据划分、数据复制及分布事务等的能力。依赖于不同的并行系统架构,一个处理器可以支持上述全部功能或其中部分功能。
并行数据库系统的实现方案多种多样。根据处理器与磁盘及内存的相互关系可以将并行计算机结构划分为三种基本类型,下面分别介绍这三种基本的并行系统结构,并从性能、可用性和可扩充性等3个方面来比较这些方案。
(1)Shared-Memory(共享内存)结构,又称Shared-Everything结构,简称SE结构。Shared- Memery方案中,任意处理器可通过快速互联(高速总线或纵横开关)访问任意内存模块或磁盘单元,即所有内存与磁盘为所有处理器共享。IBM3090、Bull的DPS8等大型机及Sequent、Encore等对称多处理器都采用了这一设计方案。
并行数据库系统中,XPRS,DBS3及Volcano都在5kared-Memory架构上获得实现。但是迄今为止,所有的共享内存商用产品都只开发了查询间并行性,而尚未实现查询内并行性。
(2)Shared-Disk(共享磁盘)结构,简称SD结构。Shared-Disk方案中,各处理器拥有各自的内存,但共享共同的磁盘。每一处理器可以访问共享磁盘上的数据库页,并将之复制到各自的高速缓冲区中,为避免对同一磁盘页的访问冲突,应通过全局锁和协议来保持高速缓冲区的数据一致性。
采用这一方案的数据库系统有IBM的IMS/VS Data Sharing和DEC的VAX DBMS和Rdb产品。在DEC的VAX群集机和NCUBE机上实现的Oracle系统也采用此方案。
(3)Shared-Nothing(分布内存)结构,简称SN结构。Shared-Nothing方案中,每一处理器拥有各自的内存和磁盘。由于每一结点可视为分布式数据库系统中的局部场地(拥有自己的数据库软件),因此分布式数据库设计中的多数设计思路,如数据库分片、分布事务管理和分布查询处理等,都可以在本方案中利用。
采用Shared-Nothing方案的有了Teradata的DBC和Tandem的NonStop SQL产品以及Bubba,Eds,Gamma,Grace,Prisma和Arbre等原型系统,所有这些系统都开发了查询间和查询内的并行性。
表2-3从性能、可用性和可扩充性等方面对上述三种架构进行了比较。
表2-3 三种架构性能比较
简而言之,在可扩充性与可用性方面SN结构显然要优于其他两种结构;而在负载均衡、设计的简单性等方面,则是SE结构优点突出一些。对于结点数目较多的配置,SN结构比较好地适应了高伸缩性的要求,它通过最小化共享资源来最小化资源竞争带来的系统干扰。而对于中小型系统的配置,SE结构由于其设计的简单性和负载易于均衡也许就更为合适一些。
为了兼顾SE与SN的优点,有人提出了一种混合型的方案:整个系统是Shared-Nothing结构而每个结点是Shared-Memory结构,即多个SE结构的结点相互联结成更大的SN结构。这种方案在某些场合特别具有吸引力。