專利名稱:基于圖形數(shù)據(jù)庫的聯(lián)機事務(wù)處理系統(tǒng)及數(shù)據(jù)插入方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別是涉及基于圖形數(shù)據(jù)庫的聯(lián)機事務(wù)處理系統(tǒng)及數(shù)據(jù)插入方法。
背景技術(shù):
數(shù)據(jù)庫(Database)可以認為是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲和管理數(shù)據(jù)的倉庫,而圖形數(shù)據(jù)庫(graphic database)是利用計算機將點、線、面等圖形基本元素按一定數(shù)據(jù)結(jié)構(gòu)進行存儲的數(shù)據(jù)集合。而關(guān)系數(shù)據(jù)庫,是建立在關(guān)系數(shù)據(jù)庫模型基礎(chǔ)上的數(shù)據(jù)庫,借助于集合代數(shù)等概念和方法來處理數(shù)據(jù)庫中的數(shù)據(jù)。在關(guān)系數(shù)據(jù)庫中,采用單一的數(shù)據(jù)結(jié)構(gòu)即是關(guān)系來描述數(shù)據(jù),即是關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)之間的各種聯(lián)系均用關(guān)系來表示。數(shù)據(jù)的邏輯結(jié)構(gòu)可以采用二維表來實現(xiàn)。通常在數(shù)據(jù)庫系統(tǒng)中,事務(wù)是工作的離散單位。例如,一個數(shù)據(jù)庫事務(wù)可以是修改一個用戶的帳戶平衡或庫存項的寫操作。聯(lián)機事務(wù)處理系統(tǒng)(On-Line Transaction Processing, 0LTP)實時地采集處理與事務(wù)相連的數(shù)據(jù)以及共享數(shù)據(jù)庫和其它文件的地位的變化,在聯(lián)機事務(wù)處理中,事務(wù)是被立即執(zhí)行的,一批事務(wù)被存儲一段時間,然后再被執(zhí)行,假設(shè)這些事務(wù)可以完成,OLTP的結(jié)果可以在這個數(shù)據(jù)庫中立即獲得。聯(lián)機事務(wù)處理以實時的方式發(fā)生。例如民航定票系統(tǒng)和銀行ATM機是聯(lián)機事務(wù)處理系統(tǒng)的例子。在單一用戶、單一數(shù)據(jù)庫環(huán)境下執(zhí)行事務(wù)是簡單的,這是因為沒有沖突問題或?qū)?shù)據(jù)庫間同步的需求。一般情況下,大多數(shù)OLTP系統(tǒng)在大型計算機系統(tǒng)上實現(xiàn),如果一個事務(wù)必須在多個場地進行修改,那么就需要管理機制來防止重寫數(shù)據(jù)并提供同步。而在一個分布式環(huán)境下,寫操作經(jīng)常并行地在多個數(shù)據(jù)庫服務(wù)器上發(fā)生,這樣的并發(fā)事務(wù)處理需要一個“卷回” 機制,以保證在一次寫操作中系統(tǒng)失效的情況下,仍保證數(shù)據(jù)庫的完整性。這就導致了事務(wù)可能一起確認也可能放棄的結(jié)果。而如果一個或多個與事務(wù)有關(guān)的系統(tǒng)響應(yīng)不一致,就意味著系統(tǒng)或通信可能出現(xiàn)了故障,因而就會放棄一個事務(wù)??梢詮纳鲜鲞^程中看出,當多個用戶試圖同時改變數(shù)據(jù)的同一塊時,就出現(xiàn)了沖突問題。進一步的,不管是事務(wù)一起確認還是放棄,都會導致數(shù)據(jù)庫中數(shù)據(jù)的不完整。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種應(yīng)用于圖形數(shù)據(jù)庫聯(lián)機事務(wù)中的數(shù)據(jù)插入方法,用以解決現(xiàn)有技術(shù)中存在沖突以及沖突導致的數(shù)據(jù)庫中數(shù)據(jù)不完整的技術(shù)問題。本發(fā)明的另一個目的是將上述構(gòu)思應(yīng)用于具體的應(yīng)用環(huán)境中,提供一種應(yīng)用于圖形數(shù)據(jù)庫聯(lián)機事務(wù)中的數(shù)據(jù)插入系統(tǒng),從而保證該方法的實現(xiàn)和應(yīng)用。為解決上述技術(shù)問題,本發(fā)明實施例提供了一種基于圖形數(shù)據(jù)庫的數(shù)據(jù)插入方法,該方法包括預(yù)先創(chuàng)建一個新事務(wù),接收所述新事務(wù)的事務(wù)標識、待插入數(shù)據(jù)和圖形數(shù)據(jù)庫中的目標數(shù)據(jù)集標識;
鎖定所述事務(wù)標識對應(yīng)的當前事務(wù)記錄,以便于圖形數(shù)據(jù)庫的當前操作為所述新事務(wù)下的數(shù)據(jù)插入;所述數(shù)據(jù)插入具體包括將所述目標數(shù)據(jù)集標識添加至所述當前事務(wù)記錄的關(guān)聯(lián)節(jié)點字段中,并將所述待插入數(shù)據(jù)寫入所述目標數(shù)據(jù)集;解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。優(yōu)選的,所述創(chuàng)建一個新事務(wù),具體包括生成一個全局唯一的事務(wù)標識,并獲取第一系統(tǒng)時間;在事務(wù)的狀態(tài)數(shù)據(jù)的數(shù)據(jù)集中插入一條當前事務(wù)記錄,所述當前事務(wù)記錄包括所述事務(wù)標識和第一系統(tǒng)時間。優(yōu)選的,還包括當所述待插入數(shù)據(jù)插入完畢后,將所述第一系統(tǒng)時間更新為插入完畢時的第二系統(tǒng)時間。優(yōu)選的,所述將所述待插入數(shù)據(jù)寫入所述目標數(shù)據(jù)集,具體包括將所述目標數(shù)據(jù)集標識對應(yīng)的目標數(shù)據(jù)記錄標志為從屬于所述新事務(wù);將所述目標數(shù)據(jù)集的事務(wù)編號更新為所述新事務(wù)的事務(wù)標識。優(yōu)選的,所述接收所述新事務(wù)的事務(wù)標識、待插入數(shù)據(jù)和目標數(shù)據(jù)集標識之后,還包括判斷所述新事務(wù)是否有效,如果是,則執(zhí)行所述按照所述事務(wù)標識鎖定所述事務(wù)標識對應(yīng)的當前事務(wù)記錄的步驟,如果否,則結(jié)束本次數(shù)據(jù)插入過程。優(yōu)選的,所述解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄之后,還包括將所述事務(wù)標識對應(yīng)的事務(wù)提交狀態(tài)標識為有效;將目標數(shù)據(jù)集標識對應(yīng)的目標數(shù)據(jù)記錄標識為不從屬于所述新事務(wù);并將所述目標數(shù)據(jù)記錄中的目標數(shù)據(jù)集標識的字段值更新為空;刪除所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。優(yōu)選的,所述解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄之后,還包括將所述事務(wù)標識對應(yīng)的事務(wù)回滾狀態(tài)標識為有效;刪除與所述目標數(shù)據(jù)集標識對應(yīng)目標數(shù)據(jù)記錄;刪除與所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。本發(fā)明實施例還提供了一種基于圖形數(shù)據(jù)庫的聯(lián)機事務(wù)處理系統(tǒng),包括創(chuàng)建模塊,用于創(chuàng)建一個新事務(wù);接收模塊,用于接收所述新事務(wù)的事務(wù)標識、待插入數(shù)據(jù)和圖形數(shù)據(jù)庫中的目標數(shù)據(jù)集標識;鎖定模塊,用于所述事務(wù)標識對應(yīng)的當前事務(wù)記錄,以便于圖形數(shù)據(jù)庫的當前操作為所述新事務(wù)下的數(shù)據(jù)插入;所述數(shù)據(jù)插入具體包括將所述目標數(shù)據(jù)集標識添加至所述當前事務(wù)記錄的關(guān)聯(lián)節(jié)點字段中,并將所述待插入數(shù)據(jù)寫入所述目標數(shù)據(jù)集;解鎖模塊,用于解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。優(yōu)選的,還包括標識提交狀態(tài)模塊,將所述事務(wù)標識對應(yīng)的事務(wù)提交狀態(tài)標識為有效;標識臟數(shù)據(jù)模塊,用于將目標數(shù)據(jù)集標識對應(yīng)的目標數(shù)據(jù)記錄標識為不從屬于所述新事務(wù);并將所述目標數(shù)據(jù)記錄中的目標數(shù)據(jù)集標識的字段值更新為空;
第一刪除模塊,用于刪除所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。優(yōu)選的,還包括標識回滾狀態(tài)模塊,用于將所述事務(wù)標識對應(yīng)的事務(wù)回滾狀態(tài)標識為有效;第二刪除模塊,用于刪除與所述目標數(shù)據(jù)集標識對應(yīng)目標數(shù)據(jù)記錄;刪除與所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點在本發(fā)明實施例中,可以保證在基于圖形數(shù)據(jù)庫的聯(lián)機事務(wù)處理系統(tǒng)中插入數(shù)據(jù)時,可以解決現(xiàn)有技術(shù)中存在沖突以及沖突導致的數(shù)據(jù)庫中數(shù)據(jù)不完整的技術(shù)問題,因為在進行當前的數(shù)據(jù)插入時,會對當前事務(wù)記錄進行鎖定,此時即便有其他的數(shù)據(jù)插入操作, 也會處于等待狀態(tài)。因此,本實施例所公開的數(shù)據(jù)插入方法,能夠保證數(shù)據(jù)的完整性。
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本發(fā)明中聯(lián)機事務(wù)處理系統(tǒng)的分層結(jié)構(gòu)示意圖;圖2為本發(fā)明的一種基于圖形數(shù)據(jù)庫的數(shù)據(jù)插入方法實施例1的流程圖;圖3是本發(fā)明方法實施例1中步驟201的流程圖;圖4是本發(fā)明的一種基于圖形數(shù)據(jù)庫的數(shù)據(jù)插入方法實施例2的流程圖;圖5是本發(fā)明的一種基于圖形數(shù)據(jù)庫的數(shù)據(jù)插入方法實施例3的流程圖;圖6是本發(fā)明的一種基于圖形數(shù)據(jù)庫的數(shù)據(jù)插入方法實施例4的流程圖;圖7是本發(fā)明的一種應(yīng)用于圖形數(shù)據(jù)庫聯(lián)機事務(wù)中的數(shù)據(jù)插入系統(tǒng)實施例1的結(jié)構(gòu)示意圖;圖8是本發(fā)明的一種應(yīng)用于圖形數(shù)據(jù)庫聯(lián)機事務(wù)中的數(shù)據(jù)插入系統(tǒng)實施例2的結(jié)構(gòu)示意圖;圖9是本發(fā)明的一種應(yīng)用于圖形數(shù)據(jù)庫聯(lián)機事務(wù)中的數(shù)據(jù)插入系統(tǒng)實施例3的結(jié)構(gòu)示意圖。
具體實施例方式為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步詳細的說明。本發(fā)明的聯(lián)機事務(wù)處理系統(tǒng)可以采用自上而下的三層結(jié)構(gòu)實現(xiàn),參考圖1所示,為本發(fā)明中聯(lián)機事務(wù)處理系統(tǒng)的分層結(jié)構(gòu)示意圖。最上層為面向外部調(diào)用程序的 API (Application Programming Interface,應(yīng)用程序編程接口)。API 是一些預(yù)先定義的函數(shù),目的是提供應(yīng)用程序與用戶基于某軟件或硬件的以訪問一組例程的能力,而又無需訪問源碼,或理解內(nèi)部工作機制的細節(jié)。中間層為事務(wù)邏輯控制層,按操作類別分為同步區(qū)與非同步區(qū),同步區(qū)中操作內(nèi)容意味著在同一時間只能有一個操作進行,在該操作進行時其他操作在進入同步區(qū)之間均處理等待狀態(tài),該方式可以利用Java語言的線程同步鎖定特性實現(xiàn)。同步區(qū)的操作包括事務(wù)過期檢查、插入數(shù)據(jù)控制、刪除數(shù)據(jù)控制、修改數(shù)據(jù)控制和災(zāi)難恢復(fù)。而非同步區(qū)的操作則不受限制,在任何時間均可以進行。非同步區(qū)的操作包括查詢數(shù)據(jù)控制。最下層為存儲數(shù)據(jù)的圖形數(shù)據(jù)庫中的數(shù)據(jù)集(DatMet)接口,在DatMet 中保存有聯(lián)機事務(wù)自身的狀態(tài)信息,以及數(shù)據(jù)的事務(wù)狀態(tài)屬性信息。在圖形數(shù)據(jù)庫中,聯(lián)機事務(wù)的狀態(tài)信息可以存儲在名稱為graphiC_db_tX_def的 DataSet中,該DataSet需要滿足的數(shù)據(jù)結(jié)構(gòu)可以如表1所示表 權(quán)利要求
1.一種基于圖形數(shù)據(jù)庫的數(shù)據(jù)插入方法,其特征在于,預(yù)先創(chuàng)建一個新事務(wù),該方法包括接收所述新事務(wù)的事務(wù)標識、待插入數(shù)據(jù)和圖形數(shù)據(jù)庫中的目標數(shù)據(jù)集標識; 鎖定所述事務(wù)標識對應(yīng)的當前事務(wù)記錄,以便于圖形數(shù)據(jù)庫的當前操作為所述新事務(wù)下的數(shù)據(jù)插入;所述數(shù)據(jù)插入具體包括將所述目標數(shù)據(jù)集標識添加至所述當前事務(wù)記錄的關(guān)聯(lián)節(jié)點字段中,并將所述待插入數(shù)據(jù)寫入所述目標數(shù)據(jù)集; 解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。
2.如權(quán)利要求1所述的方法,其特征在于,所述創(chuàng)建一個新事務(wù),具體包括 生成一個全局唯一的事務(wù)標識,并獲取第一系統(tǒng)時間;在事務(wù)的狀態(tài)數(shù)據(jù)的數(shù)據(jù)集中插入一條當前事務(wù)記錄,所述當前事務(wù)記錄包括所述事務(wù)標識和第一系統(tǒng)時間。
3.如權(quán)利要求2所述的方法,其特征在于,還包括當所述待插入數(shù)據(jù)插入完畢后,將所述第一系統(tǒng)時間更新為插入完畢時的第二系統(tǒng)時間。
4.如權(quán)利要求1所述的方法,其特征在于,所述將所述待插入數(shù)據(jù)寫入所述目標數(shù)據(jù)集,具體包括將所述目標數(shù)據(jù)集標識對應(yīng)的目標數(shù)據(jù)記錄標志為從屬于所述新事務(wù); 將所述目標數(shù)據(jù)集的事務(wù)編號更新為所述新事務(wù)的事務(wù)標識。
5.如權(quán)利要求1所述的方法,其特征在于,所述接收所述新事務(wù)的事務(wù)標識、待插入數(shù)據(jù)和目標數(shù)據(jù)集標識之后,還包括判斷所述新事務(wù)是否有效,如果是,則執(zhí)行所述按照所述事務(wù)標識鎖定所述事務(wù)標識對應(yīng)的當前事務(wù)記錄的步驟,如果否,則結(jié)束本次數(shù)據(jù)插入過程。
6.如權(quán)利要求1所述的方法,其特征在于,所述解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄之后,還包括將所述事務(wù)標識對應(yīng)的事務(wù)提交狀態(tài)標識為有效;將目標數(shù)據(jù)集標識對應(yīng)的目標數(shù)據(jù)記錄標識為不從屬于所述新事務(wù);并將所述目標數(shù)據(jù)記錄中的目標數(shù)據(jù)集標識的字段值更新為空; 刪除所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。
7.如權(quán)利要求1所述的方法,其特征在于,所述解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄之后,還包括將所述事務(wù)標識對應(yīng)的事務(wù)回滾狀態(tài)標識為有效; 刪除與所述目標數(shù)據(jù)集標識對應(yīng)目標數(shù)據(jù)記錄; 刪除與所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。
8.一種基于圖形數(shù)據(jù)庫的聯(lián)機事務(wù)處理系統(tǒng),其特征在于,包括 創(chuàng)建模塊,用于創(chuàng)建一個新事務(wù);接收模塊,用于接收所述新事務(wù)的事務(wù)標識、待插入數(shù)據(jù)和圖形數(shù)據(jù)庫中的目標數(shù)據(jù)集標識;鎖定模塊,用于所述事務(wù)標識對應(yīng)的當前事務(wù)記錄,以便于圖形數(shù)據(jù)庫的當前操作為所述新事務(wù)下的數(shù)據(jù)插入;所述數(shù)據(jù)插入具體包括將所述目標數(shù)據(jù)集標識添加至所述當前事務(wù)記錄的關(guān)聯(lián)節(jié)點字段中,并將所述待插入數(shù)據(jù)寫入所述目標數(shù)據(jù)集; 解鎖模塊,用于解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,還包括標識提交狀態(tài)模塊,將所述事務(wù)標識對應(yīng)的事務(wù)提交狀態(tài)標識為有效; 標識臟數(shù)據(jù)模塊,用于將目標數(shù)據(jù)集標識對應(yīng)的目標數(shù)據(jù)記錄標識為不從屬于所述新事務(wù);并將所述目標數(shù)據(jù)記錄中的目標數(shù)據(jù)集標識的字段值更新為空; 第一刪除模塊,用于刪除所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,還包括標識回滾狀態(tài)模塊,用于將所述事務(wù)標識對應(yīng)的事務(wù)回滾狀態(tài)標識為有效; 第二刪除模塊,用于刪除與所述目標數(shù)據(jù)集標識對應(yīng)目標數(shù)據(jù)記錄; 刪除與所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。
全文摘要
本發(fā)明提供了基于圖形數(shù)據(jù)庫的聯(lián)機事務(wù)處理系統(tǒng)及數(shù)據(jù)插入方法,所述方法包括預(yù)先創(chuàng)建一個新事務(wù),接收所述新事務(wù)的事務(wù)標識、待插入數(shù)據(jù)和圖形數(shù)據(jù)庫中的目標數(shù)據(jù)集標識;鎖定所述事務(wù)標識對應(yīng)的當前事務(wù)記錄,以便于圖形數(shù)據(jù)庫的當前操作為所述新事務(wù)下的數(shù)據(jù)插入;所述數(shù)據(jù)插入具體包括將所述目標數(shù)據(jù)集標識添加至所述當前事務(wù)記錄的關(guān)聯(lián)節(jié)點字段中,并將所述待插入數(shù)據(jù)寫入所述目標數(shù)據(jù)集;解鎖所述事務(wù)標識對應(yīng)的當前事務(wù)記錄。本發(fā)明實施例可以解決現(xiàn)有技術(shù)中存在沖突以及沖突導致的數(shù)據(jù)庫中數(shù)據(jù)不完整的技術(shù)問題。
文檔編號G06F17/30GK102193989SQ20111007379
公開日2011年9月21日 申請日期2011年3月25日 優(yōu)先權(quán)日2011年3月25日
發(fā)明者于洪方, 井衛(wèi)軍, 劉健, 姚福源, 蔣建平, 陳升 申請人:北京世紀互聯(lián)工程技術(shù)服務(wù)有限公司, 北京云快線軟件服務(wù)有限公司