一个实时系统的数据管理系统的制作方法

文档序号:6409678阅读:312来源:国知局
专利名称:一个实时系统的数据管理系统的制作方法
实时系统的数据管理系统应该为它的应用系统提供快速可靠(一致)的对不同数据代(Generation)的联机管理。
本发明的任务是给出一个满足上述需求的数据管理系统。
该任务通过具有权利要求1的特征的数据管理系统解决。
通过由一个共同使用的对数据管理系统的数据对象的存取数据结构而实现的在事务处理管理和代管理之间的功能连接,在和事务处理管理系统使用的同一数据对象的基础上执行对不同数据代的管理。以此能够实现快速可靠的联机管理。
本发明的一个实施例由权利要求2给出。通过该实施例,在一个事务处理范围内产生的新的数据对象收集在一个数据代中并因此可根据一个GEN_ID唯一确定其产生顺序。因此,允许代管理系统例如通过一个唯一的删除任务集中删除不再需要的数据代。
本发明的另一实施例由权利要求3给出。通过该实施例,能够执行并行于一个事务处理的读序列。
本发明的一个实施例由权利要求4给出。通过该实施例,禁止事务处理对与一个事务处理并行的对同一数据对象的存取。
本发明的再一个实施例由权利要求5给出。通过动态分配,能够处理不同颗粒度(Granularitaet)的数据对象。也就是说,既可以为一个小颗粒度的数据对象(数据元素),也可以为一个大颗粒度的数据对象(数据组)分配一个TGSE。通过根据需要动态产生TGSE,或者引用一个公共的库,可以实现上述的动态分配。
本发明的另一实施例由权利要求6给出。通过该实施例,事务处理管理系统的TGSE可以根据其产生顺序连接到一个代树上,其接着由代管理系统管理。该实施例的前提条件是TGSE的动态分配。
下面根据附图详细说明本发明的一个实施例。
在附图中,系统框之间的箭头表示一种功能关系(例如一个过程调用,此时箭头的头指向被调用的过程)。


