CN112395284B 數(shù)據(jù)處理方法、裝置、數(shù)據(jù)庫系統(tǒng)、電子設(shè)備及存儲介質(zhì) (阿里巴巴集團控股有限公司)_第1頁
CN112395284B 數(shù)據(jù)處理方法、裝置、數(shù)據(jù)庫系統(tǒng)、電子設(shè)備及存儲介質(zhì) (阿里巴巴集團控股有限公司)_第2頁
CN112395284B 數(shù)據(jù)處理方法、裝置、數(shù)據(jù)庫系統(tǒng)、電子設(shè)備及存儲介質(zhì) (阿里巴巴集團控股有限公司)_第3頁
CN112395284B 數(shù)據(jù)處理方法、裝置、數(shù)據(jù)庫系統(tǒng)、電子設(shè)備及存儲介質(zhì) (阿里巴巴集團控股有限公司)_第4頁
CN112395284B 數(shù)據(jù)處理方法、裝置、數(shù)據(jù)庫系統(tǒng)、電子設(shè)備及存儲介質(zhì) (阿里巴巴集團控股有限公司)_第5頁
已閱讀5頁,還剩48頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

(12)發(fā)明專利地址英屬開曼群島大開曼資本大廈一座四(74)專利代理機構(gòu)北京同鈞律師事務(wù)所16037接收用于指示針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù)接收所迷數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行扶態(tài)信息、和、所迷第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息接收用于指示針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù)接收所迷數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行扶態(tài)信息、和、所迷第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息事務(wù)包括指示針對數(shù)據(jù)表的第一預(yù)提交任務(wù),執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示處理方法可以保證數(shù)據(jù)表和外置索引表的數(shù)據(jù)一致性。2接收針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù),其中,所述分布式事務(wù)包括指示針對數(shù)據(jù)表的第一預(yù)提交任務(wù),和,指示針對與所述數(shù)據(jù)表對應(yīng)的外置索引表的第二預(yù)提交任務(wù);接收所述數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行狀態(tài)信息和所述第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息,所述第一執(zhí)行狀態(tài)信息用于指示所述第一預(yù)提交任務(wù)涉及的各實例是否成功執(zhí)行,所述第二執(zhí)行狀態(tài)信息用于指示所述第二預(yù)提交任務(wù)涉及的各實例是否成功執(zhí)行;若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則提交所述分布式事務(wù)以完成所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息中至少一個指示任務(wù)執(zhí)行失敗,則生成回滾消息,以通過所述回滾消息指示對所述第一預(yù)提交任務(wù)和/或所述第二預(yù)提交任務(wù)進行回滾操作。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述接收針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生獲取所述數(shù)據(jù)處理請求中的SQL語句;判斷所述SQL語句是否為包含插入操作的SQL語句;根據(jù)判斷結(jié)果確定查詢語句,并根據(jù)所述查詢語句和所述SQL語句生成對應(yīng)的所述分布式事務(wù)。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述判斷結(jié)果確定查詢語句,并根據(jù)所述查詢語句和所述SQL語句生成對應(yīng)的所述分布式事務(wù),包括:若所述判斷結(jié)果指示為包含插入操作的SQL語句,則確定根據(jù)所述SQL語句生成第一查詢語句,其中,所述第一查詢語句用于指示查詢與所述SQL語句指示的待處理記錄沖突的記根據(jù)所述第一查詢語句獲得第一查詢結(jié)果;根據(jù)所述第一查詢結(jié)果和所述SQL語句,生成所述分布式事務(wù)。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述第一查詢結(jié)果和所述SQL語若確定所述SQL語句為包括指示放棄沖突記錄的第一子句的插入語句,則根據(jù)所述SQL語句指示的所述待處理記錄和所述第一查詢結(jié)果,確定所述待處理記錄中與所述第一查詢結(jié)果不匹配的第一記錄;生成指示向所述數(shù)據(jù)表中插入所述第一記錄的所述第一預(yù)提交任務(wù),和,指示向所述外置索引表中插入所述第一記錄的所述第二預(yù)提交任務(wù);根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù)生成所述分布式事務(wù)。6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述第一查詢結(jié)果和所述SQL語若確定所述SQL語句為包括指示更新記錄的第二子句的插入語句時,則獲取所述SQL語句指示的所述待處理記錄中與所述第一查詢結(jié)果不匹配的第一記錄和與所述第一查詢結(jié)3果匹配的第二記錄;生成指示向所述數(shù)據(jù)表中插入所述第一記錄,且使用所述第二記錄更新所述數(shù)據(jù)表中的所述第一查詢結(jié)果的所述第一預(yù)提交任務(wù);以及,生成指示向所述外置索引表中插入所述第一記錄,且使用所述第二記錄更新所述外置索引表中所述第一查詢結(jié)果的所述第二預(yù)提交任務(wù);根據(jù)生成的所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述第一查詢結(jié)果和所述SQL語若確定所述SQL語句為用于指示進行記錄替換的替換語句,則根據(jù)所述第一查詢結(jié)果、所述SQL語句及所述SQL語句指示的待處理記錄,生成所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),并根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù);其中,所述第一預(yù)提交任務(wù)指示刪除所述數(shù)據(jù)表中所述第一查詢結(jié)果,并向所述數(shù)據(jù)表中插入所述待處理記錄;所述第二預(yù)提交任務(wù)指示刪除所述外置索引表中所述第一查詢結(jié)果,并向所述外置索引表中插入所述待處理記錄。8.根據(jù)權(quán)利要求4-7任一項所述的方法,其特征在于,所述第一查詢結(jié)果包括表沖突記錄,或者,所述第一查詢結(jié)果包括表沖突記錄和索9.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述根據(jù)所述判斷結(jié)果確定查詢語句,并根據(jù)所述查詢語句和所述SQL語句生成對應(yīng)的所述分布式事務(wù),包括:若所述判斷結(jié)果指示所述SQL語句不包含插入操作,則根據(jù)所述SQL語句生成第二查詢語句,其中,所述第二查詢語句用于指示獲取所述數(shù)據(jù)表中符合所述SQL語句中的條件子句根據(jù)所述第二查詢語句獲得第二查詢結(jié)果;根據(jù)所述第二查詢結(jié)果和所述SQL語句,生成所述分布式事務(wù)。10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述根據(jù)所述第二查詢結(jié)果和所述SQL語當所述SQL語句為更新語句時,根據(jù)所述SQL語句生成第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);其中,所述第一預(yù)提交任務(wù)指示根據(jù)所述SQL語句更新所述數(shù)據(jù)表中第二查詢結(jié)果;所述第二預(yù)提交任務(wù)指示根據(jù)所述SQL語句更新所述外置索引表中與第二查詢結(jié)果對應(yīng)的記錄;根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。11.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述根據(jù)所述第二查詢結(jié)果和所述SQL語當所述SQL語句為刪除語句時,根據(jù)所述SQL語句生成第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);其中,所述第一預(yù)提交任務(wù)指示根據(jù)所述SQL語句刪除所述數(shù)據(jù)表中第二查詢結(jié)果;所述第二預(yù)提交任務(wù)指示根據(jù)所述SQL語句刪除所述外置索引表中與第二查詢結(jié)果對應(yīng)的記錄;根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。12.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述獲取所述數(shù)據(jù)處理請求中的SQL語4從所述數(shù)據(jù)處理請求中獲取原始SQL語句,并將所述原始SQL語句中的動態(tài)函數(shù)替換為常量;根據(jù)替換結(jié)果生成替換后的SQL語句。13.根據(jù)權(quán)利要求12所述的方法,其特征在于,所述根據(jù)替換結(jié)果生成替換后的SQL語根據(jù)所述原始SQL語句確定待處理的所述數(shù)據(jù)表,并確定所述數(shù)據(jù)表的主鍵是否為自增主鍵,且原始SQL語句中是否存在包含插入操作的語句;若是自增主鍵且存在包含插入操作的語句,則生成全局唯一的自增值,并根據(jù)所述自增值和所述替換結(jié)果生成替換后的SQL語句。14.一種數(shù)據(jù)處理裝置,其特征在于,包括:事務(wù)生成模塊,用于接收針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù),其中,所述分布式事務(wù)包括指示針對數(shù)據(jù)表的第一預(yù)提交任務(wù),和,指示針對與所述數(shù)據(jù)表對應(yīng)的外置索引表的第二預(yù)提交任務(wù);信息接收模塊,用于接收所述數(shù)據(jù)庫返回的所述第一預(yù)提交提交模塊,用于若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則提交所述分布式事務(wù)以完成所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。15.一種數(shù)據(jù)庫系統(tǒng),其特征在于,包括代理層、存儲層和至少一個數(shù)據(jù)庫層,所述至少一個數(shù)據(jù)庫層上配置有多個數(shù)據(jù)庫實例,各所述數(shù)據(jù)庫實例均與至少一個所述存儲層連接,所述存儲層用于存儲所述數(shù)據(jù)庫層中的數(shù)據(jù);所述代理層用于執(zhí)行權(quán)利要求1-13中任一項所述的方法指示的操作,以向至少一個所述數(shù)據(jù)庫層中的至少一個所述數(shù)據(jù)庫實例發(fā)送所述分布式事務(wù)中的所述第一預(yù)提交任務(wù)接收所述分布式事務(wù)的數(shù)據(jù)庫層根據(jù)所述第一預(yù)提交任務(wù)和所示對應(yīng)的數(shù)據(jù)庫實例與存儲層交互,以執(zhí)行所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);17.一種電子設(shè)備,包括:處理器、存儲器、通信接口和通信總線,所述處理器、所述存儲器和所述通信接口通過所述通信總線完成相互間的通信;所述存儲器用于存放至少一可執(zhí)行指令,所述可執(zhí)行指令使所述處理器執(zhí)行如權(quán)利要求1-13中任一項所述的數(shù)據(jù)處理方法對應(yīng)的操作。18.一種計算機存儲介質(zhì),其上存儲有計算機程序,該程序被處理器執(zhí)行時實現(xiàn)如權(quán)利要求1-13中任一所述的數(shù)據(jù)處理方法。5數(shù)據(jù)處理方法、裝置、數(shù)據(jù)庫系統(tǒng)、電子設(shè)備及存儲介質(zhì)技術(shù)領(lǐng)域[0001]本發(fā)明實施例涉及計算機技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理方法、裝置、數(shù)據(jù)庫系背景技術(shù)[0002]隨著技術(shù)的發(fā)展,數(shù)據(jù)庫被廣泛用于數(shù)據(jù)記錄的存儲、查詢和分析。在使用數(shù)據(jù)庫進行數(shù)據(jù)存儲的過程中,隨著數(shù)據(jù)量的增多,單個運行數(shù)據(jù)庫的設(shè)備的數(shù)據(jù)處理能力成為瓶頸。為了解決這一問題,采用分庫分表策略(如sharding算法),即將數(shù)據(jù)庫和/或數(shù)據(jù)表進行拆分,形成多個分片,不同的分片可以是一個單獨的實例,配置在不同[0003]現(xiàn)有采用上述分庫分表策略的數(shù)據(jù)庫在運行過程中,需要使用全局二級索引表。全局二級索引表是一種輔助索引,其可以是非聚簇索引,是用戶可以根據(jù)具體需求創(chuàng)建的索引表。[0004]現(xiàn)有的未進行分庫分表的數(shù)據(jù)庫(例如,MySQL數(shù)據(jù)庫)在進行了數(shù)據(jù)處理(例如插入數(shù)據(jù)、刪除數(shù)據(jù)或更新數(shù)據(jù))如更新數(shù)據(jù)后,更新全局二級索引表的方法是,存儲引擎在更新數(shù)據(jù)庫中用于存儲數(shù)據(jù)的主表中的記錄的同時,把相同數(shù)據(jù)也更新到全局二級索引表中。但是在分布式MySQLsharding中間件更新全局二級索引表的場景下,這種全局二級索引表的更新方法存在以下問題:[0005]首先,由于存儲引擎的數(shù)據(jù)不對外暴露,導(dǎo)致分布式MySQLsharding中間件無法獲取到存儲引擎寫入主表的數(shù)據(jù),也就無法將這些數(shù)據(jù)更新到全局二級索引表中。[0006]其次,由于只能寫入一種數(shù)據(jù)源,導(dǎo)致全局二級索引表只能使用與主表相同的存儲格式。發(fā)明內(nèi)容[0007]有鑒于此,本發(fā)明實施例提供一種數(shù)據(jù)處理方案,以解決上述部分或全部問題。[0008]根據(jù)本發(fā)明實施例的第一方面,提供了一種數(shù)據(jù)處理方法,其包括:接收針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù),其中,所述分布式事務(wù)包括指示針對數(shù)據(jù)表的第一預(yù)提交任務(wù),和,指示針對與所述數(shù)據(jù)表對應(yīng)的外置索引表的第二預(yù)提交任務(wù);接收所述數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行狀態(tài)信息、和、所述第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息;若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則提交所述分布式事務(wù)以完成所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。[0009]根據(jù)本發(fā)明實施例的第二方面,提供了一種數(shù)據(jù)處理裝置,其包括:事務(wù)生成模塊,用于接收用于指示針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù),其中,所述分布式事務(wù)包括指示針對數(shù)據(jù)表的第一預(yù)提交任務(wù),和,指示針對與所述數(shù)據(jù)表對應(yīng)的外置索引表的第二預(yù)提交任務(wù);信息接收模塊,用于接收所述數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行狀態(tài)信息、和、所述第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息;提交模塊,用于若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則提交所述分布式6事務(wù)以完成所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。接口和通信總線,所述處理器、所述存儲器和所述通信接口通過所述通信總線完成相互間的通信;所述存儲器用于存放至少一可執(zhí)行指令,所述可執(zhí)行指令使所述處理器執(zhí)行如第一方面所述的數(shù)據(jù)處理方法對應(yīng)的操作。[0011]根據(jù)本發(fā)明實施例的第四方面,提供了一種計算機存儲介質(zhì),其上存儲有計算機程序,該程序被處理器執(zhí)行時實現(xiàn)如第一方面所述的數(shù)據(jù)處理方法。[0012]根據(jù)本發(fā)明實施例提供的數(shù)據(jù)處理方案,根據(jù)接收的數(shù)據(jù)處理請求生成對應(yīng)的分布式事務(wù),以指示數(shù)據(jù)庫對數(shù)據(jù)表和外置索引表進行處理,并根據(jù)第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息確定數(shù)據(jù)表和外置狀態(tài)表是否可以執(zhí)行成功,在第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息均指示執(zhí)行成功時,才提交分布式事務(wù)對數(shù)據(jù)表和外置索引表執(zhí)行數(shù)據(jù)處理,確保了在任意時刻數(shù)據(jù)表和外置索引表中數(shù)據(jù)均一致,解決了現(xiàn)有技術(shù)中外置索引表存在與數(shù)據(jù)表中數(shù)據(jù)不一致的狀態(tài),導(dǎo)致用戶通過外置索引表進行數(shù)據(jù)檢索時會獲得錯誤的檢索結(jié)果的問題。附圖說明[0013]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明實施例中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,還可以根據(jù)這些附圖獲得其他的附圖。[0014]圖1為根據(jù)本發(fā)明實施例一的一種數(shù)據(jù)處理方法的步驟流程圖;[0015]圖2為根據(jù)本發(fā)明實施例二的一種數(shù)據(jù)處理方法的步驟流程圖;[0016]圖3為根據(jù)本發(fā)明實施例三的一種數(shù)據(jù)處理方法的步驟流程圖;[0017]圖4為根據(jù)本發(fā)明實施例四的一種數(shù)據(jù)處理方法的步驟流程圖;[0018]圖5為根據(jù)本發(fā)明實施例五的一種數(shù)據(jù)處理方法的步驟流程圖;[0019]圖6為根據(jù)本發(fā)明實施例六的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖;[0020]圖7為根據(jù)本發(fā)明實施例七的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖;[0021]圖8a為根據(jù)本發(fā)明實施例八的一種數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)示意圖;[0022]圖8b為根據(jù)本發(fā)明實施例八的一種數(shù)據(jù)庫系統(tǒng)執(zhí)行數(shù)據(jù)處理方法的示意圖;[0023]圖8c為根據(jù)本發(fā)明實施例八的一種數(shù)據(jù)庫系統(tǒng)執(zhí)行數(shù)據(jù)處理方法的流程示意圖;[0024]圖9為根據(jù)本發(fā)明實施例九的一種電子設(shè)備的結(jié)構(gòu)示意圖。具體實施方式[0025]為了使本領(lǐng)域的人員更好地理解本發(fā)明實施例中的技術(shù)方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發(fā)明實施例一部分實施例,而不是全部的實施例?;诒景l(fā)明實施例中的實施例,本領(lǐng)域普通技術(shù)人員所獲得的所有其他實施例,都應(yīng)當屬于本發(fā)明實施例保護的范圍。[0026]下面結(jié)合本發(fā)明實施例附圖進一步說明本發(fā)明實施例具體實現(xiàn)。[0027]實施例一7[0028]參照圖1,示出了根據(jù)本發(fā)明實施例一的一種數(shù)據(jù)處理方法的步驟流程圖。[0029]本實施例的數(shù)據(jù)處理方法包括以下步驟:[0030]步驟S102:接收用于指示針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù)。[0031]在本實施例中,以分布式數(shù)據(jù)庫系統(tǒng)中的代理層(如DRDSproxy,DistributedRelationalDatabaseServicesproxy)作為執(zhí)行主體,對本發(fā)明實施例提供的數(shù)據(jù)處理方法進行說明。其中,分布式數(shù)據(jù)庫系統(tǒng)可以是基于MySQLsharding的場景,也可以為其他類型場景。[0032]在本實施例的分布式數(shù)據(jù)庫中設(shè)置有獨立的代理層(如DRDSproxy),代理層是在客戶端和數(shù)據(jù)庫之間加入的一個服務(wù)進程,主要為用戶提供分布式數(shù)據(jù)庫的路由能力,客戶端的一個SQL語句會根據(jù)DRDSproxy的sharding算法路由到一個或多個分庫(如MySQL實[0033]代理層接收的數(shù)據(jù)處理請求可以是指示向數(shù)據(jù)表中插入記錄的請求、或者指示更新數(shù)據(jù)表中記錄的請求、或者指示刪除數(shù)據(jù)表中記錄的請求等。[0034]在代理層接收到指示更新數(shù)據(jù)表中記錄的數(shù)據(jù)處理請求時,對于數(shù)據(jù)表和外置索引表的分表方式不同的分布式數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)處理請求會涉及對多個分庫中的記錄進行數(shù)據(jù)處理,為了避免一部分分庫的記錄可以成功被更新而另一部分記錄不能成功被更新的情況出現(xiàn)而導(dǎo)致外置索引表與數(shù)據(jù)表中的數(shù)據(jù)不一致,代理層根據(jù)數(shù)據(jù)處理請求生成對應(yīng)的分布式事務(wù)。[0035]所述分布式事務(wù)包括第一預(yù)提交任務(wù)和第二預(yù)提交任務(wù)。第一預(yù)提交任務(wù)用于指示對所述數(shù)據(jù)表進行處理,第二預(yù)提交任務(wù)用于指示對所述數(shù)據(jù)表對應(yīng)的外置索引表進行處理。該分布式事務(wù)只有在其包括的所有預(yù)提交任務(wù)都被成功執(zhí)行時才能成功執(zhí)行,由此保證了外置索引表和數(shù)據(jù)表的數(shù)據(jù)一致性。所述處理與前述數(shù)據(jù)處理請求所請求的處理相[0036]需要說明的是,根據(jù)數(shù)據(jù)處理請求中內(nèi)容的不同,第一預(yù)提交任務(wù)和第二預(yù)提交任務(wù)中均可以包括一個或一個以上的分支任務(wù),每個分支任務(wù)可以對應(yīng)一個MySQL實例。不同的分支任務(wù)可以對應(yīng)相同或不同的MySQL實例。[0037]步驟S104:接收所述數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行狀態(tài)信息、和、所述第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息。[0038]第一執(zhí)行狀態(tài)信息用于指示第一預(yù)提交任務(wù)涉及的各MySQL實例是否成功執(zhí)行第一預(yù)提交任務(wù)。例如,第一預(yù)提交任務(wù)指示向某MySQL實例的數(shù)據(jù)表中插入記錄A,則第一執(zhí)行狀態(tài)信息用于指示該記錄A是否成功插入數(shù)據(jù)表中。[0039]同樣地,第二執(zhí)行狀態(tài)信息用于指示第二預(yù)提交任務(wù)涉及的各MySQL實例是否成功執(zhí)行第二預(yù)提交任務(wù)。例如,第二預(yù)提交任務(wù)指示向某MySQL實例中的外置索引表中插入記錄A,則第二執(zhí)行狀態(tài)信息用于指示該記錄A是否成功插入外置索引表中。[0040]在實際應(yīng)用中,第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息可以采用任意適當?shù)男问降鹊?。本發(fā)明實施例不對第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息的具體形式進行限制。[0041]在獲取到第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息后,可以根據(jù)第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息確定是否提交分布式事務(wù)。例如,若第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀8態(tài)信息均指示任務(wù)執(zhí)行成功,表示對數(shù)據(jù)表和外置索引表的數(shù)據(jù)處理均成功,能夠保證兩個表的數(shù)據(jù)一致性,則可以執(zhí)行步驟S106。反之,若第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息中的至少一個指示任務(wù)執(zhí)行失敗,表示對數(shù)據(jù)表和外置索引表中的至少一個的數(shù)據(jù)處理失敗,兩者的數(shù)據(jù)一致性不能保證,則可以指示不提交分布式事務(wù)。當然,在至少一個任務(wù)執(zhí)行失敗時執(zhí)行時,本領(lǐng)域技術(shù)人員可以根據(jù)需要配置執(zhí)行任何適當?shù)牟僮?,本實施例對此不作限定。[0042]步驟S106:若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則提交所述分布式事務(wù)以完成所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。[0043]若第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則表示分布式事務(wù)可以被完整地成功執(zhí)行,代理層可以指示提交分布式事務(wù),以使該分布式事務(wù)涉及的各MySQL實例正式執(zhí)行任務(wù)提交,完成對所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。[0044]由于只有在第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功時才會提交分布式事務(wù),也就是說,只有在數(shù)據(jù)表和外置索引表均可以成功進行數(shù)據(jù)處理的情況下才會提交分布式事務(wù),保證了數(shù)據(jù)表與外置索引表之間的數(shù)據(jù)一致性,且由于數(shù)據(jù)表和外置索引表是同時進行數(shù)據(jù)處理的,因此在保證數(shù)據(jù)表和外置索引表數(shù)據(jù)處理的原子性的同時,還可以保證數(shù)據(jù)表與外置索引表的強一致性。[0045]其中,強一致性與現(xiàn)有技術(shù)中最終一致性相對,強一致性是指在任意時刻數(shù)據(jù)表和外置索引表都處于完全一致狀態(tài)。相較于最終一致性在達到最終一致之前會存在不一致的中間狀態(tài),強一致性可以保證用戶任意時刻使用數(shù)據(jù)庫均可以獲得準確的數(shù)據(jù)。[0046]通過本實施例,根據(jù)接收的數(shù)據(jù)處理請求生成對應(yīng)的分布式事務(wù),以指示數(shù)據(jù)庫對數(shù)據(jù)表和外置索引表進行處理,并根據(jù)第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息確定數(shù)據(jù)表和外置狀態(tài)表是否可以執(zhí)行成功,在第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息均指示執(zhí)行成功時,才提交分布式事務(wù)對數(shù)據(jù)表和外置索引表執(zhí)行數(shù)據(jù)處理,確保了在任意時刻數(shù)據(jù)表和外置索引表中數(shù)據(jù)均一致,解決了現(xiàn)有技術(shù)中外置索引表存在與數(shù)據(jù)表中數(shù)據(jù)不一致的狀態(tài),導(dǎo)致用戶通過外置索引表進行數(shù)據(jù)檢索時會獲得錯誤的檢索結(jié)果的問題。[0047]本實施例的數(shù)據(jù)處理方法可以由任意適當?shù)木哂袛?shù)據(jù)處理能力的電子設(shè)備執(zhí)行,[0049]參照圖2,示出了根據(jù)本發(fā)明實施例二的一種數(shù)據(jù)處理方法的步驟流程圖。[0050]本實施例的數(shù)據(jù)處理方法包括前述的步驟S102~步驟S106。[0051]其中,所述方法在根據(jù)第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息確定是否提交分布式事務(wù)時,若第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則執(zhí)行步驟S106;反之,若第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息中至少一個指示任務(wù)執(zhí)行失敗,則執(zhí)行下述的步驟S108。[0052]步驟S108:若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息中至少一個指示任務(wù)執(zhí)行失敗,則生成回滾消息,以通過所述回滾消息指示對所述第一預(yù)提交任務(wù)和/或所述第二預(yù)提交任務(wù)進行回滾操作。[0053]當?shù)谝粓?zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息中指示一個指示任務(wù)執(zhí)行失敗時,例如,第一執(zhí)行狀態(tài)信息指示任務(wù)執(zhí)行成功,第二執(zhí)行狀態(tài)信息指示任務(wù)執(zhí)行失敗時,表示對9數(shù)據(jù)表的數(shù)據(jù)處理成功,對外置索引表的數(shù)據(jù)處理失敗。此時數(shù)據(jù)表與對應(yīng)的外置索引表的數(shù)據(jù)不一致,分布式事務(wù)不能提交,可以生成回滾消息,將回滾消息發(fā)送給涉及的各MySQL實例,使其對第一預(yù)提交任務(wù)和/或第二預(yù)提交任務(wù)進行回滾操作,從而使回滾操作后的數(shù)據(jù)表和外置索引表的數(shù)據(jù)一致。[0054]需要說明的是,在本實施例中,外置索引表可以是外置全局二級索引表,在其他實施例中,該外置索引表也可以是其他任何適當?shù)耐庵盟饕?。分布式?shù)據(jù)庫中的外置全局二級索引表可以拆分到多個MySQL實例上,且其采用的分片方式可以與數(shù)據(jù)表的分片方式不相同。[0055]同樣地,數(shù)據(jù)表可以是數(shù)據(jù)庫中的主表,也可以是其他任何適當?shù)臄?shù)據(jù)表。[0056];在某些情況下,數(shù)據(jù)表使用的存儲結(jié)構(gòu)(例如行存數(shù)據(jù)源或列存數(shù)據(jù)源)和外置索引表使用的存儲結(jié)構(gòu)可能不同。此種情況下,代理層可以生成與存儲結(jié)構(gòu)相適應(yīng)的預(yù)提交任務(wù)。在執(zhí)行某個數(shù)據(jù)處理請求時,根據(jù)該數(shù)據(jù)處理請求生成MySQL數(shù)據(jù)源能夠識別的第一預(yù)提交任務(wù),并生成postgreSQL數(shù)據(jù)源能夠識別的第二預(yù)提交任務(wù),從而適應(yīng)不同的存儲結(jié)構(gòu)。由此,使得對數(shù)據(jù)處理請求的處理更具有靈活性和兼容性。[0058]通過本實施例,在確保了在任意時刻數(shù)據(jù)表和外置索引表中數(shù)據(jù)均一致,解決了現(xiàn)有技術(shù)中外置索引表存在與數(shù)據(jù)表中數(shù)據(jù)不一致的狀態(tài),導(dǎo)致用戶通過外置索引表進行數(shù)據(jù)檢索時會獲得錯誤的檢索結(jié)果的問題的基礎(chǔ)上,由于代理層可以根據(jù)數(shù)據(jù)表使用的存儲結(jié)構(gòu)生成與之適應(yīng)的第一預(yù)提交任務(wù),根據(jù)外置索引表使用的存儲結(jié)構(gòu)生成與之適應(yīng)的第二預(yù)提交任務(wù),從而適應(yīng)外置索引表與數(shù)據(jù)表使用不同的存儲結(jié)構(gòu)的情況,提高了對數(shù)據(jù)處理請求的處理的靈活性和兼容性。[0059]而且,在第一預(yù)提交任務(wù)和第二預(yù)提交任務(wù)中的任意一個執(zhí)行失敗時,可以生成回滾消息,指示涉及的MySQL實例執(zhí)行回滾操作,確保了外置索引表和數(shù)據(jù)表的數(shù)據(jù)強一致性,不存在數(shù)據(jù)不一致的中間狀態(tài)。[0060]本實施例的數(shù)據(jù)處理方法可以由任意適當?shù)木哂袛?shù)據(jù)處理能力的電子設(shè)備執(zhí)行,[0061]實施例三[0062]參照圖3,示出了根據(jù)本發(fā)明實施例三的一種數(shù)據(jù)處理方法的步驟流程圖。[0063]本實施例的數(shù)據(jù)處理方法包括前述的步驟S102~步驟S106。根據(jù)需要其可以包括或不包括步驟S108。[0064]在本實施例中,所述步驟S102包括以下子步驟:[0065]子步驟S1021:獲取所述數(shù)據(jù)處理請求中的SQL語句。[0066]第一種情況中,數(shù)據(jù)處理請求中不包含動態(tài)函數(shù),所述步驟S1021包括:直接將數(shù)據(jù)處理請求中的原始SQL語句作為獲取的SQL語句。[0067]第二種情況中,數(shù)據(jù)處理請求包含動態(tài)函數(shù),所述子步驟S1021包括:從所述數(shù)據(jù)處理請求中獲取原始SQL語句,并將所述原始SQL語句中的動態(tài)函數(shù)替換為常量;根據(jù)替換[0068]例如,原始SQL語句中包括NOW()函數(shù),該函數(shù)是指示獲取當前系統(tǒng)時間的動態(tài)函值為不會變化的常量),將原始SQL語句中的動態(tài)函數(shù)替換為該值,生成替換后的SQL語句。該替換后的SQL語句即為從數(shù)據(jù)處理請求中獲[0072]在根據(jù)替換結(jié)果和自增值生成替換后的SQL語句時,可以將生成的自增值加入替values(1,'a','20190803')。[0076]SQL語句包括但不限于插入語句(insert)、更新語句(update)、替換語句[0077]本領(lǐng)域技術(shù)人員可以根據(jù)需要采用任何適當?shù)姆绞酱_定SQL語句是否為包含插入[0078]子步驟S1023:根據(jù)所述判斷結(jié)果確定查詢語句,并根據(jù)所述查詢語句和所述S插入新的記錄時由于沖突記錄的存在而導(dǎo)致部分或全部插入失敗從而影響數(shù)據(jù)表和外置11第一查詢語句用于指示查詢與SQL語句指示的待處理記錄沖突的記錄。在確定查詢語句后,本領(lǐng)域技術(shù)人員可以根據(jù)需要,采用任何適當?shù)姆绞缴蓪?yīng)的分布式事務(wù)。語句可能是更新語句、刪除語句等,這些語句操作的對象是數(shù)據(jù)表和/或外置索引表中已經(jīng)存在的記錄,且這些語句通常都包含條件子句(where子句)。[0082]基于此,第二種情況中,根據(jù)判斷結(jié)果確定根據(jù)所述SQL語句生成第二查詢語句,第二查詢語句用于指示獲取數(shù)據(jù)表中符合SQL語句中的條件子句的記錄。在確定查詢語句后,本領(lǐng)域技術(shù)人員可以根據(jù)需要,采用任何適當?shù)姆绞缴蓪?yīng)的分布式事務(wù)。[0083]通過本實施例,確保了在任意時刻數(shù)據(jù)表和外置索引表中數(shù)據(jù)均一致,解決了現(xiàn)有技術(shù)中外置索引表存在與數(shù)據(jù)表中數(shù)據(jù)不一致的狀態(tài),導(dǎo)致用戶通過外置索引表進行數(shù)據(jù)檢索時會獲得錯誤的檢索結(jié)果的問題。[0084]此外,先對從數(shù)據(jù)處理請求中獲取的原始SQL語句進行動態(tài)函數(shù)替換、自增主鍵的自增值生成等處理防止了由于自增值不一致或動態(tài)函數(shù)計算結(jié)果不一致等問題導(dǎo)致后續(xù)處理中造成數(shù)據(jù)表和外置索引表的數(shù)據(jù)不一致,確保了可靠性。在生成分布式事務(wù)之前,對SQL語句是否包含插入操作進行判斷,根據(jù)判斷結(jié)果生成對應(yīng)的查詢語句,再根據(jù)生成的查詢語句和SQL語句生成分布式事務(wù),提升了方案的適應(yīng)性。[0085]本實施例的數(shù)據(jù)處理方法可以由任意適當?shù)木哂袛?shù)據(jù)處理能力的電子設(shè)備執(zhí)行,[0087]參照圖4,示出了根據(jù)本發(fā)明實施例四的一種數(shù)據(jù)處理方法的步驟流程圖。[0088]本實施例的數(shù)據(jù)處理方法包括前述的步驟S102~步驟S106。根據(jù)需要其可以包括或不包括步驟S108。其中,所述步驟S102可以采用實施例一或三的實現(xiàn)方式實現(xiàn),或者采用其他任何適當?shù)膶崿F(xiàn)方式實現(xiàn)。[0089]在本實施例中,在所述步驟S102采用實施例三中的實現(xiàn)方式實現(xiàn)時,所述子步驟S1023,即根據(jù)所述判斷結(jié)果確定查詢語句,并根據(jù)所述查詢語句和所述SQL語句生成對應(yīng)的所述分布式事務(wù)的第一種實現(xiàn)方式如下。[0090]所述子步驟S1023包括:若所述判斷結(jié)果指示為包含插入操作的SQL語句,則確定根據(jù)所述SQL語句生成第一查詢語句,其中,所述第一查詢語句用于指示查詢與所述SQL語句指示的待處理記錄沖突的記錄;根據(jù)所述第一查詢語句獲得第一查詢結(jié)果;根據(jù)所述第[0091]如實施例三中所述,在判斷結(jié)果指示SQL語句包括插入操作時,為了防止數(shù)據(jù)表和/或外置索引表中已有記錄與新的記錄沖突而影響插入操作的執(zhí)行造成數(shù)據(jù)表和外置索引表的數(shù)據(jù)不一致,確定根據(jù)SQL語句生成用于指示查詢沖突記錄中的第一查詢語句。[0092]在生成第一查詢語句時,若SQL語句涉及的表中具有全局唯一索引,則生成的第一查詢語句用于查詢數(shù)據(jù)表和外置索引表,此時,第一查詢語句包括分支查詢語句A和分支查詢語句B。分支查詢語句A可以根據(jù)SQL語句中涉及的數(shù)據(jù)表的表名、數(shù)據(jù)表的主鍵和其他唯一鍵生成,用于查詢數(shù)據(jù)表中沖突記錄。分支查詢語句B可以根據(jù)SQL語句中涉及的外置索引表的表名和全局唯一索引鍵生成,用于查詢外置索引表中的沖突記錄。[0093]若不存在全局唯一索引,則生成的第一查詢語句僅用于查詢數(shù)據(jù)表,其可以根據(jù)SQL語句中涉及的數(shù)據(jù)表的表名、數(shù)據(jù)表的主鍵和其他唯一鍵生成,用于查詢數(shù)據(jù)表中沖突記錄,沖突記錄例如數(shù)據(jù)表中已經(jīng)存在的某個或某些個記錄的主鍵值與SQL語句指示的待處理記錄的主鍵值相同,由于主鍵具有唯一性,因此這些記錄為沖突記錄。[0094]通過將第一查詢語句發(fā)送給涉及的各MySQL實例,由其進行執(zhí)行,可以獲得各MySQL實例返回的查詢結(jié)果,其總和即為第一查詢結(jié)果。[0095]根據(jù)所述第一查詢結(jié)果和所述SQL語句,就可以生成所述分布式事務(wù)。對于本領(lǐng)域技術(shù)人員而言,其可以采用任何適當?shù)姆绞缴煞植际绞聞?wù),本實施例對此不作限定。[0096]下面例舉幾種根據(jù)所述第一查詢結(jié)果和所述SQL語句,生成所述分布式事務(wù)的情[0097]其中,第一查詢結(jié)果可以進包括表沖突記錄(記作查詢結(jié)果A),其可以是根據(jù)數(shù)據(jù)表的主鍵或者主鍵和其他唯一鍵進行查詢獲得的沖突記錄。第一查詢結(jié)果也可以包括表沖突記錄(記作查詢結(jié)果A)和索引沖突記錄(記作查詢結(jié)果B)。索引沖突記錄可以是根據(jù)全局唯一索引鍵對外置索引表進行查詢獲得的沖突記錄。name,date)values(1,'a','20190803’)。若第一查詢結(jié)果指示數(shù)據(jù)表和外置索引表均無沖突記錄,則直接根據(jù)該SQL語句,生成分布式事務(wù)。該分布式事務(wù)中的第一預(yù)提交任務(wù)指示將該SQL語句指示的待處理記錄插入到數(shù)據(jù)表中;該分布式事務(wù)的第二預(yù)提交任務(wù)指示將該SQL語句指示的待處理記錄插入到外置索引表中。[0099]若第一查詢結(jié)果指示數(shù)據(jù)表和/或外置索引表中存在沖突記錄,則本領(lǐng)域技術(shù)人員可以根據(jù)需要配置適當?shù)牟僮?,如仍然根?jù)SQL語句生成分布式事務(wù)或者執(zhí)行其他操作,本實施例對此不作限定。[0100]情況二:SQL語句為插入語句,且包括指示放棄沖突記錄的第一子句(如ignore子句)。此時,根據(jù)所述第一查詢結(jié)果和所述SQL語句,生成所述分布式事務(wù)包括:若確定所述SQL語句為包括指示放棄沖突記錄的第一子句的插入語句,則根據(jù)所述SQL語句指示的所述待處理記錄和所述第一查詢結(jié)果,確定所述待處理記錄中與第一查詢結(jié)果不匹配的第一記錄;生成指示向所述數(shù)據(jù)表中插入所述第一記錄的所述第一預(yù)提交任務(wù),和,指示向所述外置索引表中插入所述第一記錄的所述第二預(yù)提交任務(wù);根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù)生成所述分布式事務(wù)。[0101]其中,第一記錄為SQL語句指示的待處理記錄與第一查詢結(jié)果的差集。換而言之為既不與數(shù)據(jù)表中的記錄沖突,又不與外置索引表中的記錄沖突的記錄。[0102]情況三:SQL語句為插入語句,且包括指示更新記錄的第二子句(如onduplicatekeyupdate子句)。此時,所述根據(jù)所述第一查詢結(jié)果和所述SQL語句,生成所包括:若確定所述SQL語句為包括指示更新記錄的第二子句的插入語句時,則獲取所述SQL語句指示的所述待處理記錄中與所述第一查詢結(jié)果不匹配的第一記錄和與所述第一查詢結(jié)果匹配的第二記錄;生成指示向所述數(shù)據(jù)表中插入所述第一記錄,且使用所述第二記錄更新所述數(shù)據(jù)表中的所述第一查詢結(jié)果的所述第一預(yù)提交任務(wù);以及,生成指示向所述外置索引表中插入所述第一記錄,且使用所述第二記錄更新所述外置索引表中所述第一查詢結(jié)果的所述第二預(yù)提交任務(wù);根據(jù)生成的所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。[0103]由于第二子句指示將待處理記錄中未沖突記錄插入,并使用待處理記錄更新沖突記錄,因此,在生成分布式事務(wù)時,需要先確定待處理記錄中與第一查詢結(jié)果不匹配的第一[0104]其中,若第一查詢結(jié)果中既包括表沖突記錄(即查詢結(jié)果A)又包括索引表沖突記錄(即查詢結(jié)果B),則第一記錄中的記錄可以分為集合X和集合Y兩個集合,集合X中的記錄為不與查詢結(jié)果A匹配的記錄,集合Y為不與查詢結(jié)果B匹的記錄;同理,第二記錄可以分為集合M和集合N,集合M中的記錄為與查詢結(jié)果A匹配的記錄,集合N中的記錄為與查詢結(jié)果B匹配的記錄。[0105]確定第一記錄和第二記錄之后,在根據(jù)所述第一記錄、所述第二記錄和所述SQL語記錄更新數(shù)據(jù)表中的查詢結(jié)果A的第一預(yù)提交任務(wù)。在根據(jù)所述第一記錄、所述第二記錄和所述SQL語句,生成第二預(yù)提交任務(wù)時,生成指示向外置索引表中插入集合M中記錄、且使用集合N中的記錄更新外置索引表中的查詢結(jié)果B的第二預(yù)提交任務(wù)。述SQL語句,生成所述分布式事務(wù)包括:若確定所述SQL語句為用于指示進行記錄替換的替換語句,則根據(jù)所述第一查詢結(jié)果、所述SQL語句及所述SQL語句指示的待處理記錄,生成所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),并根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交[0107]其中,由于替換語句的執(zhí)行需要先執(zhí)行刪除操作,再執(zhí)行插入操作,因此所述第一預(yù)提交任務(wù)指示刪除所述數(shù)據(jù)表中所述第一查詢結(jié)果,并向所述數(shù)據(jù)表中插入所述待處理記錄;所述第二預(yù)提交任務(wù)指示刪除所述外置索引表中所述第一查詢結(jié)果,并向所述外置索引表中插入所述待處理記錄。[0108]具體例如,若第一查詢結(jié)果包括表沖突記錄(即查詢結(jié)果A)和索引沖突記錄(即查詢結(jié)果B),則生成的第一預(yù)提交任務(wù)用于指示刪除數(shù)據(jù)表中查詢結(jié)果A,并將待處理記錄插入數(shù)據(jù)表中。生成的第二預(yù)提交任務(wù)用于指示刪除外置索引表中查詢結(jié)果B,并將待處理記錄插入外置數(shù)據(jù)表中。[0109]通過本實施例,確保了在任意時刻數(shù)據(jù)表和外置索引表中數(shù)據(jù)均一致,解決了現(xiàn)有技術(shù)中外置索引表存在與數(shù)據(jù)表中數(shù)據(jù)不一致的狀態(tài),導(dǎo)致用戶通過外置索引表進行數(shù)據(jù)檢索時會獲得錯誤的檢索結(jié)果的問題。[0110]此外,在生成分布式事務(wù)時,針對不同的SQL語句生成指示執(zhí)行不同動作的第一預(yù)提交任務(wù)和第二預(yù)提交任務(wù),進一步提升了方案適用性。[0111]本實施例的數(shù)據(jù)處理方法可以由任意適當?shù)木哂袛?shù)據(jù)處理能力的電子設(shè)備執(zhí)行,[0112]實施例五[0113]參照圖5,示出了根據(jù)本發(fā)明實施例五的一種數(shù)據(jù)處理方法的步驟流程圖。[0114]本實施例的數(shù)據(jù)處理方法包括前述的步驟S102~步驟S106。根據(jù)需要其可以包括或不包括步驟S108。其中,所述步驟S102可以采用實施例一或三的實現(xiàn)方式實現(xiàn),或者采用其他任何適當?shù)膶崿F(xiàn)方式實現(xiàn)。[0115]在本實施例中,在所述步驟S102采用實施例三中的實現(xiàn)方式實現(xiàn)時,所述子步驟S1023即根據(jù)所述判斷結(jié)果確定查詢語句,并根據(jù)所述查詢語句和所述SQL語句生成對應(yīng)的所述分布式事務(wù)的第二種實現(xiàn)方式如下:[0116]本實施例中,子步驟S1023包括:若所述判斷結(jié)果指示所述SQL語句不包含插入操作,則根據(jù)所述SQL語句生成第二查詢語句,其中,所述第二查詢語句用于指示獲取所述數(shù)據(jù)表中符合所述SQL語句中的條件子句的記錄;根據(jù)所述第二查詢語句獲得第二查詢結(jié)果;根據(jù)所述第二查詢結(jié)果和所述SQL語句,生成所述分布式事務(wù)。[0117]如實施例三中所述,在判斷結(jié)果指示SQL語句包含插入操作時,其通常為更新語句或刪除語句等,由于這些語句的操作對象是數(shù)據(jù)表和外置索引表中已有記錄,因此第二查詢語句可以根據(jù)SQL語句中的條件子句(例如為where子句)生成,用于獲得滿足條件子句的件子句生成的第二查詢語句為:SELECTid[0118]下面例舉幾種根據(jù)第二查詢結(jié)果和SQL語句,生成所述分布式事務(wù)的情況。生成所述分布式事務(wù)包括:當所述SQL語句為更新語句時,根據(jù)所述SQL語句生成第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。[0120]其中,所述第一預(yù)提交任務(wù)指示根據(jù)所述SQL語句更新所述數(shù)據(jù)表中第二查詢結(jié)果;所述第二預(yù)提交任務(wù)指示根據(jù)所述SQL語句更新所述外置索引表中與第二查詢結(jié)果對應(yīng)的記錄。這樣可以保證數(shù)據(jù)表與外置索引表的記錄同步被更新,以確保兩者的數(shù)據(jù)一致性。[0123]此時,根據(jù)第二查詢結(jié)果和SQL語句生成的第一預(yù)提交任務(wù)使用的MySQL數(shù)據(jù)源可以識別的語法可以表示為:UPDATEtbSET='a'WHEREidIN(1,2),用于指示更新數(shù)據(jù)表中第二查詢結(jié)果。[0124]若外置索引表使用的數(shù)據(jù)源與數(shù)據(jù)表使用數(shù)據(jù)源相同,則第二預(yù)提交任務(wù)中只需把數(shù)據(jù)表名tb修改為外置索引表的表名即可。若外置索引表使用的數(shù)據(jù)源與數(shù)據(jù)表使用的數(shù)據(jù)源不同,則可以生成外置索引表的數(shù)據(jù)源的語法能夠識別的表示方式,以適應(yīng)數(shù)據(jù)表和外置索引表采用不同數(shù)據(jù)源的情況。生成所述分布式事務(wù),包括:當所述SQL語句為刪除語句時,根據(jù)所述SQL語句生成第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。[0126]其中,所述第一預(yù)提交任務(wù)指示根據(jù)所述SQL語句刪除所述數(shù)據(jù)表中第二查詢結(jié)果;所述第二預(yù)提交任務(wù)指示根據(jù)所述SQL語句刪除所述外置索引表中與第二查詢結(jié)果對應(yīng)的記錄,以保證數(shù)據(jù)表和外置索引表的數(shù)據(jù)一致性。[0127]通過本實施例,數(shù)據(jù)處理請求確保了在任意時刻數(shù)據(jù)表和外置索引表中數(shù)據(jù)均一致,解決了現(xiàn)有技術(shù)中外置索引表存在與數(shù)據(jù)表中數(shù)據(jù)不一致的狀態(tài),導(dǎo)致用戶通過外置索引表進行數(shù)據(jù)檢索時會獲得錯誤的檢索結(jié)果的問題。[0128]此外,通過生成查詢語句查詢數(shù)據(jù)表的記錄,根據(jù)查詢結(jié)果確定需要進行數(shù)據(jù)處理的記錄,并根據(jù)查詢結(jié)果生成同步的針對數(shù)據(jù)表的第一預(yù)提交任務(wù)和針對外置索引表的第二預(yù)提交任務(wù),解決了不支持分布式數(shù)據(jù)庫系統(tǒng)的外置全局二級索引的問題。[0129]由于是代理層根據(jù)數(shù)據(jù)處理請求生成分布式事務(wù)中的第一預(yù)提交任務(wù)和第二預(yù)提交任務(wù),在生成第二預(yù)提交任務(wù)時將SQL語句轉(zhuǎn)換為目標數(shù)據(jù)源(即外置索引表)能識別的語句,因此可以解決現(xiàn)有技術(shù)中,只能寫入一種數(shù)據(jù)源的問題,避免只能寫入行存數(shù)據(jù)源,不支持列存數(shù)據(jù)源的問題。本實施例的數(shù)據(jù)處理方法可以由任意適當?shù)木哂袛?shù)據(jù)處理[0131]參照圖6,示出了根據(jù)本發(fā)明實施例六的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。[0132]本實施例的數(shù)據(jù)處理裝置包括:事務(wù)生成模塊602,用于接收用于指示針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù),其中,所述分布式事務(wù)包括指示針對數(shù)據(jù)表的第一預(yù)提交任務(wù),和,指示針對與所述數(shù)據(jù)表對應(yīng)的外置索引表的第二預(yù)提交任務(wù);信息接收模塊604,用于接收所述數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行狀態(tài)信息、和、所述第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息;提交模塊606,用于若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則提交所述分布式事務(wù)以完成所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。[0133]通過本實施例,根據(jù)接收的數(shù)據(jù)處理請求生成對應(yīng)的分布式事務(wù),以指示數(shù)據(jù)庫對數(shù)據(jù)表和外置索引表進行處理,并根據(jù)第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息確定數(shù)據(jù)表和外置狀態(tài)表是否可以執(zhí)行成功,并在第一執(zhí)行狀態(tài)信息和第二執(zhí)行狀態(tài)信息均指示執(zhí)行成功時,才提交分布式事務(wù)對數(shù)據(jù)表和外置索引表執(zhí)行數(shù)據(jù)處理,確保了在任意時刻數(shù)據(jù)表和外置索引表中數(shù)據(jù)均一致,解決了現(xiàn)有技術(shù)中外置索引表存在與數(shù)據(jù)表中數(shù)據(jù)不一致的狀態(tài),導(dǎo)致用戶通過外置索引表進行數(shù)據(jù)檢索時會獲得錯誤的檢索結(jié)果的問題。[0135]參照圖7,示出了根據(jù)本發(fā)明實施例七的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)框圖。[0136]本實施例的數(shù)據(jù)處理裝置包括:事務(wù)生成模塊702,用于接收用于指示針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù),其中,所述分布式事務(wù)包括指示針對數(shù)據(jù)表的第一預(yù)提交任務(wù),和,指示針對與所述數(shù)據(jù)表對應(yīng)的外置索引表的第二預(yù)提交任務(wù);信息接收模塊704,用于接收所述數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行狀態(tài)信息、和、所述第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息;提交模塊706,用于若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則提交所述分布式事務(wù)以完成所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。[0137]可選地,所述裝置還包括:回滾模塊708,用于若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息中至少一個指示任務(wù)執(zhí)行失敗,則生成回滾消息,以通過所述回滾消息指示對所述第一預(yù)提交任務(wù)和/或所述第二預(yù)提交任務(wù)進行回滾操作。[0138]可選地,所述事務(wù)生成模塊702包括:第一獲取模塊7021,用于獲取所述數(shù)據(jù)處理請求中的SQL語句;第一確定模塊7022,用于判斷所述SQL語句是否為包含插入操作的SQL語句;第一生成模塊7023,用于根據(jù)所述判斷結(jié)果確定查詢語句,并根據(jù)所述查詢語句和所述SQL語句生成對應(yīng)的所述分布式事務(wù)。[0139]可選地,所述第一生成模塊7023包括:第二確定模塊7023a,用于若所述判斷結(jié)果一查詢語句用于指示查詢與所述SQL語句指示的待處理記錄沖突的記錄;第二獲取模塊7023b,用于根據(jù)所述第一查詢語句獲得第一查詢結(jié)果;第二生成模塊7023c,用于根據(jù)所述[0140]可選地,所述第二生成模塊7023c包括:第三確定模塊,用于若確定所述SQL語句為包括指示放棄沖突記錄的第一子句的插入語句,則根據(jù)所述SQL語句指示的所述待處理記錄和所述第一查詢結(jié)果,確定所述待處理記錄中與所述第一查詢結(jié)果不匹配的第一記錄;第三生成模塊,用于生成指示向所述數(shù)據(jù)表中插入所述第一記錄的所述第一預(yù)提交任務(wù),和,指示向所述外置索引表中插入所述第一記錄的所述第二預(yù)提交任務(wù);第四生成模塊,用于根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù)生成所述分布式事務(wù)。[0141]可選地,所述第二生成模塊7023c包括:第四確定模塊,用于若確定所述SQL語句為包括指示更新記錄的第二子句的插入語句時,則獲取所述SQL語句指示的所述待處理記錄中與所述第一查詢結(jié)果不匹配的第一記錄和與所述第一查詢結(jié)果匹配的第二記錄;第五生成模塊,用于生成指示向所述數(shù)據(jù)表中插入所述第一記錄,且使用所述第二記錄更新所述數(shù)據(jù)表中的所述第一查詢結(jié)果的所述第一預(yù)提交任務(wù);以及,第六生成模塊,用于生成指示向所述外置索引表中插入所述第一記錄,且使用所述第二記錄更新所述外置索引表中所述第一查詢結(jié)果的所述第二預(yù)提交任務(wù);第七生成模塊,用于根據(jù)生成的所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。[0142]可選地,所述第二生成模塊7023c包括:第八生成模塊,用于若確定所述SQL語句為用于指示進行記錄替換的替換語句,則根據(jù)所述第一查詢結(jié)果、所述SQL語句及所述SQL語句指示的待處理記錄,生成所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),并根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù);其中,所述第一預(yù)提交任務(wù)指示刪除所述數(shù)據(jù)表中所述第一查詢結(jié)果,并向所述數(shù)據(jù)表中插入所述待處理記錄;所述第二預(yù)提交任務(wù)指示刪除所述外置索引表中所述第一查詢結(jié)果,并向所述外置索引表中插入所述待處理記錄。[0143]可選地,所述第一查詢結(jié)果包括表沖突記錄,或者,所述第一查詢結(jié)果包括表沖突記錄和索引沖突記錄。[0144]可選地,所述第一生成模塊7023包括:第九生成模塊7023d,用于若所述判斷結(jié)果查詢語句用于指示獲取所述數(shù)據(jù)表中符合所述SQL語句中的條件子句的記錄;第三獲取模塊7023e,用于根據(jù)所述第二查詢語句獲得第二查詢結(jié)果;第十生成模塊7023f,用于根據(jù)所述第二查詢結(jié)果和所述SQL語句,生成所述分布式事務(wù)。[0145]可選地,所述第十生成模塊7023f包括:第十一生成模塊,用于當所述SQL語句為更新語句時,根據(jù)所述SQL語句生成第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);其中,所述第一預(yù)提交任務(wù)指示根據(jù)所述SQL語句更新所述數(shù)據(jù)表中第二查詢結(jié)果;所述第二預(yù)提交任務(wù)指示根據(jù)所述SQL語句更新所述外置索引表中與第二查詢結(jié)果對應(yīng)的記錄;第十二生成模塊,用于根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。[0146]可選地,所述第十生成模塊7023f包括:第十三生成模塊,用于當所述SQL語句為刪除語句時,根據(jù)所述SQL語句生成第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);其中,所述第一預(yù)提交任務(wù)指示根據(jù)所述SQL語句刪除所述數(shù)據(jù)表中第二查詢結(jié)果;所述第二預(yù)提交任務(wù)指示根據(jù)所述SQL語句刪除所述外置索引表中與第二查詢結(jié)果對應(yīng)的記錄;第十四生成模塊,用于根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),生成所述分布式事務(wù)。[0147]可選地,所述第一獲取模塊7021包括:替換模塊7021a,用于從所述數(shù)據(jù)處理請求中獲取原始SQL語句,并將所述原始SQL語句中的動態(tài)函數(shù)替換為常量;第十五生成模塊7021b,用于根據(jù)替換結(jié)果生成替換后的SQL語句。[0148]可選地,所述第十五生成模塊7021b包句確定待處理的所述數(shù)據(jù)表,并確定所述數(shù)據(jù)表的主鍵是否為自增主鍵,且原始SQL語句中是否存在包含插入操作的語句;第十六生成模塊,用于若是自增主鍵且存在包含插入操作的語句,則生成全局唯一的自增值,并根據(jù)所述自增值和所述替換結(jié)果生成替換后的SQL語[0149]需要說明的是,前述的第四生成模塊、第七生成模塊、第八生成模塊、第十二生成模塊和第十四生成模塊可以是同一個模塊,也可以是多個不同的模塊。[0150]本實施例的數(shù)據(jù)處理裝置用于實現(xiàn)前述多個方法實施例中相應(yīng)的數(shù)據(jù)處理方法,并具有相應(yīng)方法實施例的有益效果,在此不再贅述。[0152]參照圖8a,示出了根據(jù)本發(fā)明的實施例八的一種數(shù)據(jù)庫系統(tǒng)的結(jié)構(gòu)示意圖。[0153]如圖8a所示,數(shù)據(jù)庫系統(tǒng)包括代理層、存儲層和至少一個數(shù)據(jù)庫層,所述至少一個數(shù)據(jù)庫層上配置有多個數(shù)據(jù)庫實例,各所述數(shù)據(jù)庫實例均與至少一個所述存儲層連接,所述存儲層用于存儲所述數(shù)據(jù)庫層中的數(shù)據(jù);所述代理層用于執(zhí)行前述的數(shù)據(jù)處理方法指示的操作,以向至少一個所述數(shù)據(jù)庫層中的至少一個所述數(shù)據(jù)庫實例發(fā)送所述分布式事務(wù)中的所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);接收所述分布式事務(wù)的數(shù)據(jù)庫層根據(jù)所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù),指示對應(yīng)的數(shù)據(jù)庫實例與存儲層交互,以執(zhí)行所述第一預(yù)提交任務(wù)和所述第二預(yù)提交任務(wù);并且,向所述代理層返回對應(yīng)的所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息。[0154]代理層可以部署在獨立的服務(wù)器中,也可以部署在某一個或某幾個數(shù)據(jù)庫層中。在本實施例中,以代理層部署在獨立的服務(wù)器中為例,代理層還用于獲取針對數(shù)據(jù)庫實例中的數(shù)據(jù)處理請求,并根據(jù)分庫分表算法將所述數(shù)據(jù)處理請求路由到至少一個所述數(shù)據(jù)庫實例上,以管理和操作所述多個數(shù)據(jù)庫實例。[0155]數(shù)據(jù)庫層可以是一個或多個,每個數(shù)據(jù)庫層中可以包括一個或多個數(shù)據(jù)庫實例,只需保證配置有多個數(shù)據(jù)庫實例,從而可以分散數(shù)據(jù)處理壓力即可。各數(shù)據(jù)庫實例均對應(yīng)連接有存儲層,存儲層用于存儲數(shù)據(jù)表和外置索引表。[0156]需要說明的是,不同的數(shù)據(jù)庫實例連接的存儲層可以在同一存儲磁盤上,也可以分布在不同的存儲磁盤上。[0157]通過本實施例,可以確保在任意時刻數(shù)據(jù)表和外置索引表中數(shù)據(jù)均一致,解決了現(xiàn)有技術(shù)中最終一致方案中外置索引表存在與數(shù)據(jù)表中數(shù)據(jù)不一致的狀態(tài),導(dǎo)致用戶通過外置索引表進行數(shù)據(jù)檢索時會獲得錯誤的檢索結(jié)果的問題。[0158]下面結(jié)合圖8b和圖8c,對數(shù)據(jù)處理過程進行說明如下:[0159]代理層從客戶端獲取數(shù)據(jù)處理請求,例如為原始SQL語句,并根據(jù)數(shù)據(jù)處理請求開[0160]根據(jù)原始SQL語句,確定待處理的數(shù)據(jù)表,若需要,則填充待處理的數(shù)據(jù)表的自增字段。例如,待處理的數(shù)據(jù)表的主鍵是自增主鍵,且原始SQL語句中包含插入操作(如,包含insert語句等)的情況下,填充待處理的數(shù)據(jù)表的自增主鍵。若不需要,則可以省略該動作。[0161]若原始SQL語句中存在動態(tài)函數(shù),則將原始SQL語句中的動態(tài)函數(shù)替換為常量,并生成替換后的SQL語句。例如,原始SQL語句中包含now()函數(shù),則將now()替換為對應(yīng)的當[0162]根據(jù)替換后的SQL語句,確定是否包含插入操作。其中,包含插入操作的SQL語句例[0163]在第一種情況中,若包含插入操作,則按主鍵和唯一鍵在數(shù)據(jù)表中查詢沖突記錄(也稱為匹配記錄)。并確認是否有全局唯一索引鍵,若有則按全局唯一索引鍵在外置索引表中查詢沖突記錄(也稱為匹配記錄)。若無全局唯一索引鍵,則可以省略該動作。[0164]在第一種情況中,子情況A,查詢沖突記錄后(可能存在沖突記錄,也可能不存在沖突記錄),若替換后SQL語句包含replace語句,則指示刪除數(shù)據(jù)表和外置索引表中所有沖突記錄,并指示將替換后SQL語句指示的所有記錄插入到數(shù)據(jù)表和外置索引表中。在數(shù)據(jù)表和外置索引表返回的狀態(tài)都指示處理成功的情況下,提交分布式事務(wù)。[0165]在第一種情況中,子情況B,查詢沖突記錄后,若替換后SQL語句包含onduplicatekeyupdate,則指示向數(shù)據(jù)表和外置索引表插入替換后的SQL語句指示的所有記錄中與沖突記錄不匹配的記錄,并更新數(shù)據(jù)表和外置索引表中所有沖突記錄。在數(shù)據(jù)表和外置索引表返回的狀態(tài)都指示處理成功的情況下,提交分布式事務(wù)。[0166]在第一情況中,子情況C,查詢沖突記錄后,若替換后SQL語句包含ignore,則指示向數(shù)據(jù)表和外置索引表插入替換后的SQL語句指示的所有記錄中與沖突記錄不匹配的記錄;若替換后SQL語句不包含ignore,則指示向數(shù)據(jù)表和外置索引表插入替換后的SQL語句指示的所有記錄。在數(shù)據(jù)表和外置索引表返回的狀態(tài)都指示處理成功的情況下,提交分布式事務(wù)。[0167]在第二種情況中,若未包含插入操作,則按替換后的SQL語句中的條件子句在數(shù)據(jù)表中查詢匹配記錄。在查詢匹配記錄后,若替換后的SQL語句為更新語句,則指示更新數(shù)據(jù)表和外置索引表中的匹配記錄,在數(shù)據(jù)表和外置索引表返回的狀態(tài)都指示處理成功的情況下,提交分布式事務(wù);若替換后的SQL語句不為更新語句,則指示刪除數(shù)據(jù)表和外置索引表中的匹配記錄,在數(shù)據(jù)表和外置索引表返回的狀態(tài)都指示處理成功的情況下,提交分布式事務(wù)。[0168]通過上述過程,可以保證對數(shù)據(jù)表和外置索引表的數(shù)據(jù)處理一致,從而保證兩者數(shù)據(jù)的一致性。[0170]參照圖9,示出了根據(jù)本發(fā)明實施九的一種電子設(shè)備的結(jié)構(gòu)示意圖,本發(fā)明具體實施例并不對電子設(shè)備的具體實現(xiàn)做限定。[0173]處理器802、通信接口804、以及存儲器806通過通信總線808完成相互間的通信。[0174]通信接口804,用于與其它電子設(shè)備如終端設(shè)備或服務(wù)器進行通信。[0175]處理器802,用于執(zhí)行程序810,具體可以執(zhí)行上述數(shù)據(jù)處理方法實施例中的相關(guān)[0176]具體地,程序810可以包括程序代碼,該程序代碼包括計算機操作指令。[0177]處理器802可能是中央處理器CPU,或者是特定集成電路ASIC(ApplicationSpecificIntegratedCircuit),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。電子設(shè)備包括的一個或多個處理器,可以是同一類型的處理器,如一個或多以是不同類型的處理器,如一個或多個CPU以及一個或多個ASIC。[0178]存儲器806,用于存放程序810。存儲器806可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatilememory),例如至少一個磁盤存儲器。[0179]程序810具體可以用于使得處理器802執(zhí)行以下操作:接收用于指示針對數(shù)據(jù)庫的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù),其中,所述分布式事務(wù)包括指示針對數(shù)據(jù)表的第一預(yù)提交任務(wù),和,指示針對與所述數(shù)據(jù)表對應(yīng)的外置索引表的第二預(yù)提交任務(wù);接收所述數(shù)據(jù)庫返回的所述第一預(yù)提交任務(wù)的第一執(zhí)行狀態(tài)信息、和、所述第二預(yù)提交任務(wù)的第二執(zhí)行狀態(tài)信息;若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息均指示任務(wù)執(zhí)行成功,則提交所述分布式事務(wù)以完成所述數(shù)據(jù)表和所述外置索引表的數(shù)據(jù)處理。[0180]在一種可行方式中,程序810還用于使得處理器802若所述第一執(zhí)行狀態(tài)信息和所述第二執(zhí)行狀態(tài)信息中至少一個指示任務(wù)執(zhí)行失敗,則生成回滾消息,以通過所述回滾消息指示對所述第一預(yù)提交任務(wù)和/或所述第二預(yù)提交任務(wù)進行回滾操作。[0181]在一種可行方式中,程序810還用于使得處理器802在接收用于指示對數(shù)據(jù)庫中的數(shù)據(jù)表進行處理的數(shù)據(jù)處理請求,生成對應(yīng)的分布式事務(wù)時,獲取所述數(shù)據(jù)處理請求中的句,并根據(jù)所述查詢語句和所述SQL語句生成對應(yīng)的所述分布式事務(wù)。[0182]在一種可行方式中,程序810還用于使得處理器802在根據(jù)所述判斷結(jié)果確定查詢語句,并根據(jù)所述查詢語句和所述SQL語句生成對應(yīng)的所述分布式事務(wù)時,若所述判斷結(jié)果一查詢語句用于指示查詢與所述SQL語句指示的待處理記錄沖突的記錄;根據(jù)所述第一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論