在图15.4中,元类PG_METACLASS是将POSTGRES关系和属性映射到VML类、性质与方法。图15.4POSTGRES数据库到元类模型的正向映射类里的每个实例对应于关系里的某个元组。由图15.4可知,POSTGRES数据库中的关系Conference映射到类CONFERENCE,同样,可以生成类SESSION和TUTORIAL。图15.5从POSTGRES数据库到元类模型的映射(详)显然这个类型的定义是普适的,描述了如何与基础数据库的连接。......
2023-10-28
下面讨论一种分布式数据库系统的目录管理策略。我们选用C-POREL作为样例,原因是其设计有特色。
与POREL一样,C-POREL将数据目录设计成长目录、短目录两大类。
C-POREL的主要目录表如下。
●NAMECAT:用于描述全局信息(如关系、进程)的外部名、内部名和类别等。这个目录存放在所有节点上,这类目录称为短目录。
●RELSCHEMA:为关系的结构说明,其中包含关系名、关系标识、指向关系属性表的指针、子关系的位置等,属于短目录。
●RELSIZE:为关系的定量说明(关系的大小,如记录长度、记录个数等),属于长目录,存放于关系所在的节点上。
●DISTRICAT:表示关系在网络中的分布及其副本的信息。
●LOCKTAB:表示当前封锁数据的信息、封锁方式、封锁的提出者、封锁的开始时间等,以及关于完整性信息表、访问资格描述表等。
为了便于理解,下面列举几个目录表的例子进行深入讨论。
●NAMECAT:即名字表,用于记录内部名和外部名的对照信息,其结构如下表。
其中:EXTNAM表示系统在全网范围内出现的名字;TYP为名称代表的含义,如永久关系、临时关系、文件名、进程名、事务名和簇名等;INTNAM表示系统的内部名。这张表用于反映系统中出现名字的外部形态和内部形态之间的映射。
●DISTRICAT:用于描述关系的分布信息,其结构如下表。
其中:RID代表关系标识;ATR代表子关系数(即数据库水平分片数);↑SRDESC表示是一个表的指针,指向表SRDESC。目录表SRDESC用于描述子关系的详细信息,其结构如下表。
其中:SRID代表子关系标识;PRED代表关系的分布谓词(实施中它指向一个谓词描述表);ATUP表示该子关系的元组数;COPY是一个布尔量,说明是否允许有副本;ABYTE表示关系所占的字节数。↑LOCLLST是指向数据定位清单的指针。
C-POREL的目录体系是链接的表格结构。如DISTRICAT中的一个属性↑SRDESC,这里借用↑表示指针,说明该属性链接到另一个表SRDESC,该表用于描述子关系信息。
1.C-POREL的长、短目录结构
如前所述,C-POREL的目录结构是一种全局目录,目录划分为两部分,一部分叫短目录,一部分叫长目录。短目录在全网的每个节点都保存一份备份,系统要维护短目录在全网的一致性。短目录存放的是一些变化较不频繁、较为稳定的目录信息,如关系模式定义、关系的分布、完整性断言定义等。长目录则存放于数据所在的节点上,包含的是一些变化较为频繁、不太稳定的目录信息,如元组的个数、元组属性值的不同个数及其分布、通用存取路径信息等。
与POREL一样,C-POREL将面向用户的查询语言先编译成一种中间语言形式,即四元组形式。其相应的语言称为RML(relational machine language),其语法如下:
<RML语句>::=<算符><运算量1><运算量2><运算量3>
RML语句以四元组形态出现,因此呈表格形式。根据性质的不同,可分为SQTAB、AVLTAB、RETAB等。POREL的主要数据目录表关联如图4.1所示。
图4.1 POREL的主要数据目录表关联图
图4.1中主要表格的含义如下。
ALTAB:属性表表格,用于描述属性表长度、表元素(属性标识符)等。
AVLTAB:属性值表表格,登记项包括标识符、长度和属性标识符。
PTAB:谓词表格,用于描述谓词。
IETAB:项表达式,用于描述数据元。
ERTAB:显示关系表格,用于描述关系标识、关系的基、关系的度等。
CSTAB:常量表格,用于描述常量。
由于这里涉及的运算除了一元运算外,还有二元运算,这样最多两个运算量即可。那为什么还要运算量3?其实,运算量3主要是用来指示语句前后关联的指针。例如,永久关系定义语句在编译成RML后就成为四元组,如下面这个四元组形态的表称为SQTAB。
其中:RID代表关系标识,即关系的内部名;↑AVL和↑CSTAB表示指向表的指针(↑表示指针)。AVL和CSTAB为四元组形式的表,分别用于存放属性值描述(AVL)和属性名描述(CSTAB)。
例如,下面一条RDBL语句:
DEFREL EMP PERM
ENO INTNONUL
NAME CHAR(20)
ADDRESS CHAR(40)
其意义是定义一个永久关系,名为EMP,关系模式如下:
EMP(ENO,NAME,ADDRESS)
其中:ENO属性不能为空。
这条语句的RML中间语言形式如下:
SQTAB:
AVTAB:
由于该系统里数据库目录中的表格与RML表格重叠共用,所以我们以RML语句为例来说明POREL/C-POREL的目录结构。
在数据库的定义和查找、添加、删除、修改等操作中,这些操作对数据库的目录和对数据库本身的影响是各不相同的。这里需要注意的是,简单地划分“读”和“写”两类操作,是一种较粗糙的划分。为了提高系统的性能,有必要进行更精细的划分。有的操作既会改变目录,也会改变数据库,如删除关系、定义分布等。有的操作只会改变目录,但不会影响数据库,如定义关系。有的操作只会改变数据库,但不会改变目录,如修改元组的非索引属性的值等。一般都把它们当作“写”操作来对待,这过于粗糙。在C-POREL中会区别对待它们,采用不同的并发控制策略,从而有利于提高并发度和系统的整体性能。(www.chuimin.cn)
根据对长目录、短目录和数据库的不同影响,C-POREL将24种目录事务进行了精细分类,共分为五类目录事务。
第一类目录事务涉及修改短目录,但对数据库本身不会造成致命影响,因此不会导致其他事务的脏读。这类事务如定义关系模式、定义用户权限矩阵、用户注册、建立或更新用户口令、申请关系内部名、申请完整性断言内部名等。这类事务不会妨碍其他事务去“读”数据库,但这类事务相互之间不应干扰,以免造成修改丢失,故也要进行互斥。我们称这一类为读相容写排斥的写目录事务或自排斥写目录事务。
第二类目录事务涉及更改目录和数据库,包括短目录和长目录,是一种典型意义下的排他性目录事务,称为全局排斥性写目录事务。如删除关系或子关系、定义分布、定义完整性断言等。
第三类目录事务一般只影响本地的长目录,只需在本地实施并发控制,是一种局部的排他性写目录事务。
第四类目录事务是一种相容性的读目录事务。
第五类目录事务是无需任何并发控制的不相容读目录事务,如:DBA要了解数据库状态,NOA子系统为了进行优化,而对系统目录中的一些信息和数据进行不必十分精确的统计等。
2.目录管理与目录事务
下面以C-POREL为例说明涉及目录管理的事务处理问题。
在有些系统里,直接使用管理用户数据的软件管理数据目录和处理目录事务。其优点是简化了系统的实现,其缺点是效率低。
事务要不断地与目录打交道。无论是在用户登录时、用户提交事务时、事务进行编译时(以POREL为例,都会涉及编译子系统的NUA和NOA),事务管理(transaction management,TM)和关系基本机器(RBM)都要不断地与系统目录打交道。从POREL看,每访问一次目录就要伴随四次进程切换:从当前进程切换到POREL的通信系统(communication system,CS)进程,再从通信系统(CS)进程切换到目录管理(catalog manager,CM)进程,然后经过两次进程切换返回。如果涉及并发控制和恢复等,则还要增加到TM进程和到RBM进程的切换。一次进程切换的开销达5000条到10000条指令,访问一次目录的开销就达20000条到40000条指令甚至更多。这种高开销所导致的低效率是不能为实际系统所容忍的。
为此,C-POREL设计和实现了一个专门的目录管理子系统,它不借用C-POREL的其他系统成分,自己完成本身所需的目录存储、存取、并发控制、故障恢复等功能,以及定义和查、添、删、改等操作。这种对目录本身的操作也是一种事务,将之定义为目录事务。由于目录登记项或目录数据项比较简单和整齐划一,易于组织和管理,故CM的目录数据不按关系来组织和存储,不建立目录的关系数据库,而是利用操作系统提供的文件系统来组织。这里考虑到对目录数据无需实施关于关系的并、交、差、连接和投影等操作,因此可以大为简化,制作得比较小巧和精致。
在数据库的整个运行(编译、执行、对远程节点的访问和信息交换等)过程中要不断地与目录交互,相关动作称为目录事务的操作。概括来说,大致有以下一些涉及各个功能层的动作。
(1)与UI(用户接口)有关的目录事务,主要包含以下几个方面。
●DBA为用户注册、建立或更新口令。
●DBA为了解数据库的状态而对系统目录中的各种信息包括统计信息的查询。
●用户进入DDBS时核查用户注册名及口令。
●数据录入前对关系模式的查询。
(2)与离网分析(NUA)有关的目录事务,主要包含以下几个方面。
●申请关系内部名、子关系内部名、通用存取路径名和断言内部名。
●定义关系模式或扩充关系。
●定义或删除用户权利矩阵。
●删除完整性断言。
●为用户事务查取关系模式、完整性断言、关系分布信息、通用存取路径、权利矩阵信息、建立程序状态表等。
(3)与涉网分析(NOA)有关的目录事务,主要包含以下几个方面。
●查取本地节点或远程节点的关系或子关系的基、属性值的分布信息、非重复属性值的数目信息等。
(4)与关系基本机器(RBM)有关的目录事务,主要包含以下几个方面。
●删除关系或子关系。
●定义或删除通用存取路径。
●定义关系的分布。
●查询长目录中的某个存取路径。
●查询长目录中已登记的关系或子关系的描述信息。
●写入或修改长目录的某个存取路径。
●写入或修改长目录的关系或子关系的描述信息。
●查询系统目录的版本号(版本号记载了关系模式、子关系分布、完整性断言等全局描述信息的短目录的某个一致性状态)。
(5)与事务管理程序有关的目录事务,主要包含以下几个方面。
●对远程节点传送来的有关注册用户名,或者建立及更新用户口令的请求的响应。
●对远程节点传送来的有关定义关系模式、定义或删除用户权利矩阵、扩充关系、删除完整性断言的请求的响应。
●对远程节点传送来的有关查询长目录的请求的响应。
●对远程节点传送来的有关删除关系或子关系、定义完整性断言、定义分布的请求的响应。
●事务管理程序为建立子关系封锁表而对本节点长目录的查询。
3.C-POREL目录管理的进程结构和事务恢复
POREL目录管理(CM)程序负责统一处理各子系统和目录的交互作用。由于在数据库系统的活动过程中对目录的访问十分频繁,所以这种方式所导致的进程切换的开销非常大,从而降低系统的效率。C-POREL采用适当的以空间换时间的策略来提高系统的效率。
结合C-POREL的进程结构(见图4.2),C-POREL目录管理采用逻辑上统一、物理上分散的方法。将逻辑上统一的目录管理(CM)程序划分为四块,物理上分散到系统模块UI、NN、TM和RBM中去。分别将它们记为CM-UI、CM-NN、CM-TM和CM-RBM,它们在各自的子系统中都是可以直接调用的功能模块。在这样的安排下,在一个节点上有一个CM-UI副本和一个CM-TM副本。CM-NN和CM-RBM则有多个副本,它们是与NN子进程和RBM子进程一起动态生成的。这样安排的好处是节省了大量进程通信和进程切换的开销,加快了目录的访问速度,提高了并发度,从而大大提高了系统的整体效率。在付出的代价上则是增加了空间开销和目录事务并发控制及故障恢复的复杂性,其实现难度也有所增加。
与用户事务一样,目录事务也会面临故障恢复的问题。这类故障可以分为事务故障(仅限于本事务范围)、系统故障(涉及若干个事务,如内存破坏)和介质故障(数据库遭到破坏,如磁盘破损)三类。对付故障的方法,其原理很简单,就是备份或冗余。在系统发生了故障并进行了物理恢复之后,恢复子系统可根据备份对有关数据进行恢复,使系统目录恢复到故障前的某一个一致性状态。
C-POREL的短目录在每个节点上都有一个副本且彼此保持一致,长目录则只存放在对应数据驻留的节点上。由于短目录在每个节点上有保持一致性的彼此相容的副本,因此对短目录的恢复提供了一种自然设施。如果某节点的短目录由于故障而遭到破坏,则可以从网上的其他节点进行拷贝,故很容易恢复。在一个节点上,对短目录建立一个主本和一个或多个副本。主本和各副本存放在彼此故障无关的存储设备上,例如不同的磁盘机或磁带机上。当对短目录进行更新修改时(第一类、第二类目录事务),首先在主本上进行修改,更新完毕后再对各副本进行同步修改。如果主本遭到破坏,则可按副本对主本进行恢复。如果副本遭到破坏,则可按主本对其进行恢复。如果主副本同时遭到破坏(这种概率很小),还可用网上其他节点上的短目录来进行恢复。
图4.2 C-POREL的进程结构
在C-POREL目录管理子系统中设立了目录日志(catalog log),用以记录对目录的更新过程。日志记录的内容通常包含如相应的事务标识、所修改数据的前象(对于定义及添加无前象)和后象(对于删除无后象),等等。由于目录事务比较简单,故相应的日志记录也较单纯。
考虑到目录事务一般都是短事务,因此C-POREL中采用目录事务先提交(COMMIT)后写盘的策略,即校验点(checkpoint)选在目录事务的COMMIT点。这样在故障之后进行恢复时,只需执行REDO的操作而无需执行UNDO的操作。
有关分布式数据库技术的文章
在图15.4中,元类PG_METACLASS是将POSTGRES关系和属性映射到VML类、性质与方法。图15.4POSTGRES数据库到元类模型的正向映射类里的每个实例对应于关系里的某个元组。由图15.4可知,POSTGRES数据库中的关系Conference映射到类CONFERENCE,同样,可以生成类SESSION和TUTORIAL。图15.5从POSTGRES数据库到元类模型的映射(详)显然这个类型的定义是普适的,描述了如何与基础数据库的连接。......
2023-10-28
SDD-1采用一种全局式的目录体系结构,它的系统目录是作为逻辑上一致的、单一的表或关系来处理的。为了提高性能,SDD-1允许局部节点暂存远程数据的目录登记项的拷贝,并要求保持它们的最新版本。该系统将目录划分为长目录和短目录。SUNDDB采用了类似R*的分布式目录体系结构,并进行了改进和修改。WDDBS-32是武汉大学设计和实现的分布式数据库管理系统。......
2023-10-28
1范围本标准规定了水电站安全会议和安全活动等方面的管理要求。安全生产部是水电站安全会议和安全活动工作的管理部门,负责制订和修订水电站安全会议和安全活动规划、管理办法和考核标准,总结推广先进经验。④布置下个轮值安全生产重点工作及安全注意事项。安全生产部负责人每月至少应参加1次水电站的安全活动,了解水电站的安全状况,了解员工对安全管理工作、现场工作(劳动)环境的意见和建议。......
2023-06-27
从而,死锁是分布式数据库管理系统面临的严肃问题。要采取措施,先要分析是否出现死锁,通常称为死锁检测。等待图是帮助监测的一个有用工具。WFG是一个有向图,表示事务间的等待关系。图9.9是例9.7的WFG。WFG中有环出现就意味着有死锁存在。在分布式系统中,WFG的形式复杂得多,因为两个参与死锁的条件可能出现在不同的节点上,我们把它称为全局死锁。图9.9等待图WFG发现死锁后,就要设法打破死锁。......
2023-10-28
本节介绍分布式数据库管理系统C-POREL的体系结构。在秉承其先驱POREL的基础上,C-POREL根据系统体系结构的特点进行了适应性改进。POREL系统的设计目标可以简述如下。下面讨论POREL系统及其软件结构。首先对POREL的用户接口和逻辑结构进行介绍。POREL和C-POREL的逻辑结构可以用图2.15来表示。C-POREL实现的是关系水平分布。与所有的分布式数据库管理系统类似,整个系统的工作可以分为两个阶段:分析阶段和执行阶段。......
2023-10-28
某种程度上说,泛在计算是物联网的升华,是更高层次上的物联网。图20.5普适计算“计算机消失了”,而又到处都有,就是普适计算的基本思想。在这里,普适计算技术的支持是关键。人们在家生活,关系舒适、健康、安全、快乐,普适计算提供了技术基础。2008年7月28日,在ISO/IEC JTC1 SC25最终标准草案投票中,中国IGRS标准以96%的高支持率顺利通过,正式成为国际标准。......
2023-10-28
体系结构是计算机科学中常用的概念。什么是体系结构呢?图2.1数据库系统的基本结构由图2.1可知,数据库管理系统构建在操作系统上,用于管理数据库,给用户提供所需的服务。那么,数据库管理系统的体系结构是怎样的呢?图2.22层数据库系统结构图2.33层数据库系统结构3.多层结构对于大型、复杂的应用,3层结构显得力不从心,因此更多的层次出现在系统中。......
2023-10-28
“人”出生后,公安部门、卫生部门、民政部门逐步进入出生后的管理工作,接着教育部门、劳动部门等会逐步介入,等等。在人死亡和死亡后,卫生、民政等部门继续参与管理。简单来说,人和法人是政府信息化的关键要素。政府政务公开信息系统的建立和服务的提供可以通过互联网将政务信息公开,更好地加强人们和政府机构之间的联系,实现上述任务。......
2023-10-28
相关推荐