專(zhuān)利名稱(chēng):基于oltp的數(shù)據(jù)刪除方法、系統(tǒng)及圖形數(shù)據(jù)庫(kù)服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本申請(qǐng)涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是涉及一種基于0LTP(0ri-Line Transaction Processing,聯(lián)機(jī)事務(wù)處理系統(tǒng))的數(shù)據(jù)刪除方法、系統(tǒng)及圖形數(shù)據(jù)庫(kù)服務(wù)器。
背景技術(shù):
OLTP是實(shí)時(shí)采集處理與事務(wù)相關(guān)聯(lián)的數(shù)據(jù),以及共享數(shù)據(jù)庫(kù)和其它文件間變化的 系統(tǒng)。在進(jìn)行聯(lián)機(jī)事務(wù)處理時(shí),待處理原始數(shù)據(jù)可以立即傳送到計(jì)算中心進(jìn)行處理,并在很 短的時(shí)間內(nèi)給出處理結(jié)果,以實(shí)現(xiàn)對(duì)數(shù)據(jù)的即時(shí)處理和即時(shí)應(yīng)答?;诜植际江h(huán)境的OLTP系統(tǒng)中,需要維護(hù)數(shù)據(jù)庫(kù)的完整性,現(xiàn)有技術(shù)中,由于 OLTP的操作復(fù)雜性,及快速輸入/輸出的需求,大多數(shù)OLTP在大型計(jì)算機(jī)系統(tǒng)上實(shí)現(xiàn),當(dāng)一 個(gè)事務(wù)涉及在多個(gè)節(jié)點(diǎn)(Node)上刪除數(shù)據(jù)時(shí),容易造成數(shù)據(jù)的重寫(xiě)和不同步;并且,特別 當(dāng)事務(wù)失效時(shí),難以進(jìn)行恢復(fù),容易導(dǎo)致數(shù)據(jù)庫(kù)不完整。
發(fā)明內(nèi)容
本申請(qǐng)實(shí)施例提供了一種基于OLTP的數(shù)據(jù)刪除方法、系統(tǒng)及圖形數(shù)據(jù)庫(kù)服務(wù)器, 以解決現(xiàn)有分布式OLTP中數(shù)據(jù)刪除時(shí)容易造成數(shù)據(jù)重寫(xiě)和不同步的問(wèn)題。為了解決上述技術(shù)問(wèn)題,本申請(qǐng)實(shí)施例公開(kāi)了如下技術(shù)方案一種基于聯(lián)機(jī)事務(wù)處理系統(tǒng)OLTP的數(shù)據(jù)刪除方法,包括接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)臄?shù)據(jù)刪除命令,所述數(shù)據(jù)刪除 命令中包含事務(wù)標(biāo)識(shí)、節(jié)點(diǎn)名稱(chēng)和過(guò)濾條件;根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記 錄中;根據(jù)節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表,從所述節(jié)點(diǎn)屬性狀態(tài)信息表中獲取符合 所述過(guò)濾條件的數(shù)據(jù)記錄;逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄。還包括接收客戶(hù)端通過(guò)調(diào)用API傳輸?shù)氖聞?wù)創(chuàng)建命令;根據(jù)所述事務(wù)創(chuàng)建命令在事務(wù)屬性狀態(tài)信息表中生成一條新的事務(wù)記錄,并為所 述新的事務(wù)記錄分配唯一的事務(wù)標(biāo)識(shí);將所述事務(wù)記錄的提交屬性和回滾屬性設(shè)置為未執(zhí)行。所述根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄后,還包括判斷是否查找到所述事務(wù)記錄;當(dāng)未查找到所述事務(wù)記錄時(shí),結(jié)束流程,當(dāng)查找到所述事務(wù)記錄時(shí),判斷查找到的 所述事務(wù)記錄的提交屬性和回滾屬性是否均為未執(zhí)行;當(dāng)判斷均為未執(zhí)行時(shí),確定所述查找到的事務(wù)記錄為有效事務(wù)記錄,執(zhí)行所述將 所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中的操作,否則,結(jié)束流程。
所述逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄之前,還包括判斷是否有數(shù)據(jù)記錄被其它事務(wù)鎖定;當(dāng)所述數(shù)據(jù)記錄均未被其它事務(wù)鎖定時(shí),執(zhí)行所述逐條刪除符合過(guò)濾條件的數(shù)據(jù) 記錄的操作,否則,在確定所述事務(wù)記錄對(duì)應(yīng)的事務(wù)未超過(guò)預(yù)設(shè)時(shí)間閾值時(shí),返回所述根據(jù) 所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄的操作。所述逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄包括將所述數(shù)據(jù)記錄組成隊(duì)列;順序從所述隊(duì)列中提取一條數(shù)據(jù)記錄;當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),且未標(biāo)記為更新和刪除時(shí),則標(biāo)記刪除所述 數(shù)據(jù)記錄,及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,并物理刪除所述關(guān)聯(lián)數(shù)據(jù)記錄的臟數(shù)據(jù);當(dāng)所述提取的數(shù)據(jù)記錄為臟數(shù)據(jù),且為新插入的數(shù)據(jù)記錄時(shí),則物理刪除所述數(shù) 據(jù)記錄,并物理刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄;當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),未標(biāo)記為刪除,且已標(biāo)記為更新時(shí),則物理刪 除所述數(shù)據(jù)記錄的副本記錄,標(biāo)記刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,并物理刪除所述關(guān) 聯(lián)數(shù)據(jù)記錄的臟數(shù)據(jù)。還包括完成逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄后,執(zhí)行數(shù)據(jù)刪除的事務(wù)提交操作; 或,對(duì)刪除后的數(shù)據(jù)記錄進(jìn)行回滾操作。所述事務(wù)提交操作包括接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí);根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄;當(dāng)查找到有效的事務(wù)記錄時(shí),將所述事務(wù)記錄的提交屬性設(shè)置為已執(zhí)行;刪除鎖定的數(shù)據(jù)記錄,以及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄;將所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。所述回滾操作包括接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí);根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄;當(dāng)查找到有效的事務(wù)記錄時(shí),將所述事務(wù)記錄的回滾屬性設(shè)置為已執(zhí)行;解除對(duì)所述數(shù)據(jù)記錄的鎖定,以及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄的鎖定;將所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。一種基于OLTP的數(shù)據(jù)刪除系統(tǒng),包括圖形數(shù)據(jù)庫(kù)服務(wù)器和客戶(hù)端,所述客戶(hù)端,用于通過(guò)調(diào)用圖形數(shù)據(jù)庫(kù)服務(wù)器的API,向所述圖形數(shù)據(jù)庫(kù)服務(wù)器傳 輸數(shù)據(jù)刪除命令,所述數(shù)據(jù)刪除命令中包含事務(wù)標(biāo)識(shí)、節(jié)點(diǎn)名稱(chēng)和過(guò)濾條件;所述圖形數(shù)據(jù)庫(kù)服務(wù)器,用于根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將所述節(jié)點(diǎn)名 稱(chēng)添加到查找到的有效事務(wù)記錄中,根據(jù)節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表,從所述節(jié)點(diǎn) 屬性狀態(tài)信息表中獲取符合所述過(guò)濾條件的數(shù)據(jù)記錄,逐條刪除所述符合過(guò)濾條件的數(shù)據(jù) 記錄。所述客戶(hù)端,還用于通過(guò)調(diào)用圖形數(shù)據(jù)庫(kù)服務(wù)器的API,向所述圖形數(shù)據(jù)庫(kù)服務(wù)器 傳輸事務(wù)創(chuàng)建命令;
所述圖形數(shù)據(jù)庫(kù)服務(wù)器,還用于根據(jù)所述事務(wù)創(chuàng)建命令在事務(wù)屬性狀態(tài)信息表中 生成一條新的事務(wù)記錄,并為所述新的事務(wù)記錄分配唯一的事務(wù)標(biāo)識(shí),將所述事務(wù)記錄的 提交屬性和回滾屬性設(shè)置為未執(zhí)行。所述圖形數(shù)據(jù)庫(kù)服務(wù)器,還用于判斷是否查找到所述事務(wù)記錄,當(dāng)未查找到所述 事務(wù)記錄時(shí),結(jié)束流程,當(dāng)查找到所述事務(wù)記錄時(shí),判斷查找到的所述事務(wù)記錄的提交屬性 和回滾屬性是否均為未執(zhí)行,當(dāng)判斷均為未執(zhí)行時(shí),確定所述查找到的事務(wù)記錄為有效事 務(wù)記錄,執(zhí)行所述將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中的操作,否則,結(jié)束流程。所述圖形數(shù)據(jù)庫(kù)服務(wù)器,還用于判斷是否有數(shù)據(jù)記錄被其它事務(wù)鎖定,當(dāng)所述數(shù) 據(jù)記錄均未被其它事務(wù)鎖定時(shí),執(zhí)行所述逐條刪除符合過(guò)濾條件的數(shù)據(jù)記錄的操作,否則, 在確定所述事務(wù)記錄對(duì)應(yīng)的事務(wù)未超過(guò)預(yù)設(shè)時(shí)間閾值時(shí),返回所述根據(jù)所述事務(wù)標(biāo)識(shí)查找 事務(wù)記錄的操作。所述圖形數(shù)據(jù)庫(kù)服務(wù)器,還用于完成逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄后, 執(zhí)行數(shù)據(jù)刪除的事務(wù)提交操作,或者對(duì)刪除后的數(shù)據(jù)記錄進(jìn)行回滾操作。一種圖形數(shù)據(jù)庫(kù)服務(wù)器,包括接收單元,用于接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)臄?shù)據(jù)刪除命 令,所述數(shù)據(jù)刪除命令中包含事務(wù)標(biāo)識(shí)、節(jié)點(diǎn)名稱(chēng)和過(guò)濾條件;查找單元,用于根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將所述節(jié)點(diǎn)名稱(chēng)添加到查找 到的有效事務(wù)記錄中;獲取單元,用于根據(jù)節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表,從所述節(jié)點(diǎn)屬性狀態(tài)信 息表中獲取符合所述過(guò)濾條件的數(shù)據(jù)記錄;刪除單元,用于逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄。述接收單元,還用于接收客戶(hù)端通過(guò)調(diào)用API傳輸?shù)氖聞?wù)創(chuàng)建命令;還包括生成單元,用于根據(jù)所述事務(wù)創(chuàng)建命令在事務(wù)屬性狀態(tài)信息表中生成一條新的事 務(wù)記錄,并為所述新的事務(wù)記錄分配唯一的事務(wù)標(biāo)識(shí);設(shè)置單元,用于將所述事務(wù)記錄的提交屬性和回滾屬性設(shè)置為未執(zhí)行。還包括第一判斷單元,用于判斷是否查找到所述事務(wù)記錄;第一執(zhí)行單元,用于當(dāng)未查找到所述事務(wù)記錄時(shí),結(jié)束流程;所述第一判斷單元,還用于當(dāng)查找到所述事務(wù)記錄時(shí),判斷查找到的所述事務(wù)記 錄的提交屬性和回滾屬性是否均為未執(zhí)行;所述第一執(zhí)行單元,還用于當(dāng)判斷均為未執(zhí)行時(shí),確定所述查找到的事務(wù)記錄為 有效事務(wù)記錄,執(zhí)行所述將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中的操作,否則,結(jié) 束流程。還包括第二判斷單元,用于判斷是否有數(shù)據(jù)記錄被其它事務(wù)鎖定;第二執(zhí)行單元,用于當(dāng)所述數(shù)據(jù)記錄均未被其它事務(wù)鎖定時(shí),觸發(fā)所述刪除單元 執(zhí)行操作,否則,在確定所述事務(wù)記錄對(duì)應(yīng)的事務(wù)未超過(guò)預(yù)設(shè)時(shí)間閾值時(shí),返回所述查找單元執(zhí)行操作。所述刪除單元包括隊(duì)列生成單元,將所述數(shù)據(jù)記錄組成隊(duì)列;記錄提取單元,順序從所述隊(duì)列中提取一條數(shù)據(jù)記錄;標(biāo)記刪除單元,用于當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),且未標(biāo)記為更新和刪除 時(shí),則標(biāo)記刪除所述數(shù)據(jù)記錄,及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,并物理刪除所述關(guān)聯(lián)數(shù)據(jù) 記錄的臟數(shù)據(jù);所述標(biāo)記刪除單元,還用于當(dāng)所述提取的數(shù)據(jù)記錄為臟數(shù)據(jù),且為新插入的數(shù)據(jù) 記錄時(shí),則物理刪除所述數(shù)據(jù)記錄,并物理刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄;所述標(biāo)記刪除單元,還用于當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),未標(biāo)記為刪除,且 已標(biāo)記為更新時(shí),則物理刪除所述數(shù)據(jù)記錄的副本記錄,標(biāo)記刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù) 據(jù)記錄,并物理刪除所述關(guān)聯(lián)數(shù)據(jù)記錄的臟數(shù)據(jù)。還包括提交單元,用于完成逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄后,執(zhí)行數(shù)據(jù)刪除的 事務(wù)提交操作;回滾單元,用于對(duì)刪除后的數(shù)據(jù)記錄進(jìn)行回滾操作。所述提交單元包括標(biāo)識(shí)接收單元,接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí);記錄查找單元,根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄;屬性設(shè)置單元,當(dāng)查找到有效的事務(wù)記錄時(shí),將所述事務(wù)記錄的提交屬性設(shè)置為 已執(zhí)行;記錄刪除單元,用于刪除鎖定的數(shù)據(jù)記錄,以及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,將 所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。所述回滾單元包括標(biāo)識(shí)接收單元,用于接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)氖聞?wù)標(biāo) 識(shí);記錄查找單元,用于根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄;屬性設(shè)置單元,用于當(dāng)查找到有效的事務(wù)記錄時(shí),將所述事務(wù)記錄的回滾屬性設(shè) 置為已執(zhí)行;鎖定解除單元,用于解除對(duì)所述數(shù)據(jù)記錄的鎖定,以及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù) 記錄的鎖定;記錄刪除單元,用于將所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。由上述實(shí)施例可以看出,本申請(qǐng)實(shí)施例中接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)臄?shù)據(jù)刪除命令后,根據(jù)該刪除命令中的事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將節(jié)點(diǎn)名稱(chēng)添 加到查找到的有效事務(wù)記錄中,根據(jù)該刪除命令中的節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表, 從節(jié)點(diǎn)屬性狀態(tài)信息表中獲取符合過(guò)濾條件的數(shù)據(jù)記錄,逐條刪除所述符合過(guò)濾條件的數(shù) 據(jù)記錄。應(yīng)用本申請(qǐng)實(shí)施例可以滿(mǎn)足OLTP的操作復(fù)雜性,及快速輸入/輸出的需求,實(shí)現(xiàn) 一個(gè)事務(wù)所涉及的在多個(gè)節(jié)點(diǎn)上的數(shù)據(jù)記錄刪除,保證數(shù)據(jù)刪除的同步性和完整性;并且 當(dāng)事務(wù)失效時(shí),可以通過(guò)回滾操作進(jìn)行數(shù)據(jù)恢復(fù),保證數(shù)據(jù)庫(kù)的完整性。
為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,對(duì)于本領(lǐng)域普通技術(shù)人員而 言,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為本申請(qǐng)基于OLTP的數(shù)據(jù)刪除方法的實(shí)施例流程圖;圖2為本申請(qǐng)實(shí)施例中的OLTP的架構(gòu)示意圖;圖3為本申請(qǐng)應(yīng)用實(shí)例中創(chuàng)建新事務(wù)的流程圖;圖4為本申請(qǐng)應(yīng)用實(shí)例中對(duì)所創(chuàng)建新事務(wù)中的數(shù)據(jù)進(jìn)行刪除的流程圖;圖5為本申請(qǐng)應(yīng)用實(shí)例中對(duì)數(shù)據(jù)記錄進(jìn)行刪除的流程圖;圖6為本申請(qǐng)應(yīng)用實(shí)例中對(duì)修改后的數(shù)據(jù)進(jìn)行事務(wù)提交的流程圖;圖7為本申請(qǐng)應(yīng)用實(shí)例中對(duì)修改后的數(shù)據(jù)進(jìn)行事務(wù)回滾時(shí)的流程圖;圖8為本申請(qǐng)基于OLTP的數(shù)據(jù)刪除系統(tǒng)的實(shí)施例框圖;圖9為本申請(qǐng)圖形數(shù)據(jù)庫(kù)服務(wù)器的第一實(shí)施例框圖;圖10為本申請(qǐng)圖形數(shù)據(jù)庫(kù)服務(wù)器的第一實(shí)施例框圖;圖11為本申請(qǐng)圖形數(shù)據(jù)庫(kù)服務(wù)器的第三實(shí)施例框圖。
具體實(shí)施例方式本發(fā)明如下實(shí)施例提供了一種基于OLTP的數(shù)據(jù)刪除方法、系統(tǒng)及圖形數(shù)據(jù)庫(kù)服 務(wù)器。為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明實(shí)施例中的技術(shù)方案,并使本發(fā)明實(shí) 施例的上述目的、特征和優(yōu)點(diǎn)能夠更加明顯易懂,下面結(jié)合附圖對(duì)本發(fā)明實(shí)施例中技術(shù)方 案作進(jìn)一步詳細(xì)的說(shuō)明。參見(jiàn)圖1,為本申請(qǐng)基于OLTP的數(shù)據(jù)刪除方法的實(shí)施例流程圖步驟101 接收客戶(hù)端通過(guò)調(diào)用API傳輸?shù)臄?shù)據(jù)刪除命令,該數(shù)據(jù)刪除命令中包含 事務(wù)標(biāo)識(shí)、節(jié)點(diǎn)名稱(chēng)和過(guò)濾條件。進(jìn)一步,在接收到數(shù)據(jù)修改命令之前,還包括創(chuàng)建事務(wù)的步驟,即接收客戶(hù)端通過(guò) 調(diào)用API傳輸?shù)氖聞?wù)創(chuàng)建命令,根據(jù)所述事務(wù)創(chuàng)建命令在事務(wù)屬性狀態(tài)信息表中生成一條 新的事務(wù)記錄,并為該新的事務(wù)記錄分配唯一的事務(wù)標(biāo)識(shí),然后將事務(wù)記錄的提交屬性和 回滾屬性設(shè)置為未執(zhí)行。步驟102 根據(jù)事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù) 記錄中。在根據(jù)事務(wù)標(biāo)識(shí)查找事務(wù)記錄時(shí),進(jìn)一步判斷是否查找到所述事務(wù)記錄,當(dāng)未查 找到所述事務(wù)記錄時(shí),結(jié)束流程,當(dāng)查找到所述事務(wù)記錄時(shí),判斷查找到的所述事務(wù)記錄的 提交屬性和回滾屬性是否均為未執(zhí)行,當(dāng)判斷均為未執(zhí)行時(shí),確定所述查找到的事務(wù)記錄 為有效事務(wù)記錄,執(zhí)行所述將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中的操作,否則, 結(jié)束流程。步驟103 根據(jù)節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表,從節(jié)點(diǎn)屬性狀態(tài)信息表中獲 取符合所述過(guò)濾條件的數(shù)據(jù)記錄。
步驟104 逐條刪除符合過(guò)濾條件的數(shù)據(jù)記錄。在刪除數(shù)據(jù)記錄前,進(jìn)一步的,判斷是否有數(shù)據(jù)記錄被其它事務(wù)鎖定,當(dāng)所述數(shù)據(jù) 記錄均未被其它事務(wù)鎖定時(shí),執(zhí)行所述逐條刪除符合過(guò)濾條件的數(shù)據(jù)記錄的操作,否則,在 確定所述事務(wù)記錄對(duì)應(yīng)的事務(wù)未超過(guò)預(yù)設(shè)時(shí)間閾值時(shí),返回所述根據(jù)所述事務(wù)標(biāo)識(shí)查找事 務(wù)記錄的操作。在刪除數(shù)據(jù)記錄時(shí),將所述數(shù)據(jù)記錄組成隊(duì)列,順序從所述隊(duì)列中提取一條數(shù)據(jù) 記錄,當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),且未標(biāo)記為更新和刪除時(shí),則標(biāo)記刪除所述數(shù)據(jù) 記錄,及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,并物理刪除所述關(guān)聯(lián)數(shù)據(jù)記錄的臟數(shù)據(jù),當(dāng)所述提 取的數(shù)據(jù)記錄為臟數(shù)據(jù),且為新插入的數(shù)據(jù)記錄時(shí),則物理刪除所述數(shù)據(jù)記錄,并物理刪除 所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),未標(biāo)記為刪除,且已標(biāo) 記為更新時(shí),則物理刪除所述數(shù)據(jù)記錄的副本記錄,標(biāo)記刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記 錄,并物理刪除所述關(guān)聯(lián)數(shù)據(jù)記錄的臟數(shù)據(jù)。進(jìn)一步的,該實(shí)施例還包括事務(wù)提交操作,具體為接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序 編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí),根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄,當(dāng)查找到有效 的事務(wù)記錄時(shí),將所述事務(wù)記錄的提交屬性設(shè)置為已執(zhí)行,刪除鎖定的數(shù)據(jù)記錄,以及所述 數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,將所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。進(jìn)一步的,該實(shí)施例還包括事務(wù)回滾操作,具體為接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序 編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí),根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄,當(dāng)查找到有效 的事務(wù)記錄時(shí),將所述事務(wù)記錄的回滾屬性設(shè)置為已執(zhí)行,解除對(duì)所述數(shù)據(jù)記錄的鎖定,以 及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄的鎖定,將所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪 除。參見(jiàn)圖2,為本申請(qǐng)實(shí)施例中OLTP的架構(gòu)示意圖該OLTP自上而下分為三層,最上層為供外部調(diào)用程序調(diào)用的API (Application Programming Interface,應(yīng)用程序編程接口);中間層為事務(wù)邏輯控制層,其按照操作類(lèi)別 的不同分為同步區(qū)和非同步區(qū),其中同步區(qū)中在同一時(shí)間只能執(zhí)行一個(gè)操作,其它操作在 進(jìn)入同步區(qū)時(shí)處于等待狀態(tài),本申請(qǐng)實(shí)施例中數(shù)據(jù)刪除過(guò)程即為在同步區(qū)中完成的操作, 非同步區(qū)中的操作不受限制,任何時(shí)間均可以進(jìn)行操作;最下層為數(shù)據(jù)存儲(chǔ)DataSet操作 抽象層,在不同的屬性狀態(tài)信息表DataSet中分別保存了聯(lián)機(jī)事務(wù)的屬性信息,以及聯(lián)機(jī) 事務(wù)所要處理數(shù)據(jù)所在節(jié)點(diǎn)上的屬性信息。在圖形數(shù)據(jù)庫(kù)中,聯(lián)機(jī)事務(wù)的狀態(tài)信息可以存儲(chǔ)在名稱(chēng)為graphiC_db_tX_def的 屬性狀態(tài)信息表DataSet中,該DataSet的數(shù)據(jù)結(jié)構(gòu)如下表1所示表權(quán)利要求
1.一種基于聯(lián)機(jī)事務(wù)處理系統(tǒng)OLTP的數(shù)據(jù)刪除方法,其特征在于,包括接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)臄?shù)據(jù)刪除命令,所述數(shù)據(jù)刪除命令 中包含事務(wù)標(biāo)識(shí)、節(jié)點(diǎn)名稱(chēng)和過(guò)濾條件;根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中;根據(jù)節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表,從所述節(jié)點(diǎn)屬性狀態(tài)信息表中獲取符合所述 過(guò)濾條件的數(shù)據(jù)記錄;逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括 接收客戶(hù)端通過(guò)調(diào)用API傳輸?shù)氖聞?wù)創(chuàng)建命令;根據(jù)所述事務(wù)創(chuàng)建命令在事務(wù)屬性狀態(tài)信息表中生成一條新的事務(wù)記錄,并為所述新 的事務(wù)記錄分配唯一的事務(wù)標(biāo)識(shí);將所述事務(wù)記錄的提交屬性和回滾屬性設(shè)置為未執(zhí)行。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄后, 還包括判斷是否查找到所述事務(wù)記錄;當(dāng)未查找到所述事務(wù)記錄時(shí),結(jié)束流程,當(dāng)查找到所述事務(wù)記錄時(shí),判斷查找到的所述 事務(wù)記錄的提交屬性和回滾屬性是否均為未執(zhí)行;當(dāng)判斷均為未執(zhí)行時(shí),確定所述查找到的事務(wù)記錄為有效事務(wù)記錄,執(zhí)行所述將所述 節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中的操作,否則,結(jié)束流程。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述逐條刪除所述符合過(guò)濾條件的數(shù)據(jù) 記錄之前,還包括判斷是否有數(shù)據(jù)記錄被其它事務(wù)鎖定;當(dāng)所述數(shù)據(jù)記錄均未被其它事務(wù)鎖定時(shí),執(zhí)行所述逐條刪除符合過(guò)濾條件的數(shù)據(jù)記錄 的操作,否則,在確定所述事務(wù)記錄對(duì)應(yīng)的事務(wù)未超過(guò)預(yù)設(shè)時(shí)間閾值時(shí),返回所述根據(jù)所述 事務(wù)標(biāo)識(shí)查找事務(wù)記錄的操作。
5.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述逐條刪除所述符合過(guò)濾條件的數(shù)據(jù) 記錄包括將所述數(shù)據(jù)記錄組成隊(duì)列; 順序從所述隊(duì)列中提取一條數(shù)據(jù)記錄;當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),且未標(biāo)記為更新和刪除時(shí),則標(biāo)記刪除所述數(shù)據(jù) 記錄,及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,并物理刪除所述關(guān)聯(lián)數(shù)據(jù)記錄的臟數(shù)據(jù);當(dāng)所述提取的數(shù)據(jù)記錄為臟數(shù)據(jù),且為新插入的數(shù)據(jù)記錄時(shí),則物理刪除所述數(shù)據(jù)記 錄,并物理刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄;當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),未標(biāo)記為刪除,且已標(biāo)記為更新時(shí),則物理刪除所 述數(shù)據(jù)記錄的副本記錄,標(biāo)記刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,并物理刪除所述關(guān)聯(lián)數(shù) 據(jù)記錄的臟數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,還包括完成逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄后,執(zhí)行數(shù)據(jù)刪除的事務(wù)提交操作;或,對(duì)刪除后的數(shù)據(jù)記錄進(jìn)行回滾操作。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述事務(wù)提交操作包括 接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí); 根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄;當(dāng)查找到有效的事務(wù)記錄時(shí),將所述事務(wù)記錄的提交屬性設(shè)置為已執(zhí)行; 刪除鎖定的數(shù)據(jù)記錄,以及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄; 將所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述回滾操作包括 接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí); 根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄;當(dāng)查找到有效的事務(wù)記錄時(shí),將所述事務(wù)記錄的回滾屬性設(shè)置為已執(zhí)行; 解除對(duì)所述數(shù)據(jù)記錄的鎖定,以及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄的鎖定; 將所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。
9.一種基于OLTP的數(shù)據(jù)刪除系統(tǒng),其特征在于,包括圖形數(shù)據(jù)庫(kù)服務(wù)器和客戶(hù)端, 所述客戶(hù)端,用于通過(guò)調(diào)用圖形數(shù)據(jù)庫(kù)服務(wù)器的API,向所述圖形數(shù)據(jù)庫(kù)服務(wù)器傳輸數(shù)據(jù)刪除命令,所述數(shù)據(jù)刪除命令中包含事務(wù)標(biāo)識(shí)、節(jié)點(diǎn)名稱(chēng)和過(guò)濾條件;所述圖形數(shù)據(jù)庫(kù)服務(wù)器,用于根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將所述節(jié)點(diǎn)名稱(chēng)添 加到查找到的有效事務(wù)記錄中,根據(jù)節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表,從所述節(jié)點(diǎn)屬性 狀態(tài)信息表中獲取符合所述過(guò)濾條件的數(shù)據(jù)記錄,逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記 錄。
10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述客戶(hù)端,還用于通過(guò)調(diào)用圖形數(shù)據(jù) 庫(kù)服務(wù)器的API,向所述圖形數(shù)據(jù)庫(kù)服務(wù)器傳輸事務(wù)創(chuàng)建命令;所述圖形數(shù)據(jù)庫(kù)服務(wù)器,還用于根據(jù)所述事務(wù)創(chuàng)建命令在事務(wù)屬性狀態(tài)信息表中生成 一條新的事務(wù)記錄,并為所述新的事務(wù)記錄分配唯一的事務(wù)標(biāo)識(shí),將所述事務(wù)記錄的提交 屬性和回滾屬性設(shè)置為未執(zhí)行。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其特征在于,所述圖形數(shù)據(jù)庫(kù)服務(wù)器,還用于判斷是否查找到所述事務(wù)記錄,當(dāng)未查找到所述事務(wù) 記錄時(shí),結(jié)束流程,當(dāng)查找到所述事務(wù)記錄時(shí),判斷查找到的所述事務(wù)記錄的提交屬性和回 滾屬性是否均為未執(zhí)行,當(dāng)判斷均為未執(zhí)行時(shí),確定所述查找到的事務(wù)記錄為有效事務(wù)記 錄,執(zhí)行所述將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中的操作,否則,結(jié)束流程。
12.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述圖形數(shù)據(jù)庫(kù)服務(wù)器,還用于判斷是否有數(shù)據(jù)記錄被其它事務(wù)鎖定,當(dāng)所述數(shù)據(jù)記 錄均未被其它事務(wù)鎖定時(shí),執(zhí)行所述逐條刪除符合過(guò)濾條件的數(shù)據(jù)記錄的操作,否則,在確 定所述事務(wù)記錄對(duì)應(yīng)的事務(wù)未超過(guò)預(yù)設(shè)時(shí)間閾值時(shí),返回所述根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù) 記錄的操作。
13.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述圖形數(shù)據(jù)庫(kù)服務(wù)器,還用于完成逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄后,執(zhí)行 數(shù)據(jù)刪除的事務(wù)提交操作,或者對(duì)刪除后的數(shù)據(jù)記錄進(jìn)行回滾操作。
14.一種圖形數(shù)據(jù)庫(kù)服務(wù)器,其特征在于,包括接收單元,用于接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)臄?shù)據(jù)刪除命令,所 述數(shù)據(jù)刪除命令中包含事務(wù)標(biāo)識(shí)、節(jié)點(diǎn)名稱(chēng)和過(guò)濾條件;查找單元,用于根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的 有效事務(wù)記錄中;獲取單元,用于根據(jù)節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表,從所述節(jié)點(diǎn)屬性狀態(tài)信息表 中獲取符合所述過(guò)濾條件的數(shù)據(jù)記錄;刪除單元,用于逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄。
15.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,述接收單元,還用于接收客戶(hù)端通過(guò) 調(diào)用API傳輸?shù)氖聞?wù)創(chuàng)建命令;還包括生成單元,用于根據(jù)所述事務(wù)創(chuàng)建命令在事務(wù)屬性狀態(tài)信息表中生成一條新的事務(wù)記 錄,并為所述新的事務(wù)記錄分配唯一的事務(wù)標(biāo)識(shí);設(shè)置單元,用于將所述事務(wù)記錄的提交屬性和回滾屬性設(shè)置為未執(zhí)行。
16.根據(jù)權(quán)利要求15所述的服務(wù)器,其特征在于,還包括 第一判斷單元,用于判斷是否查找到所述事務(wù)記錄; 第一執(zhí)行單元,用于當(dāng)未查找到所述事務(wù)記錄時(shí),結(jié)束流程;所述第一判斷單元,還用于當(dāng)查找到所述事務(wù)記錄時(shí),判斷查找到的所述事務(wù)記錄的 提交屬性和回滾屬性是否均為未執(zhí)行;所述第一執(zhí)行單元,還用于當(dāng)判斷均為未執(zhí)行時(shí),確定所述查找到的事務(wù)記錄為有效 事務(wù)記錄,執(zhí)行所述將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中的操作,否則,結(jié)束流程。
17.根據(jù)權(quán)利要求14所述的服務(wù)器,其特征在于,還包括 第二判斷單元,用于判斷是否有數(shù)據(jù)記錄被其它事務(wù)鎖定;第二執(zhí)行單元,用于當(dāng)所述數(shù)據(jù)記錄均未被其它事務(wù)鎖定時(shí),觸發(fā)所述刪除單元執(zhí)行 操作,否則,在確定所述事務(wù)記錄對(duì)應(yīng)的事務(wù)未超過(guò)預(yù)設(shè)時(shí)間閾值時(shí),返回所述查找單元執(zhí) 行操作。
18.根據(jù)權(quán)利要求16所述的服務(wù)器,其特征在于,所述刪除單元包括 隊(duì)列生成單元,將所述數(shù)據(jù)記錄組成隊(duì)列;記錄提取單元,順序從所述隊(duì)列中提取一條數(shù)據(jù)記錄;標(biāo)記刪除單元,用于當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),且未標(biāo)記為更新和刪除時(shí),則 標(biāo)記刪除所述數(shù)據(jù)記錄,及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,并物理刪除所述關(guān)聯(lián)數(shù)據(jù)記錄 的臟數(shù)據(jù);所述標(biāo)記刪除單元,還用于當(dāng)所述提取的數(shù)據(jù)記錄為臟數(shù)據(jù),且為新插入的數(shù)據(jù)記錄 時(shí),則物理刪除所述數(shù)據(jù)記錄,并物理刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄;所述標(biāo)記刪除單元,還用于當(dāng)所述提取的數(shù)據(jù)記錄不是臟數(shù)據(jù),未標(biāo)記為刪除,且已標(biāo) 記為更新時(shí),則物理刪除所述數(shù)據(jù)記錄的副本記錄,標(biāo)記刪除所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記 錄,并物理刪除所述關(guān)聯(lián)數(shù)據(jù)記錄的臟數(shù)據(jù)。
19.根據(jù)權(quán)利要求16所述的服務(wù)器,其特征在于,還包括提交單元,用于完成逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄后,執(zhí)行數(shù)據(jù)刪除的事務(wù)提交操作;回滾單元,用于對(duì)刪除后的數(shù)據(jù)記錄進(jìn)行回滾操作。
20.根據(jù)權(quán)利要求19所述的服務(wù)器,其特征在于,所述提交單元包括 標(biāo)識(shí)接收單元,接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí); 記錄查找單元,根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄;屬性設(shè)置單元,當(dāng)查找到有效的事務(wù)記錄時(shí),將所述事務(wù)記錄的提交屬性設(shè)置為已執(zhí)行;記錄刪除單元,用于刪除鎖定的數(shù)據(jù)記錄,以及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄,將所述 事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。
21.根據(jù)權(quán)利要求19所述的服務(wù)器,其特征在于,所述回滾單元包括標(biāo)識(shí)接收單元,用于接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口 API傳輸?shù)氖聞?wù)標(biāo)識(shí); 記錄查找單元,用于根據(jù)所述事務(wù)標(biāo)識(shí)查找到對(duì)應(yīng)的事務(wù)記錄; 屬性設(shè)置單元,用于當(dāng)查找到有效的事務(wù)記錄時(shí),將所述事務(wù)記錄的回滾屬性設(shè)置為 已執(zhí)行;鎖定解除單元,用于解除對(duì)所述數(shù)據(jù)記錄的鎖定,以及所述數(shù)據(jù)記錄的關(guān)聯(lián)數(shù)據(jù)記錄 的鎖定;記錄刪除單元,用于將所述事務(wù)記錄從所述事務(wù)屬性狀態(tài)信息表中刪除。
全文摘要
本申請(qǐng)實(shí)施例公開(kāi)了一種基于聯(lián)機(jī)事務(wù)處理系統(tǒng)OLTP的數(shù)據(jù)刪除方法、系統(tǒng)及圖形數(shù)據(jù)庫(kù)服務(wù)器,該方法包括接收客戶(hù)端通過(guò)調(diào)用應(yīng)用程序編程接口API傳輸?shù)臄?shù)據(jù)刪除命令,所述數(shù)據(jù)刪除命令中包含事務(wù)標(biāo)識(shí)、節(jié)點(diǎn)名稱(chēng)和過(guò)濾條件;根據(jù)所述事務(wù)標(biāo)識(shí)查找事務(wù)記錄,并將所述節(jié)點(diǎn)名稱(chēng)添加到查找到的有效事務(wù)記錄中;根據(jù)節(jié)點(diǎn)名稱(chēng)查找節(jié)點(diǎn)屬性狀態(tài)信息表,從所述節(jié)點(diǎn)屬性狀態(tài)信息表中獲取符合所述過(guò)濾條件的數(shù)據(jù)記錄;逐條刪除所述符合過(guò)濾條件的數(shù)據(jù)記錄。應(yīng)用本申請(qǐng)實(shí)施例可以實(shí)現(xiàn)一個(gè)事務(wù)所涉及的在多個(gè)節(jié)點(diǎn)上的數(shù)據(jù)記錄刪除,保證數(shù)據(jù)刪除的同步性和完整性;并且當(dāng)事務(wù)失效時(shí),可以通過(guò)回滾操作進(jìn)行數(shù)據(jù)恢復(fù),保證數(shù)據(jù)庫(kù)的完整性。
文檔編號(hào)G06F17/30GK102103642SQ20111007449
公開(kāi)日2011年6月22日 申請(qǐng)日期2011年3月25日 優(yōu)先權(quán)日2011年3月25日
發(fā)明者于洪方, 井衛(wèi)軍, 劉健, 姚福源, 蔣建平, 陳升 申請(qǐng)人:北京世紀(jì)互聯(lián)工程技術(shù)服務(wù)有限公司, 北京云快線(xiàn)軟件服務(wù)有限公司