本發(fā)明涉及區(qū)塊鏈技術(shù)領(lǐng)域,更具體地,涉及基于區(qū)塊鏈的數(shù)據(jù)庫事務(wù)操作方法和系統(tǒng)。
背景技術(shù):
在區(qū)塊鏈系統(tǒng)中,事務(wù)是指一組相互依賴的操作行為,如銀行交易、股票交易或網(wǎng)上購物。
事務(wù)的成功取決于這些相互依賴的操作行為是否都能執(zhí)行成功,只要有一個操作行為失敗,就意味著整個事務(wù)失敗。
例如,湯姆到銀行辦理轉(zhuǎn)賬事務(wù),把100元錢轉(zhuǎn)到杰克的賬號上,這個事務(wù)包含以下操作行為:(1)從湯姆的賬戶上減去100元。(2)往杰克的賬戶上增加100元。顯然,以上兩個操作必須作為一個不可分割的工作單元。假如僅僅第一步操作執(zhí)行成功,使得湯姆的賬戶上扣除了100元,但是第二步操作執(zhí)行失敗,杰克的賬戶上沒有增加100元,那么整個事務(wù)失敗。
區(qū)塊鏈提供對交易的驗證與存儲,但是并沒有提供對數(shù)據(jù)庫事務(wù)的支持。而在用區(qū)塊鏈對企業(yè)的信息化改造中,企業(yè)迫切需要區(qū)塊鏈支持?jǐn)?shù)據(jù)庫事務(wù)。
技術(shù)實現(xiàn)要素:
本發(fā)明解決的主要技術(shù)問題是如何基于區(qū)塊鏈設(shè)計數(shù)據(jù)庫事務(wù)操作,然后將數(shù)據(jù)庫事務(wù)操作作為交易發(fā)到網(wǎng)上參與共識,并根據(jù)結(jié)果操作事務(wù)。
本發(fā)明提出一種基于區(qū)塊鏈的數(shù)據(jù)庫事務(wù)操作方法,包括:
s1、接收數(shù)據(jù)庫事務(wù)交易,所述數(shù)據(jù)庫事務(wù)交易指的是,將數(shù)據(jù)庫操作作為區(qū)塊鏈的一種交易;
s2、在本地對所述數(shù)據(jù)庫事務(wù)中的多個數(shù)據(jù)庫操作依次進行驗證,如果驗證成功,跳轉(zhuǎn)到步驟s3;
s3、將所述數(shù)據(jù)庫事務(wù)發(fā)向網(wǎng)絡(luò)參與共識。
本發(fā)明提出一種基于區(qū)塊鏈的數(shù)據(jù)庫事務(wù)操作系統(tǒng),包括處理器,其中所述處理器被配置為執(zhí)行如下步驟:
s1、接收數(shù)據(jù)庫事務(wù)交易,所述數(shù)據(jù)庫事務(wù)交易指的是,將數(shù)據(jù)庫操作作為區(qū)塊鏈的一種交易;
s2、在本地對所述數(shù)據(jù)庫事務(wù)中的多個數(shù)據(jù)庫操作依次進行驗證,如果驗證成功,跳轉(zhuǎn)到步驟s3;
s3、將所述數(shù)據(jù)庫事務(wù)發(fā)向網(wǎng)絡(luò)參與共識。
本發(fā)明的有益效果包括:
1、實現(xiàn)數(shù)據(jù)庫事務(wù)操作交易化
數(shù)據(jù)庫事務(wù)操作為交易的一種,被打包發(fā)到網(wǎng)絡(luò)上參與共識。
2、保證數(shù)據(jù)庫事務(wù)的acid屬性
數(shù)據(jù)庫事務(wù)類型的交易經(jīng)過本地驗證通過后,保證數(shù)據(jù)庫的acid屬性。
3、實現(xiàn)數(shù)據(jù)庫事務(wù)操作的共識
數(shù)據(jù)庫操作被打包為交易參與網(wǎng)絡(luò)上的共識,各參與節(jié)點可以投票決定交易的合法性,進而決定共識的結(jié)果,避免由操作的單一節(jié)點任意改寫數(shù)據(jù)庫。
附圖說明
圖1為本發(fā)明的方法的流程圖。
具體實施方式
下面參照附圖描述本發(fā)明的實施方式,其中相同的部件用相同的附圖標(biāo)記表示。
如圖1所示,本發(fā)明的方法包括:
s1、接收數(shù)據(jù)庫事務(wù)交易,所述數(shù)據(jù)庫事務(wù)交易指的是,將數(shù)據(jù)庫操作作為區(qū)塊鏈的一種交易。
s2、在本地對所述數(shù)據(jù)庫事務(wù)中的多個數(shù)據(jù)庫操作依次進行驗證,如果驗證成功,跳轉(zhuǎn)到步驟s3,否則,跳轉(zhuǎn)到s4。
具體而言,對數(shù)據(jù)庫操作的驗證主要是操作數(shù)據(jù)的狀態(tài)是否與預(yù)期的一致,以確保對數(shù)據(jù)庫操作的時序和有效性。
在區(qū)塊鏈上,存在多個用戶在某一個時刻都對同一張表操作的可能行。為了防止這種沖突,定義一個事務(wù)交易,包含對表的增、刪、改、查等子操作。然后在表的子操作后跟隨一個預(yù)期的斷言子操作,斷言子操作通常是預(yù)期的結(jié)果數(shù)據(jù)狀態(tài)。
如此,在處理交易時先對表操作,如果這期間沒有別的用戶該表這個表,那么后面的斷言子操作就會成功,交易被接收并轉(zhuǎn)發(fā)至網(wǎng)絡(luò),如果這期間有別的用戶對這個表操作,那么后面的斷言子操作就會失敗,交易不會被接收轉(zhuǎn)發(fā)。
s3、將所述數(shù)據(jù)庫事務(wù)發(fā)向網(wǎng)絡(luò)參與共識。各參與節(jié)點可以投票決定交易的合法性,進而決定共識的結(jié)果,避免由操作的單一節(jié)點任意改寫數(shù)據(jù)庫。
合法性驗證主要包括每個節(jié)點都需要在本地進行s2中的數(shù)據(jù)庫操作驗證。
每個驗證節(jié)點都要重復(fù)s2中的驗證步驟,先對表進行相應(yīng)的操作,然后驗證斷言子操作中的數(shù)據(jù)狀態(tài),如果驗證都通過,則共識通過,否則,共識不通過。
s4、在共識過程中,在本地驗證所述數(shù)據(jù)庫事務(wù)交易的合法性,如果成功,跳轉(zhuǎn)到步驟s5,否則,跳轉(zhuǎn)到s6。
s5、提交所述數(shù)據(jù)庫事務(wù)。
s6、將所述數(shù)據(jù)庫事務(wù)回退給發(fā)送方。
通過本發(fā)明的方法,使得對數(shù)據(jù)庫的操作變成一種交易,且經(jīng)過本地驗證通過后,保證數(shù)據(jù)庫的acid屬性。
根據(jù)本發(fā)明的另一個方面,還提出一種基于區(qū)塊鏈的數(shù)據(jù)庫事務(wù)操作系統(tǒng),包括處理器,所述處理器能夠執(zhí)行如前所述的s1-s6的步驟。
以上所述的實施例,只是本發(fā)明較優(yōu)選的具體實施方式,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進行的通常變化和替換都應(yīng)包含在本發(fā)明的保護范圍內(nèi)。