图1和图2表示根据本发明的一个数据管理系统EDB的结构,各种应用APPL可以存取该数据管理系统。
数据管理系统由两层组成,亦即一个针对应用的系统层,其在下面表示为针对应用的数据库ADB,和一个独立于应用的系统层,其在下面表示为类数据库GDB。
类数据库GDB包括中央和本地功能,这里中央功能以中央控制系统CU实现,而本地功能以类模块GM实现。
中央控制系统CU包括一个集中控制存取(单次存取或者系列存取)的中央存取控制系统CTCC,总存取算法ALG,一个作为对后台存储器的接口以备份用户数据的安全保险系统NVSI,一个用以管理不同长度的数据的数据池VLP和一个用于把更新的用户数据分配给实时系统的不同进程的中央分配系统DDFC。
类模块GM表示说明一个数据容器的定义模块,它包含存储用户数据的数据结构以及为此需要的存取结构,亦即寻址方法和元素存取过程。此外,类模块还包含另外的结构以支持中央功能系统,亦即支持协调和一致保证(本地存取控制系统CTCL)的结构,以及支持分配用户数据到不同平台(本地数据分配系统DDFL)的结构。下面以一种不依赖于用户的方式,也就是说以一种不依赖于数据结构的数据分布的方式说明上述类模块中的结构。
不同类型的类模块通过组件(例如,本地存取控制系统CTCL,本地分配系统DDFL以及为此需要的另外的数据定义,不同的寻址方法)组合产生。另外的方案为从相应应用的数据模型提取中产生的需求规定。
每一类模块包含一个与单次存取控制有关的基本存取过程的记录。该纪录包括一个读用户数据的过程GET,一个修改用户数据的过程SET以及为产生或者删除用户数据元素的过程CREATE和DELETE。对用户数据的存取只能通过这些特定的存取过程才可能(数据隔离)。带有相应持久性需求的数据保存在一个后台存储器的磁心映象格式中。以此保证,在以从属的加载过程重新运行通信计算机之后能最快使用当前数据。
针对应用的数据库ADB包括视图和模块子例程(Modulinstanz),这里模块子例程由类模块的即时化而产生。
通过上述即时化,数据容器(类模块)用规定的数据说明初始化,以此将数据结构和在该数据结构上的存取算法彼此联系在一起。视图建立对当前应用APPL的接口。它表示该应用的概念数据模型的逻辑图形。
存取控制系统控制用户对数据管理系统EDB的存取,同时保证一个更新过程把数据管理系统中的数据从一个一致的起始状态运送到一个一致的终止状态。为保证该一致性,存取控制系统以一种整体的(原子的)方式处理存取序列(事务处理或者读序列),亦即对一个事务处理要么整体执行要么整体拒绝。
此外,存取控制系统协调彼此并行的存取序列的同时存取。
存取控制系统包括CTCC,CTCC为用户执行涉及以整体存取序列的控制这样的控制任务(例如START_TA,DO_TA,ABOUT_TA)。
中央数据池VLP管理半永久的和临时的变长数据。它既包括数据,也包括一个基元过程纪录,以便存储和操作由它容纳的数据。
所有由中央数据池管理的数据将通过数据池隔离。也就是说所有对这些数据的存取只有通过上述基元过程进行。上述模块子例程能够从数据池保留一个任意长度的块,这里每一被预定的数据块通过一个由其预定而分配的逻辑键标识。
类存取算法ALG包括对所有类模块公共的那些功能,亦即对一个算法属于数据位置(例如链接表,二进制代树)的逻辑组织,对于另外的机构属于数据的物理存储,也就是说通过数据库内部的管理结构或者存取结构而不依赖数据结构的路径。类存取算法只由类模块调用。
DDFC控制用户数据从一个平台(处理器)到另外的平台(多个处理器)的转移同时保证在不同的平台(处理器)之间数据一致。DDFC由一个应用模块的DDFL动态调用。
如上所述,一个类模块用作一个数据容器,其数据结构,以及为此数据结构特定的存取算法以一种不依赖于应用的方式说明,也就是说以一种独立于数据结构的技术和方式说明。一个类模块包括一个对数据管理系统的存取过程的纪录,它可以由所述应用使用,以便实现对在类数据库GDB中包含的数据进行读写操作。
根据一个类模块在数据存取的数据结构特定部分和公共部分以及数据处理之间不同的内部结构,可以把公共功能说明为类算法ALG,它们可以由每一个类模块使用,因为它包含在类数据库的中央模块CM中。此外,类模块还使用由中央存取控制系统CTCC和数据池VLP提供的其它公共功能。
引入类模块的主要目的是为实现软件的重复使用性和重复替换性。类模块建立一个库,通过即时化可以由这个库(Library)产生应用特定的对象组,也就是说,通过用特定结构信息代替一般数据结构信息(场位置,例如在CHILL中的ANY_ASSIGN)。应用可以选择自己的类模块,将其即时化和把即时化了的模块结合到一个或者多个视图中。
通过在应用和用户模块之间插入的应用过程层VIEW,可以实现所述应用对逻辑数据结构的独立性。借助一个应用过程执行对一个或者多个用户模块的存取,这里一个用户模块每次管理一个对象组。一个应用过程包含所述数据对象的希望的属性作为参数,这里这些参数指返回参数,它们在用户过程执行后,返回到应用。因此通过应用过程,应用在存储的应用数据上准备一个自己的视图。因此逻辑数据结构的改变对应用不起任何作用。
一个应用或者一个用户只使用应用过程VIEW来管理它的应用数据。对于依赖于一致性修改的数据,通过指令对中央存取控制系统的一系列相应的应用过程调用表示为一个事务处理。事务处理的执行以及数据在后台存储器中的备份和数据的分配通过数据管理系统以独立的方式进行,因此对于用户来说是完全不可见的。
图3表示事务处理的准备阶段和激活阶段。
在由用户控制的准备阶段通过用户一个接一个地为每次存取调用存取过程(SET,GET,等),一步一步建立事务处理。在一个事务处理之内,通过调用相应的存取过程,原则上可以起动任意多次单次存取。
准备阶段由过程START_TA起动,而由过程DO_TA结束。过程START_TA为该事务处理分配一个事务处理标识TA_ID并把它交给用户。然后用户在为单次存取调用存取过程时使用该TA_ID作为入口参数。
在准备阶段记录存取过程的调用并准备对由存取所涉及的数据进行最终的修改。在准备阶段,用户有可能调用过程ABOUT_TA放弃该事务处理。
通过调用过程DO_TA同时起动激活阶段,其仅由中央存取控制系统控制,因此独立于用户调用运行。因此在激活阶段不再能考虑为单次存取的调用。
在准备阶段执行事务处理的协调,也就是说,识别所有与其它并行事务处理的冲突并进行协调。这里协调是这样进行的,事先起动的事务处理可以继续运行,与此相对,其它的并行事务处理被拒绝,这时给用户发送一个相应的否定的返回消息。因为这样在准备阶段消除了所有冲突,所以事务处理可以在激活阶段彼此独立地执行。
图4表示中央存取控制系统CTCC的结构。中央存取控制系统CTCC包括一个事务处理管理系统TMS,一个代管理系统GMS,一个资源管理系统RMS和一个冲突管理系统VMS。
事务处理管理系统TMS控制对数据管理系统的数据对象OCI的面向事务处理的存取。
代管理系统GMS根据在事务处理的激活阶段由事务处理管理系统规定的一个代标识GEN_ID管理在事务处理范围内产生的数据代。这一管理包括更新一个新产生的数据代,也就是说传输新的数据代到工作存储器和/或磁盘上的最终存储位置。此外,上述管理包括对读序列(对数据管理系统的数据对象在逻辑上属于一起的读存取序列)的控制。
通过这种管理方式,可以在一次读序列的范围内读取同一代的一组数据对象,而与此并行执行一个事务处理。
资源管理系统RMS管理在事务处理管理系统和/或代管理系统存取时所使用的存取数据结构。
冲突管理系统协调对由并行的事务处理触发的同一数据对象的写操作并防止在读序列同时执行对最早的数据代的数据对象进行一次读操作时删除该数据代。
RMS包括一个作为最大数据结构的软池TGS_POOL,其既由事务处理管理系统TMS,也由代管理系统使用。软池用于由事务处理管理系统TMS维护(临时存储)在一个事务处理范围内接收的新数据(面向事务处理的输入),直到这些数据由代管理系统放在存储器或磁盘上它们最终的存储位置。
RMS包括允许对事务处理进行自己的管理的另一运行日志TG_LOG,一张用于管理不同数据代的域表SCOPE_TAB,和作为最小可管理的数据结构的上述软结构TGSE。
图5表示软池TGS_POOL的构造。
软池的构造包括10个带相应页头0到10的事务处理页TL。由此事务处理管理系统支持10个并行方式的事务处理,因为每一事务处理页TL仅为一个确定的事务处理保留,其中一个分配的事务处理标识TA_ID登入所属页头的相应数据字段中。还设计了一个另外的第11事务处理页,以便一个在执行中的活动的事务处理在其所属事务处理页缺少足够的可用存储器时短时运行后继续运行。
为使一个事务处理页由资源管理系统使用,必须满足三个条件。第一个条件是在页头的一个数据字段FREE_MEMORY指示的一个堆栈的空闲存储器位于一个确定的门限之上。第二个条件是页头的一个数据字段TA_ID不允许有任何登记项。第三个条件是页头的一个指示一个事务处理状态的数据字段STATE必须指示“空闲”状态。
数据字段STATE的数据内容在半永久性事务处理页内是一个临时参数,它用于在更新阶段继续保留事务处理页,即使半永久参数FREE_MEMORY和TA_ID已经为其它事务处理标志为可以使用的事务处理页。
图6表示一个事务处理页的构造,特别是包含在事务处理页TGL的页头中的数据字段。
数据字段BEGIN_USED_AREA指示由事务处理页TGL为存储一个事务处理的输入数据请求的存储区的开始。数据字段END_USED_AREA指示上述存储区的末尾。数据字段END_USED_AREA同时指示由一个另外的TGL请求的存储区的开始。
数据字段LENGTH_USED_AREA包含用于监视目的的一个冗余参数,它表示数据字段BEGIN_USED_AREA和数据字段END_USED_AREA的内容之间的存储器的差。
最后一个数据字段END_UPDATED_AREA指示由该事务处理业已传输到磁盘上的存储区的目前的结尾。
图7表示一个软结构TGSE的构造,它是在软池中所使用的最小数据结构,并且它由事务处理管理系统和代管理系统的基元过程分配给一个事务处理并在一个事务处理页TGL中作为一个重叠结构放置。
数据字段PATTERN表示一个用于监视目的的参数,它表示软结构与一个由数据池VLP分配给事务处理的完整的存储块连接。
事务处理标识TA_ID表示请求(分配)软结构的、以及为所属事务处理独占地保留在软结构上悬挂的数据结构例如一个数据对象的那一事务处理。
命令标识COM_ID和一个逻辑键LOG_KEY表示用于与类模块通信的每一数据对象的纪录信息。
反向参考指针PTR_BACK_REF表示在为逻辑键使用的换算设备中指向一个登记项的指针,或者在代树的情况下表示指向先前的软结构的指针。用一个标志F区分上述两种情况。
指针PTR_OLD_DATA,表示指向一个数据对象的旧映象的指针,或者在代树的情况下表示指向下一软结构的指针。仍然用标志F区分上述两种情况。
指针PTR_NEW_DATA,表示指向一个数据对象的新映象的指针,这里用F表示新映象的数据是否应该向其它的页格式下载。
数据字段TGSE_L,它表示在数据字段NEW_DATA中存储的数据的物理长度。
数据字段OLD_BLK_L,它表示从数据池VLP中分配的旧存储块的物理长度。
数据字段NEW_BLK_L,它表示从数据池VLP中分配的新存储块的物理长度。
指针PTR_NEXT_TGSE,它表示在同一事务处理中分配指向下一软结构的一个指针。
数据字段NEW_DATA,它表示接收新数据的一个数据容器。
通过对图7的软结构TGSE的说明也就结束了对半永久性软池TGS_POOL的说明,现在继续说明RMS另外的数据结构亦即所谓的运行日志TG_LOG。
图8表示用于管理事务处理的运行日志TG_LOG的结构。半永久性运行日志表示一个表,其中为软池的每一个存在的事务处理标识TA_ID保留一行。
半永久性运行日志表示一个用于管理事务处理的表,在其头部包含一个当前的事务处理标识TA_ID_ACT。该当前的事务处理标识的值分配给每一个新起动的事务处理并在以后增值。在头部纪录的当前的事务处理标识用一个循环计数器实现。
下面详细说明运行日志的一个示例行的字段。
数据场PROCGRP_ID,它包含起动事务处理的进程组的信息。
状态字段STATUS包含事务处理处在状态的状态(阶段)信息。一个事务处理基本上分为三个阶段,即是说处于事务处理管理系统的控制之下的准备阶段和激活阶段,以及处于代管理系统控制下的一个生成阶段,在后一阶段内新的数据传送到存储器或磁盘的最终存储位置上。所述不同阶段的每一步作为状态信息纪录在状态字段中。这种纪录允许一致性管理系统以适合的方式对引起实时系统的重运行的事件反应。
图9表示域表SCOPE_TAB的结构,下面详细叙述它的用途。
通过分配一个事务处理标识TA_ID明确标志一个事务处理的开始。此外在一个事务处理的激活阶段内产生一个新的数据代需要分配一个代标识,它也同样可以明确地标识。因为所有在该事务处理的生成阶段内执行的动作都根据代标识执行,所以必须存在一个半永久性的数据结构,亦即所述域表SCOPE_TAB,以便能够把代标识与事务处理标识连接在一起,并由此能够存取在一个事务处理中新引入的数据。
域表的另一个用途是纪录由代管理系统管理的数据代的整个区域。事务处理管理系统使用域表给一个事务处理分配一个代标识。为此目的,域表另外还包含一个代标识池。
域表中纪录的代的整个区域通过指示域表末尾的参数GEN_ID_OLD和包含指向域表开始处的指针的参数GEN_ID_NEW说明。参数GEN_ID_NEW还包含一个在代标识池上用循环计数器实现的指针。
下面详细叙述在RMS中包含的资源基元过程,它们为存取管理系统CTCC的存取数据结构建立一个外壳并使该数据结构对存取管理系统的所有其它功能块透明。通过下面附图中的流程图详细说明这些过程的使用。
过程APPOINT_TAID使用事务处理标识池,给请求的事务处理分配当前的事务处理标识,并接着增加当前的事务处理标识的值。
过程ALLOC_TGL使用半永久性软池TGS_P的头部,给事务处理分配一个事务处理页或者判定资源缺乏并因此初始化高优先级的事务处理后处理。
过程ENTER_TG_LOGBOOK传输事务处理信息例如事务处理的状态信息到运行日志TG_LOG中。
过程VERIFY_TAID检验事务处理标识TA_ID,以确定该事务处理标识是否仍旧纪录在运行日志中。事务处理标识TA_ID由过程DO_TA的用户作为参数传输给控制系统,关于过程DO_TA,后面详细叙述。
过程DETMINE_TA_STATE根据在运行日志中相应的登记项确定一个事务处理的状态。
过程APPOINT_GENID使用代标识池,分配一个当前的代标识并增加当前的代标识的即时值。
过程ALLOC_TGSE表示CTCC为ADB使用的一个服务过程。它允许针对应用的数据库ADB的一个模块子例程为事务处理分配一个为事务处理控制的输入使用的半永久性的软结构。过程ALLOC_TGSE包括下述动作- 检验由模块子例程交给的入口参数纪录;- 检验存取数据结构的可用性,以及如果无足够的存储容量可用的话调用一个高优先级事务处理-后-处理;- 复制新数据到分配的软结构和把该软结构插入到所属的软结构链中;- 调用一个后面要说明的冲突管理系统的过程TA_CONTROL和在无冲突的情况下把所述软结构插入所涉及的数据对象的数据存取部分中。
过程CONFIRM_TADATA遍历软结构链并在连接数据池的一个存储块的情况下借助过程CONFIRM_SE_IZE通知数据池VLP。
过程DETMINE_TGSLNK使用运行日志TG_LOG并由此确定软指针TGS_LINK。
过程DETMINE_TGSEINFO使用软结构TGSE并由此确定确切信息,例如事务处理标识TA_ID或者从数据场PATTERM得知软结构的连接方式。
过程DETMINE_OLDTAID使用运行日志并由此确定其中纪录的最小事务处理标识TA_ID。
过程ENTER_TGSHEADER传输事务处理的状态信息,例如磁盘出错信息,到软池TGS_P的头部的相应的状态场。
过程TA_ROLLBCKMEM允许从事务处理控制的输入返回(Rollbackward)。该过程执行下述动作- 遍历事务处理的软结构链;- 在软结构链中链入存储块的场合使数据池VLP释放该存储块;- 如果命令标识符合产生命令的话,通知请求事务处理的模块子例程的功能综合平台New;- 从数据存取路径删除相应的软结构;- 复位事务处理页TGL和软池TGS_P的头部的登记项。
在磁盘出错的场合,也使用过程TA_ROLLBCKMEM。
过程TA_ROLLFORWARD允许在恢复事件的场合从事务处理控制的输入前置(Roll forward),并为此包含一个后面要说明的过程DO_TA的部分。该包含的过程DO_TA的进入点依赖于事务处理进入恢复事件时的状态。
下面根据图10到12说明资源管理系统RMS的综合基元过程。
图10表示过程DO_TADATA的流程图。
过程DO_TADATA使交给存取控制系统的事务处理数据转交给更新子例程,并存储在纪录簿NOTEBOOK和磁盘DISK上。具有两个可能数值“TGSLEAF”或“VLP”的输入参数TASK此时规定,该过程是以由事务处理页头部的登记项确定的事务处理数据工作还是以在数据池VLP中的一个相应的存储块中存储的事务处理数据工作。所述过程的可能的输出参数OUTPUT是“Disk-Error(磁盘出错)”、“NO_SUCCESS(不成功)”和“ SUCCESS(成功)”。
图11表示过程DO_HEADER的流程图。该过程把在一个事务处理的软池、事务处理页和事务运行日志的头部中的登记项交给要在纪录簿中存储的更新子例程。然后该过程遍历软结构链并把包含全部联系信息的数据池存储块的头部同样交给要在纪录簿中存储的更新子例程。从一致性考虑,该过程同样要保证涉及存取数据结构的数据的头部信息输入同一纪录簿。如果需要的话,该过程此外还要调用要在磁盘DISK上存储的更新子例程。该过程不包含任何输入参数,但其输出参数却与过程DO_TADATA的输出参数一样。此外该过程两次改变事务处理在运行日志中的状态登记项,第一次把状态信息TA_CLOSED转变为状态信息TA_TGSHPREP,如果在该过程的运行中调用了要在磁盘上存储的更新子例程的话,第二次把状态信息TA_TGSHPREP转变为状态信息TA_TGSSUCC。
图12表示过程DO_TGSE_ENTRY的流程图。该过程遍历软结构链并把联系一个软结构到数据存取路径的联系信息交给要在纪录簿中存储的更新子例程。必要的话,此时它还通过调用UPDATE(更新)同样引起在磁盘DISK上存储。该过程不包含任何输入参数,而输出参数和前述过程一样。此外该过程可能把状态信息TA_TGSHPREP或者TA_TGSHSUCC转变为状态信息TA_DISKPREP。
上面说明了存取控制系统对模块子例程的接口过程。下面根据图13到15详细说明存取控制系统对用户的接口过程。
图13表示过程START_TA的流程图。该过程打开一个事务处理,这里它把进程组标识作为参数交给存取控制系统。作为输出参数它包含在图13中给出的参数TA_ID和/或“LACKOFFRESOURCES(缺少资源)”。该过程运行中的状态信息有“NO_TRANS”。
图14表示过程ABORT_TA的流程图。该过程允许用户把由他激活的事务处理再次中断。作为输入参数用户交给存取控制系统属于该事务处理的事务处理标识,之后该过程恢复所属事务处理。该过程的输出参数可从图14得知。过程开始始存在的可能状态信息“TA_STARTED”或“TA_NODISKNB”由过程转变为状态信息“TA_ABORTED”。
图15表示过程DO_TA的流程图。该过程结束事务处理的准备阶段并开始活动阶段。该过程的输入参数是事务处理标识TA_ID,而输出参数可从图15得知。该过程两次改变一个事务处理的状态。第一次把现存的状态信息“TA_STARTED”转变为状态信息“TA_CLOSED”。第二次把状态信息“TA_CLOSED”要么转变为状态信息“TA_DISKSUCC”,或者转变为“TA_DISKNOSUCC”或“TA_NODISKNB”。
下面详细说明代管理系统。
已经说明,代管理系统控制对数据管理系统中数据对象的面向读的存取。面向读的存取包括一个在逻辑上彼此连系的读请求的系列。在这样的系列之内要保证,即使在一个与此并行的事务处理对该存取的数据对象进行一次或多次更新时也能对一个一致性的数据对象纪录存取,所谓一致性数据对象纪录指的是对一个确定的时点有效的一个数据对象纪录。为保证这样的同时性,每一数据对象的新旧映象以并行方式既存储在工作存储区也存储在磁盘上。在活动阶段分配给事务处理的代标识由代管理系统在该事务处理的生成阶段使用,以便以明确的方式识别由事务处理产生的新的数据代。
当对一个确定的数据对象执行多于一次的更新并且此时在存储器中包含多于一个的旧的数据代时,于是开始生成所谓的代树。
图16表示一个数据对象的示例的代树。该代树包括三个代D1、D2和D3。最年轻的代D3包含在一个软结构中,而最老的代D1存在于工作存储区最后的位置。对代树的数据存取路径是通过一个表形的翻译结构实现的,下面称之为翻译表TRL。翻译结构的纪录字段由存取控制系统通过一个逻辑索引控制并且把一个物理指针保存在一个软结构中,或者在没有代树存在时返回到工作区的数据对象。翻译结构的纪录字段在其另外相应的功能中表示数据连接字段。
为拆除代树,代管理系统TMS(参见图4)包括一个事务处理后处理系统,它把在一个事务处理的范围内存储在半永久性软池TGS_P(Iuput-Dadata)中的所有数据向存储区中它的最终存储位置和磁盘上传输。因此该事务处理后处理系统的开始为属于这些数据的事务处理标志生成阶段的开始。但是该事务处理后处理系统同时最终破坏了在新存入的数据下的旧数据代的数据。因此事务处理后处理系统的开始为属于这些数据的事务处理标志生成阶段的结束。
事务处理后处理系统在技术上是作为存取控制系统的一个内部事务处理实现的,因此需要相对于其它事务处理同步和协调。
事务处理后处理系统由两个不同的理由起动并因此有两个不同的进程优先级。当事务处理后处理系统起动以解除在TGS池中资源缺乏时,它具有比作为管理进程高的较高优先级。当事务处理后处理系统起动为传送由一个事务处理存入的新数据到其最终存储位置时,它具有和作为管理进程同样的进程优先级。
图17表示事务处理后处理系统的流程图,后面详细说明其中出现的符号。
下面详细说明仅用于支持代管理系统任务的资源管理系统RMS的那些存取数据结构。
图18表示与代管理系统一起引入的所谓的读运行日志SEQ_LOGBOOK的存取数据结构,其中纪录有活动的读序列。利用读运行日志保证由活动的读序列访问的数据对象不被事务处理后处理系统物理删除。此外读运行日志还参与读序列的时间监视,因为过分长时间的读序列表示对系统负的影响。这种参与在于时间监视周期地扫描在读运行日志中的登记项。此时当它发现一个读序列超过一个规定的时间界限时,终止该读序列。
读运行日志包含一个数据字段PROCGRP_ID,它包含关于调用读系列的进程组的信息。该数据字段和在事务处理运行日志中相应的字段一样用于支持恢复后处理。
读运行日志包含一个另外的数据字段SEQ_STATUS,它为事务处理后处理系统指明一个运行的活动的读序列,并由此保证不把属于该代标识的数据对象物理删除。
下面详细说明资源管理系统仅由代管理系统使用并且同样像事务处理管理系统的资源基元过程为资源管理系统的存取数据结构建立一个外壳的资源基元过程。
过程VERIFY_GENID检验代标识GEN_ID,并将其通知代管理系统,代管理系统把它存储在域表SKOPE_TABLE中。
过程ALLOC_SEQREC在读运行日志中相应于代标识的纪录的开始分配一个读序列。
过程ENTER_SEQLOG把一个读序列的状态信息传输到读运行日志。
过程DETMINE_GENIDOLD利用域表规定最老的代标识GEN_ID_OLD。
过程TRANS_GENTAID根据域表查明与交给该过程的代标识相对应的事务处理标识。
事务处理后处理系统TAPP的过程POSTPROC_TGSE遍历一个事务处理的软结构链并执行下面的动作- 在一个低优先级的事务处理后处理的场合下执行一个冲突检查,其中它调用冲突管理系统的一个过程GEN_CONCTRL,它在后面根据图22详细说明;- 复制一个软结构的内容到工作存储器中的最终存储位置,在数据池连接一个存储块的场合,从数据存取路径删除该软结构,并将此通知该数据池;- 传输事务处理数据到该事务处理的临时存储器,必要的话,引起一个临时的更新过程;- 更新事务处理页的页头并将软结构号NO_TGSE登入事务处理运行日志。S事务处理后处理系统的过程POSTPROC_HEADER包括下面的动作- 改变软池的头部中的瞬时状态信息为值“TA_CLOSED”;- 释放到软池的头部和到该事务处理的事务处理页的通路字段(闸门字段);- 把事务处理运行日志中的状态信息值改变为“GEN_DISKPREP”,并覆盖软池头部相应的数据纪录;- 把软池头部相应纪录的数据以及在事务处理运行日志中的数据传送到临时存储器NOTEBOOK(NB);
- 激活并控制对磁盘DISK的更新过程。
过程GEN_ROLLBCK允许事务处理在生成阶段返回,并为此执行下述动作- 遍历半永久性软结构;- 利用软结构和数据存取路径之间的连接数据连接、必要的话更新与数据存取路径连接的软结构,传输连接数据到临时存储器,必要的话激活在磁盘上的临时更新过程。
- 调用更新子例程UPDATE激活磁盘上的更新;- 使用同样由事务处理管理系统使用并已在先运行的过程CONFIRM_TADATA。
下面根据图19和20详细说明在用户和代管理系统之间的接口过程。
图19表示过程BEGIN_GETSEQUENCE的流程图,用户通过调用该过程起动一个读序列。该过程为读序列在读运行日志中分配一个相应于当前活动的代标识的纪录字段,并改变参数SEQ_STATUS的值为“closed(关闭)”。由此保证属于当前的代标识的任何数据不被事务处理后处理系统删除。此外,通过该过程调用一个时间监视,以避免由一个长时间运行的读序列对系统产生负影响。参数PROCGRP_ID作为该过程的输入参数。该过程的输出参数是代标识GEN_ID和一个包括消息“lack of ressources(资源缺乏)”和“accepted(已接收)”的消息参数。
图20表示过程END_GETSEQUENCE”的流程图,该过程结束一个读序列并为事务处理后处理系统释放所有属于该读序列的代标识的数据对象,其中它把参数SEQ_STATUS的值改变为“FREE”。该过程的输入参数是GEN_ID。该过程的输出参数是带有消息“Out of scope(超出区域)”或“accepted(已接收)”的一个消息参数。
下面详细说明冲突管理系统,它处理同时发生的事务处理的存取冲突,这些冲突不能由一开始计划的措施完全避免。冲突管理系统基本上包括两个过程,亦即过程TA_CONCTRL和过程GEN_CONCTRL,前者处理事务处理在由事务处理管理系统控制的阶段发生的存取冲突,后者处理事务处理在由代管理系统控制的阶段发生的存取冲突。
图21表示过程TA_CONCTRL的流程图,它嵌入在过程ALLOC_TGSE中,并在两个事务处理想要把它们的软结构通过数据存取路径的同一数据连接字段与一个数据对象连接时,处理事务处理在准备阶段的存取冲突。为解决这种冲突,数据连接字段(data linkfield)除了指针字段之外还包含一个访问字段,如果该访问字段尚未锁定,也就是说如果无任何其它的事务处理标识在该访问字段存储的话,事务处理把它的事务处理标识存储在其中。然后通过存储指向软结构的指针实现软结构与数据存取路径的连接。一个在事务处理的范围内应该与一个规定的数据连接字段连接的软结构当一个其它的活动的事务处理已经占用该数据连接字段的访问字段时,处于一个碰撞冲突中。这种冲突的协调如下调节- 继续执行首先为一个数据对象保留访问字段的处在准备阶段的事务处理,拒绝其它事务处理;- 已经到达活动阶段的事务处理不再由于存取冲突而拒绝。
图22表示过程GEN_CONCTRL的流程图,它嵌入在事务处理后处理系统的过程POSTPROCR_TGSE中并处理发生在事务处理后处理系统和在事务处理的生成阶段的读序列之间的冲突。更准确地说,过程GEN_CONCTRL在低优先级的事务处理后处理的场合当一个读序列要存取该数据代时避免一个数据代被删除。与此相对应的是在一个在存取控制系统资源缺乏的情况下要执行的高优先级的事务处理后处理的场合,读序列被拒绝,该数据代被删除。
下面根据附图23、24和25详细说明在一个事务处理或者在一个读序列中为执行这一单个动作而联合在一起的的多个单个动作或者更准确地说单个过程。
图23表示过程GET,它包含在一个用户模块中并执行一个单个的读操作,此时它既能在一个事务处理的范围内,也能在一个读序列的范围内被调用。过程GET的输入参数是该读操作的一个标识和一个通过数据存取路径引向数据对象的逻辑键。当过程GET在一个事务处理之内使用时,该事务处理的标识涉及一个事务处理标识TA_ID。在另外的场合,亦即当在一个读序列中使用过程GET时,该标识涉及一个代标识GEN_ID。过程GET的输出参数是数据对象以及一个返回控制消息的消息参数。
接着根据逻辑键叙述数据存取路径的表。
图24表示一个数据存取路径的示例结构,它包含多个表并存储在不依赖于用户的数据模块VLP中。数据存取路径包括一个其表元素表示指向数据块UB的指针的数据块表UBL,以及在一个块UB内的一个对象组表OCL和数据对象表DOL。逻辑键包括所述表的索引,亦即索引UBL_IX、OCL_IX和DOL_IX,根据这些索引最后可以查明指向一个数据对象OCI亦即一个软结构TGSE的指针。
首先过程GET遍历数据存取路径,其中它调用在不依赖用户的中央数据池VLP中实现的过程RD_BLK。该过程作为返回值提供指向数据对象表DOL的物理指针。在事务处理的场合该指针仅使用在跟随该事务处理的准备阶段的活动阶段,以执行真正的存取。
接着调用带参数“指向数据对象表DOL的指针”和“DOL_IX”的过程ACCESS_OCI。该过程通常检查DOL的头部并查明是否交给的参数“DOL_IX”涉及一个有效的索引。
如果索引DOL_IX适合,则接着分析表DOL相应于索引DOL_IX的表字段。在此检查在表字段的访问字段存储的标识ID是否涉及一个事务处理标识或者一个代标识。这在图23中通过一个分支框表示。
如果它涉及的是一个代标识,则根据过程EVAL_GENTREE使用与数据存取路径连接的代树,之后返回相应于代标识的指向该数据对象的物理指针。
如果标识ID涉及的是一个事务处理标识,则调用过程ALLOC_TGSE,它通过过程SET准备一个随之进行的写操作,并相对于其它事务处理封锁该数据对象。这将产生下面的结果,在该事务处理活动阶段,事务处理后处理系统不能执行有关该数据对象的任何操作。
针对用户的数据模块GMI包括一个另外的过程SET,它在事务处理中修改一个数据对象。该过程的入口参数是事务处理标识TA_ID、一个引向数据存取路径的逻辑键和一个指向新近要接收的数据的指针以及一个该新数据的长度参数。出口参数是一个用于返回消息的参数。
过程SET和过程GET一样包括借助于过程RD_BLK和ACCESS_OCI执行的数据存取。之后调用在CTCC中包含的过程ALLOC_TGSE,它请求一个新的软结构TGSE并把新数据或者新数据对象复制到该软结构中。如果过程SET通过过程GET已经准备好,则不再分配所述新软结构。
针对用户的数据模块另外还包括把一个对象类扩展为一个数据对象的过程CREATE,和把一个对象类缩小为一个数据对象的过程DELETE。所述两个过程对说明本发明没有意义,因此不再详细说明。
权利要求
1.一个实时系统的数据管理系统,具有a)一个事务处理管理系统(TMS),它控制用户和数据管理系统之间的事务处理,这里的事务处理指的是一系列对逻辑上彼此联系的数据的存取;b)一个存取数据结构(TGSE),它由事务处理管理系统在一个事务处理的范围内插入在一个要修改的数据对象的存取路径中,并包括一个通往该数据对象的旧映象的第一出口和通往该数据对象的新映象的第二出口的分支口;c)一个代管理系统(GMS),它在事务处理结束后根据由事务处理插入的存取数据结构(TGSE)管理在事务处理的范围内产生的新的数据代。
2.根据权利要求1的一个实时系统的数据管理系统,其特征在于,一个管理-数据结构(TGL),借助于它,事务处理管理系统通过用一个确定的代标识(GEN_ID)链接到一个数据代来组成在一个事务处理的范围内插入的存取数据结构(TGSE),这里该代标识接着交给代管理系统用于管理这样组成的数据代。
3.根据权利要求1或2的一个实时系统的数据管理系统,其特征在于,代管理系统包括一个读-管理-系统(LMS),它控制逻辑上联系的存取,即所谓的读序列,这里LMS使用交给代管理系统的代标识(GEN_ID)执行一个一致的读序列存取。
4.根据权利要求1到3中任何一个权利要求的一个实时系统的数据管理系统,其特征在于,存取数据结构(TGSE)包括一个闸门字段(TA_ID),借助于它,事务处理可以通过存储一个事务处理标识(TA_ID)只为自己保留对位于其后的一个数据对象的存取。
5.根据权利要求1到4中任何一个权利要求的一个实时系统的数据管理系统,其特征在于,存取数据结构(TGSE)动态分配到数据对象。
6.根据权利要求5的一个实时系统的数据管理系统,其特征在于,如此构造存取数据结构(TGSE)的数据布局,使得一个存取数据结构(TGSE)的分支口的第一出口也能指向一个老的存取数据结构(TGSE)。
全文摘要
实时系统的数据管理系统应该为用户系统提供对不同数据代的快速一致的联机管理。根据本发明,该任务通过一个存取数据结构实现,它允许代管理系统根据同一数据对象管理各种先前已由事务处理管理系统(TMS)为执行事务处理而使用过的数据代。
文档编号G06F12/00GK1151796SQ95193916
公开日1997年6月11日 申请日期1995年5月3日 优先权日1994年5月10日
发明者S·克鲁斯什, D·鲁克斯, S·兰, J·兰特曼 申请人:西门子公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1