專利名稱:圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法
技術領域:
本發(fā)明涉及一種圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法。
背景技術:
通常在數(shù)據(jù)庫系統(tǒng)中,事務是工作的離散單位。例如,一個數(shù)據(jù)庫事務可以是修改一個用戶的帳戶平衡或庫存項的寫操作。聯(lián)機事務處理系統(tǒng)實時地采集處理與事務相連的數(shù)據(jù)以及共享數(shù)據(jù)庫和其它文件的地位的變化。在聯(lián)機事務處理中,事務是被立即執(zhí)行的。 在單一用戶、單一數(shù)據(jù)庫環(huán)境下執(zhí)行事務是簡單的,這是因為沒有沖突問題或對數(shù)據(jù)庫間同步的需求。在一個分布式環(huán)境下,寫操作經(jīng)常并行地在多個數(shù)據(jù)庫服務器上發(fā)生。這樣的并發(fā)事務處理需要一個“卷回”機制,以保證在一次寫操作中系統(tǒng)失效的情況下,仍保證數(shù)據(jù)庫的完整性。事務要么一起確認,要么放棄。如果一個或多個與事務有關的系統(tǒng)響應不一致,這意味著系統(tǒng)或通信可能出現(xiàn)了故障,因而就會放棄一個事務??梢钥闯?,當多個用戶試圖同時改變數(shù)據(jù)的同一塊時,就出現(xiàn)了沖突問題。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提出了一種圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法,它可在圖形數(shù)據(jù)庫未開啟事務時刪除數(shù)據(jù)。本發(fā)明采用的技術方案如下一種圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法,其特征在于非聯(lián)機事務處理自上而下分為三層最上層為暴露給外部調用程序的API ;中間層為事務邏輯控制層,按操作類別分為同步區(qū)與非同步區(qū),同步區(qū)意味著在同一時間只能有一個操作進行,其他操作在進入同步區(qū)之間均處于等待狀態(tài),該機制利用 Java語言的線程同步鎖定特性實現(xiàn),非同步區(qū)的操作則不受限制,在任何時間均可以進行;最下層為存儲數(shù)據(jù)的DataSet操作抽象層,在DataSet中,保存有聯(lián)機事務自身的狀態(tài)信息,以及數(shù)據(jù)的事務狀態(tài)屬性信息;用Relation描述圖形數(shù)據(jù)庫中的節(jié)點與節(jié)點之間的關系,每一個Relation均有一個全局唯一的名稱、一個源Node、一個目標Node,將每一個Relation的定義信息保存在名稱為graphic_db_relation_def的DataSet中,該DataSet的數(shù)據(jù)結構如下
權利要求
1. 一種圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法,其特征在于 非聯(lián)機事務處理自上而下分為三層 最上層為暴露給外部調用程序的API ;中間層為事務邏輯控制層,按操作類別分為同步區(qū)與非同步區(qū),同步區(qū)意味著在同一時間只能有一個操作進行,其他操作在進入同步區(qū)之間均處于等待狀態(tài),該機制利用Java 語言的線程同步鎖定特性實現(xiàn),非同步區(qū)的操作則不受限制,在任何時間均可以進行;最下層為存儲數(shù)據(jù)的DataSet操作抽象層,在DataSet中,保存有聯(lián)機事務自身的狀態(tài)信息,以及數(shù)據(jù)的事務狀態(tài)屬性信息;用Relation描述圖形數(shù)據(jù)庫中的節(jié)點與節(jié)點之間的關系,每一個Relation均有一個全局唯一的名稱、一個源Node、一個目標Node,將每一個Relation的定義信息保存在名稱為 graphic_db_relation_def 的 DataSet 中,該 DataSet 的數(shù)據(jù)結構如下
2.如權利要求1所述的圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法,其特征在于 在所述步驟1)中,API傳入如下參數(shù)nodejame,指定將要刪除哪個Node中的數(shù)據(jù); filter,過濾條件。
3.如權利要求2所述的圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法,其特征在于 在所述步驟幻中,確定待刪除數(shù)據(jù)的詳細步驟如下通過客戶程序調用API時傳入的filter參數(shù)作為過濾條件,對與API參數(shù)nodejame 同名的DatMet中的數(shù)據(jù)進行過濾,所有與過濾條件相匹配的數(shù)據(jù)均為待刪除的數(shù)據(jù)記錄。
4.如權利要求2所述的圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法,其特征在于 在所述步驟4)中,檢查待刪除數(shù)據(jù)是否被事務鎖定的詳細步驟如下檢查每一條待刪除數(shù)據(jù),如果有任何一條記錄列_dirty的值為-1,且列_tX_no的值既不為空也不等于當前事務編號,則意味著在待刪除數(shù)據(jù)中存在被其他事務鎖定的情況。
5.如權利要求2所述的圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法,其特征在于 在所述步驟幻中,檢查與待刪除數(shù)據(jù)相關的Relation是否被事務鎖定的詳細步驟如下查詢名稱為 graphic_db_relation_record_def 的 DataSet,過濾獲取所有 source_ record或target_reCOrd列的值與待刪除數(shù)據(jù)的RID相等的記錄,依次檢查這些記錄的_ tx_no字段,如果有任何一條記錄_tX_no列的值不為空,則意味著相關數(shù)據(jù)的Relation存在被其他事務鎖定的情況。
全文摘要
本發(fā)明涉及圖形數(shù)據(jù)庫非聯(lián)機事務中刪除數(shù)據(jù)的控制方法,包括步驟1)客戶程序調用API,將參數(shù)數(shù)據(jù)傳給圖形數(shù)據(jù)庫;2)進入同步區(qū);3)確定待刪除數(shù)據(jù);4)檢查待刪除數(shù)據(jù)是否被事務鎖定,若鎖定則轉步驟8),否則繼續(xù)執(zhí)行下面的步驟;5)檢查與待刪除數(shù)據(jù)相關的Relation是否被事務鎖定,若鎖定則轉步驟8),否則繼續(xù)執(zhí)行下面的步驟;6)從DataSet中物理刪除在步驟3)中確定的待刪除數(shù)據(jù);7)退出同步區(qū),程序結束;8)等待一段時間;9)判斷操作是否超時,若超時則退出執(zhí)行邏輯,否則轉步驟2)再次進入同步區(qū)。本發(fā)明的優(yōu)點是作為聯(lián)機事務中刪除數(shù)據(jù)的有效補充,在刪除數(shù)據(jù)的應用場景中,如無需開啟聯(lián)機事務,則可調用非聯(lián)機事務的API直接刪除數(shù)據(jù)。
文檔編號G06F9/46GK102193978SQ201110072939
公開日2011年9月21日 申請日期2011年3月25日 優(yōu)先權日2011年3月25日
發(fā)明者于洪方, 井衛(wèi)軍, 劉健, 蔣建平, 陳升, 陳晞 申請人:北京世紀互聯(lián)工程技術服務有限公司, 北京云快線軟件服務有限公司