Num from QueryConfirmTab where ClientId=I;
[0070]此時,客戶端將TxnExecNum與本地記錄的交易唯一標(biāo)識中包含的TxnExecNum值對比,相同表示交易執(zhí)行成功,否則表示交易執(zhí)行失敗。
[0071]場景二:
[0072]大量的企業(yè)有千萬級別以上的客戶信息,經(jīng)常有需要將客戶信息數(shù)據(jù)導(dǎo)入或?qū)С龅囊?。為避免大交易?dǎo)致的性能問題和大量鎖記錄問題,通常采用分批方式進(jìn)行并發(fā)交易處理。
[0073]假設(shè)將一千萬的客戶信息數(shù)據(jù)從文件中按照I萬條一批的方式用SQL語句INSERT的方法導(dǎo)入到數(shù)據(jù)庫中。
[0074]為了讓過程描述更清晰,本發(fā)明實施例采用簡化處理,按每1000條一個交易的方式進(jìn)行串行處理,并行處理的方法也是類似的。由于大量數(shù)據(jù)的導(dǎo)入時間長,導(dǎo)入過程中很有可能出現(xiàn)異常的情況,為了保證導(dǎo)入過程的可重入,避免出錯后清理已導(dǎo)入的數(shù)據(jù),再由第一條記錄開始重新導(dǎo)入,則能夠在出現(xiàn)異常后查詢到導(dǎo)入過程的進(jìn)度變得很重要,需要確認(rèn)已成功導(dǎo)入到哪個批次,從而保證在故障恢復(fù)后,從中斷點繼續(xù)進(jìn)行后續(xù)批次的導(dǎo)入工作,實現(xiàn)批量數(shù)據(jù)處理的可重入。
[0075]在本發(fā)明實施例中,客戶表名為CustomerInfoTab,包含三個字段:
[0076]I) id-客戶標(biāo)識2) name -客戶名稱3) age -客戶年齡
[0077]賦予批量客戶導(dǎo)入交易的簡稱為CIBatln??蛻舳说膽?yīng)用程序在數(shù)據(jù)庫服務(wù)器上配置交易確認(rèn)表,并初始化交易確認(rèn)表。
[0078]建表語句示例如下:
[0079]Create table QueryConfirmTab (
[0080]ClientID int,//客戶端 ID
[0081]TxnName varchar (20), // 交易簡稱
[0082]TxnExecNum int//已經(jīng)成功執(zhí)行的批次的流水號);
[0083]在該場景中,交易唯一標(biāo)識由ClientlD+TxnName+TxnExecNum構(gòu)成,格式為:ClientID_TxnName_TxnExecNum。在本例中假設(shè)客戶端的 ClientID 為 I,即 ClientID的初始值為1,TxnName的初始值為Null,TxnExecNum的初始值為0,第一個批次的交易唯一標(biāo)識為 l_CIBatIn_l。
[0084]在執(zhí)行數(shù)據(jù)導(dǎo)入交易前執(zhí)行初始化交易確認(rèn)表的動作,語句示例如下:
[0085]Insert into QueryConfirmTab values(1,’null’,O);
[0086]準(zhǔn)備好當(dāng)前批次的數(shù)據(jù)后,發(fā)起批量導(dǎo)入交易,交易語句中包含更新交易確認(rèn)表的語句,TxnExecNum字段賦予的當(dāng)前運行的批次流水號。語句示例如下:
[0087]begin;
[0088]update QueryConfirmTab Set TxnName=' CIBatIn' , TxnExecNum=Iwhere
[0089]ClientID=I;
[0090]insert into CustomerInfoTab values (:1dl,:NameI,:Agel), (:1d2,:Name2,
[0091]:Age2),......,(:1dlOOO,:Name1000,:AgelOOO)
[0092]commit;
[0093]如果數(shù)據(jù)庫服務(wù)器向客戶端正常返回上述交易的執(zhí)行結(jié)果,客戶端無須任何特殊處理。
[0094]如果出現(xiàn)異常,數(shù)據(jù)庫服務(wù)器沒有向客戶端返回上述交易的執(zhí)行結(jié)果,則客戶端需要執(zhí)行命令,確認(rèn)交易執(zhí)行結(jié)果。語句示例如下:
[0095]select TxnName, TxnExecNum from QueryConfirmTab where ClientID=I;
[0096]此時,客戶端將TxnExecNum與本地記錄的交易唯一標(biāo)識包含的TxnExecNum值對t匕,相同表示交易執(zhí)行成功,否則表示交易執(zhí)行失敗。
[0097]在按批次進(jìn)行串行批量插入的過程中,如果有故障發(fā)生,對故障發(fā)生時未成功導(dǎo)入的批次,數(shù)據(jù)庫服務(wù)器會進(jìn)行回滾(Rollback)操作,交易確認(rèn)表中TxnExecNum保存的就是最后一次成功導(dǎo)入的批次號。當(dāng)故障恢復(fù)時,可再次執(zhí)行導(dǎo)入操作(重入),此時,客戶端可以從TxnExecNum的下一個批次開始繼續(xù)進(jìn)行導(dǎo)入操作,從而實現(xiàn)斷點處理功能。
[0098]圖2示出了本發(fā)明實施例提供的數(shù)據(jù)庫交易結(jié)果確認(rèn)裝置的結(jié)構(gòu),為了便于說明,僅不出了與本發(fā)明實施例相關(guān)的部分。
[0099]該裝置可以集成到各種數(shù)據(jù)庫交易系統(tǒng)中。
[0100]在本發(fā)明實施例中,數(shù)據(jù)庫服務(wù)器上配置有交易確認(rèn)表,該交易確認(rèn)表中記錄最后一次成功執(zhí)行的交易唯一標(biāo)識,該交易唯一標(biāo)識至少包括客戶端唯一標(biāo)識和成功執(zhí)行的交易的流水號。
[0101 ] 作為本發(fā)明的一個實施例,客戶端唯一標(biāo)識還包括用來標(biāo)識客戶端發(fā)起的交易的類型的交易類型標(biāo)識。
[0102]作為本發(fā)明的一個實施例,客戶端唯一標(biāo)識中的不同標(biāo)識信息分別記錄在交易確認(rèn)表的不同的字段中,或者組合記錄在交易確認(rèn)表的一個或者多個字段中。
[0103]交易唯一標(biāo)識生成單元21生成并記錄交易唯一標(biāo)識。
[0104]交易語句提交單元22將該交易唯一標(biāo)識對應(yīng)的交易語句和更新交易確認(rèn)表中的交易唯一標(biāo)識的語句作為一個交易提交給數(shù)據(jù)庫服務(wù)器。
[0105]在接收數(shù)據(jù)庫服務(wù)器返回交易執(zhí)行結(jié)果的過程中發(fā)生異常時,交易唯一標(biāo)識獲取單元23向數(shù)據(jù)庫服務(wù)器發(fā)起交易唯一標(biāo)識查詢請求,獲取交易確認(rèn)表的交易唯一標(biāo)識。
[0106]交易執(zhí)行結(jié)果判斷單元24將交易唯一標(biāo)識獲取單元23獲取的交易唯一標(biāo)識與客戶端本地記錄的交易唯一標(biāo)識進(jìn)行對比,判斷當(dāng)前交易是否執(zhí)行成功。
[0107]在本發(fā)明實施例中,交易確認(rèn)表可以由用戶手工在數(shù)據(jù)庫服務(wù)器端配置,或者由客戶端自動在數(shù)據(jù)庫服務(wù)器上配置。配置完成后,初始化交易確認(rèn)表的交易唯一標(biāo)識。
[0108]當(dāng)由客戶端自動在數(shù)據(jù)庫服務(wù)器上配置交易確認(rèn)表時,交易確認(rèn)表配置單元25在數(shù)據(jù)庫服務(wù)器上配置交易確認(rèn)表,并初始化交易確認(rèn)表。
[0109]本發(fā)明實施例可以應(yīng)用在各行業(yè)核心應(yīng)用系統(tǒng)中,不管采用兩層結(jié)構(gòu)、三層結(jié)構(gòu)還是多層結(jié)構(gòu),可實現(xiàn)異常條件下的交易查詢,實現(xiàn)故障交易自動沖正功能,不需要人工操作,避免了誤操作帶來的損失。
[0110]在分布式交易處理系統(tǒng)中,客戶端需要訪問物理上隔離的多個數(shù)據(jù)庫,并在多個數(shù)據(jù)庫間保證交易的一致性。采用本發(fā)明實施例,分布式交易處理系統(tǒng)可確認(rèn)每個數(shù)據(jù)庫最后處理的交易狀態(tài),從而保證故障發(fā)生后各數(shù)據(jù)庫交易的一致性。
[0111]在基于數(shù)據(jù)庫日志的數(shù)據(jù)庫復(fù)制和遷移系統(tǒng)中,采用本發(fā)明實施可確認(rèn)目標(biāo)數(shù)據(jù)庫最后處理的交易,實現(xiàn)斷點處理功能,提聞容錯能力,提聞系統(tǒng)的穩(wěn)定性。
[0112]在大批量數(shù)據(jù)庫數(shù)據(jù)處理時,采用本發(fā)明實施例可實現(xiàn)批量處理的可重入和斷點處理功能,大幅度提高批量處理的效率。
[0113]本發(fā)明實施例解決了在網(wǎng)絡(luò)中斷、掉電、數(shù)據(jù)庫宕等異常條件下,客戶端不需要查詢交易的特征數(shù)據(jù),就可以快速確認(rèn)最后一次交易是否成功,從而實現(xiàn)交易自動沖正功能和大批量數(shù)據(jù)的斷點處理功能,尤其適用于平臺級軟件和大批量數(shù)據(jù)的處理。
[0114]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項】
1.一種數(shù)據(jù)庫交易結(jié)果確認(rèn)方法,其特征在于,所述方法包括下述步驟: 生成并記錄交易唯一標(biāo)識; 將所述交易唯一標(biāo)識對應(yīng)的交易語句和更新交易確認(rèn)表中的交易唯一標(biāo)識的語句作為一個交易提交給數(shù)據(jù)庫服務(wù)器; 在接收數(shù)據(jù)庫服務(wù)器返回交易執(zhí)行結(jié)果的過程中發(fā)生異常時,向數(shù)據(jù)庫服務(wù)器發(fā)起交易唯一標(biāo)識查詢請求,獲取交易確認(rèn)表的交易唯一標(biāo)識; 將從交易確認(rèn)表獲取的交易唯一標(biāo)識與客戶端本地記錄的交易唯一標(biāo)識進(jìn)行對比,判斷當(dāng)前交易是否執(zhí)行成功; 所述交易確認(rèn)表配置在數(shù)據(jù)庫服務(wù)器; 所述交易唯一標(biāo)識至少包括客戶端唯一標(biāo)識和成功執(zhí)行的交易的流水號。
2.如權(quán)利要求1所述的數(shù)據(jù)庫交易結(jié)果確認(rèn)方法,其特征在于,所述方法還包括如下步驟: 在數(shù)據(jù)庫服務(wù)器上配置交易確認(rèn)表,并初始化交易確認(rèn)表中的交易唯一標(biāo)識。
3.如權(quán)利要求1所述的數(shù)據(jù)庫交易結(jié)果確認(rèn)方法,其特征在于,所述客戶端唯一標(biāo)識還包括交易類型標(biāo)識。
4.如權(quán)利要求1、2或3所述的數(shù)據(jù)庫交易結(jié)果確認(rèn)方法,其特征在于,所述交易唯一標(biāo)識中的不同標(biāo)識信息分別記錄在所述交易確認(rèn)表的不同的字段中,或者組合記錄在所述交易確認(rèn)表的一個或者多個字段中。
5.一種數(shù)據(jù)庫交易結(jié)果確認(rèn)裝置,其特征在于,所述裝置包括: 交易唯一標(biāo)識生成單元,用于生成并記錄交易唯一標(biāo)識; 交易語句提交單元,用于將所述交易唯一標(biāo)識對應(yīng)的交易語句和更新交易確認(rèn)表中的交易唯一標(biāo)識的語句作為一個交易提交給數(shù)據(jù)庫服務(wù)器; 交易唯一標(biāo)識獲取單元,用于在接收數(shù)據(jù)庫服務(wù)器返回交易執(zhí)行結(jié)果的過程中發(fā)生異常時,向數(shù)據(jù)庫服務(wù)器發(fā)起交易唯一標(biāo)識查詢請求,獲取交易確認(rèn)表的交易唯一標(biāo)識;以及交易執(zhí)行結(jié)果判斷單元,用于將從交易確認(rèn)表獲取的交易唯一標(biāo)識與客戶端本地記錄的交易唯一標(biāo)識進(jìn)行對比,判斷當(dāng)前交易是否執(zhí)行成功; 所述交易確認(rèn)表配置在數(shù)據(jù)庫服務(wù)器; 所述交易唯一標(biāo)識至少包括客戶端唯一標(biāo)識和成功執(zhí)行的交易的流水號。
6.如權(quán)利要求5所述的數(shù)據(jù)庫交易結(jié)果確認(rèn)裝置,其特征在于,所述裝置還包括: 交易確認(rèn)表配置單元,用于在數(shù)據(jù)庫服務(wù)器上配置交易確認(rèn)表,并初始化交易確認(rèn)表中的交易唯一標(biāo)識。
7.如權(quán)利要求5所述的數(shù)據(jù)庫交易結(jié)果確認(rèn)裝置,其特征在于,所述客戶端唯一標(biāo)識還包括交易類型標(biāo)識。
8.如權(quán)利要求5、6或7所述的數(shù)據(jù)庫交易結(jié)果確認(rèn)裝置,其特征在于,所述交易唯一標(biāo)識中的不同標(biāo)識信息分別記錄在所述交易確認(rèn)表的不同的字段中,或者組合記錄在所述交易確認(rèn)表的一個或者多個字段中。
9.一種數(shù)據(jù)庫交易系統(tǒng),其特征在于,所述數(shù)據(jù)庫交易系統(tǒng)中包含有權(quán)利要求5至8任一權(quán)利要求所述的數(shù)據(jù)庫交易結(jié)果確認(rèn)裝置。
【專利摘要】本發(fā)明適用于數(shù)據(jù)庫處理領(lǐng)域,提供了一種數(shù)據(jù)庫交易結(jié)果確認(rèn)方法、裝置及系統(tǒng),通過查詢在數(shù)據(jù)庫服務(wù)器上配置的交易確認(rèn)表記錄的交易唯一標(biāo)識,判斷交易是否成功執(zhí)行,不需要查詢交易的特征數(shù)據(jù),從而實現(xiàn)交易自動沖正功能和大批量數(shù)據(jù)的斷點處理功能,尤其適用于平臺級軟件和大批量數(shù)據(jù)的處理。
【IPC分類】G06F17-30
【公開號】CN104794138
【申請?zhí)枴緾N201410030584
【發(fā)明人】金清德
【申請人】深圳市沃信科技有限公司
【公開日】2015年7月22日
【申請日】2014年1月22日