一個實時系統的數據管理系統的製作方法
2023-10-06 13:25:44
專利名稱:一個實時系統的數據管理系統的製作方法
實時系統的數據管理系統應該為它的應用系統提供快速可靠(一致)的對不同數據代(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·蘭特曼 申請人:西門子公司