11.11 客户-服务器信息处理技术(1)
在这种情况下,如数据库管理系统这样的程序被分割成两部分:工作站(或客户部分)和服务器部分。这就是为什么该环境被称为客户-服务器计算环境的原因。这样的分割方式在客户-服务器计算诞生之前就已经出现了--尤其是在IBM环境中,在此它们被分为数据通信(Data Communication,DC)和数据库(Database,DB)两部分。DC负责屏幕管理、用户界面以及向DB发送对期望数据的请求。一旦DB提供记录,DC还要负责对记录的进一步计算和处理工作,并将结果显示在屏幕上。这种情况下,DC软件(如CICS/VS、IMS/DC或IDMS/DC)以及DB软件(如VSAM、IMS/DB、IDMS/DB或DB2)通常会运行在一个中枢主机上。因此,这不能被称为客户-服务器计算环境。
在实际的客户-服务器环境中,这两部分通常在两个不同的机器上。DC部分运行在客户机上,而客户机通过如Visual Basic、Visual C++或PowerBuilder这样的编程开发语言向用户提供友好的图形用户界面。DB运行在服务器上。在当今的环境中,它可以是如ORACLE、SYBASE或SQL Server这样的数据库产品。因此,对应用程序而言,用户界面由客户机提供,数据库服务由服务器提供。这就是将任务进行分布式处理的方式。每个机器都可以完成自己最擅长的工作。
服务器(数据库)部分接收来自客户端(DC)的请求,然后定位期望的数据库记录,并将其发送给客户端。对该记录的处理工作在客户机器上进行。
因此,服务器不仅要负责维护数据库中的索引,还要使用这些索引执行搜索任务,以便对服务器上想要的记录进行定位和访问。它还要通过使用记录锁来负责处理对相同记录的并发请求。实际上,在将服务器上的DBMS当作用于数据检索的数据库时,它还要负责处理基于事务的恢复工作以确保数据库的完整性。例如,如果用户输入开货单,结果有三条不同的记录需要更新(例如客户、销售分析以及销售注册记录),为了保证数据库的完整性和一致性,这三条记录要么全部更新,要么都不更新。
为了确保原子性,数据库系统允许用户将这三个更新作为一个事务封装在一起,并确保可以使用回滚/前滚这样的特性进行基于事务的恢复。该特性维护更新前和更新后的副本,因此在出现故障的时候可以确保事务得到完全恢复。要点在于:事务(本例中也就是这三个更新工作)要么全部执行,要么根本不执行。在客户-服务器计算的情况下,由服务器上的软件完成该功能,在文件服务器的情况下则并非如此。这就是为什么客户-服务器计算中的服务器软件被称为数据库服务器的原因。
简而言之,服务器实现数据库功能,并处理来自客户机的请求。但这些请求应该采用什么样的格式(比如DML)呢?因为关系数据库非常普及,所以SQL的标准版本可以提供这样的标准。然而,数据库服务器的概念也可以用在非关系数据库或如Btrieve这样的文件管理系统中。是否要将处理工作分成两部分,以及服务器在该处理工作中所起的作用都是区分客户-服务器环境与纯基于客户的计算环境的因素。
因此,数据库服务器是一个智能数据库。它会处理高层数据请求,并且只给客户工作站返回所需的记录,然后客户工作站使用这些记录进行计算或显示/打印并由此得到进一步的结果。这会减少网络上不必要的负荷。因为数据库服务器可以接收来自多个客户的多个请求,所以需要一种机制对这些请求进行排队和设置优先级,以逐个响应这些请求。简而言之,数据库服务器也要是一个具有调度功能的多任务处理服务器。
做到这一点有两种方法。一种是如果在服务器上已经有多用户操作系统,就用它来调度多个请求。这种情况下,数据库服务器的前端程序接收来自用户的不同请求,而多用户操作系统会为每个请求生成一个进程。完成索引搜索之后就会进行该工作。因此从根本上讲,每个进程都会针对特定的记录按照数据库服务器的指示执行读/写操作。图11-26描述了这种情况。如果数据库服务器所在的操作系统只是一个如DOS这样的单用户操作系统,那么就不可能完成该工作。
(点击查看大图)图11-26 包含数据库服务器的多用户操作系统示例
在这个多用户操作系统中,客户端发送的数据库请求成为服务器上操作系统中的一个进程。操作系统将这些进程与任意其他进程一起调度。例如,当进程生成读取磁盘中的索引记录的I/O请求时,该进程被"阻塞",另一个索引已经被读取而且需要在内存中进行索引搜索的进程就要被派发,因为它已经"准备就绪"。
在读取想要的数据库记录后,前端负责将该记录传送给合适的客户。因此,如果需要,它会使用NOS的通信功能或自己的程序完成该工作。
该方法的缺点在于多进程体系结构使得如内存这样的系统资源利用率很低。在该方案中,上下文切换代价也很大。理由之一就是由于服务器操作系统中存在多个进程,因此系统中有结构很大的PCB链表。这就是为什么常使用一种类似于IBM 3090中MVS/XA上的CICS工作原理的方法(也就是单进程多线程方法)的原因,如图11-27所示。
(点击查看大图)图11-27 单进程、多线程
【责任编辑:云霞 TEL:(010)68476606】
点赞 0