專利名稱:存儲數(shù)據(jù)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機(jī)領(lǐng)域,特別涉及一種存儲數(shù)據(jù)的方法和裝置。
背景技術(shù):
在面向數(shù)據(jù)庫的應(yīng)用系統(tǒng)中,經(jīng)常會存在一種情況,如果客戶端持有的數(shù)據(jù)可以匹配到數(shù)據(jù)庫的一條記錄,則去更新該記錄;如果匹配不到,則需要插入一條新紀(jì)錄。但在高并發(fā)應(yīng)用場景下,經(jīng)常會出現(xiàn)兩個客戶端同時插入兩條相同的記錄,導(dǎo)致數(shù)據(jù)庫表中出現(xiàn)重復(fù)記錄,即產(chǎn)生了數(shù)據(jù)錯誤。為此,一般的解決方案是直接在關(guān)鍵字段上添加唯一索引,如果兩個客戶端同時插入相同記錄,在提交數(shù)據(jù)的時候會拋出違反唯一索引的異常信息。在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題用戶更新數(shù)據(jù)庫時,當(dāng)發(fā)現(xiàn)不能匹配的數(shù)據(jù)條目時,用戶在完成一系列操作之后才插入新的數(shù)據(jù)條目,如果插入過程中遇到異常信息,則用戶需要重復(fù)上述一系列操作來完成原本可以一次完成的任務(wù),而且如果上述一系列操作關(guān)聯(lián)了別的服務(wù),如工作流服務(wù), 則由于違反唯一索引導(dǎo)致的錯誤,終止了當(dāng)前用戶操作,同時也掛起了這些關(guān)聯(lián)服務(wù)。用戶同時需要處理這些被掛起的服務(wù),增加用戶工作量,降低工作效率。
發(fā)明內(nèi)容
為了解決更新數(shù)據(jù)庫時遇到異常信息會終止當(dāng)前用戶操作的問題,本發(fā)明實施例提供了一種存儲數(shù)據(jù)的方法和裝置。所述技術(shù)方案如下一方面,提供了一種存儲數(shù)據(jù)的方法,包括判斷客戶端提交的數(shù)據(jù)集中是否存在不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目;如果存在,則對所述客戶端提交的數(shù)據(jù)集中的每一條不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目,均開啟新的數(shù)據(jù)庫事務(wù),把所述數(shù)據(jù)條目插入到所述數(shù)據(jù)庫中;提交所述新的數(shù)據(jù)庫事務(wù);如果所述提交過程中遇到異常信息,則攔截所述異常信息;將所述客戶端提交的數(shù)據(jù)集中不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目與所述數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行匹配;更新所述數(shù)據(jù)庫。所述判斷客戶端提交的數(shù)據(jù)集中是否存在不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目,之前還包括將客戶端提交的數(shù)據(jù)集中匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行鎖定。所述將所述客戶端提交的數(shù)據(jù)集中不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目與所述數(shù)據(jù)庫中的條目進(jìn)行匹配,之后還包括將所述匹配到的數(shù)據(jù)條目進(jìn)行鎖定。所述更新所述數(shù)據(jù)庫,之前還包括
對所述客戶端提交的數(shù)據(jù)集進(jìn)行校驗。另一方面,提供了一種存儲數(shù)據(jù)的裝置,包括判斷模塊,用于判斷客戶端提交的數(shù)據(jù)集中是否存在不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目;開啟模塊,用于如果存在,則對所述客戶端提交的數(shù)據(jù)集中的每一條不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目,均開啟新的數(shù)據(jù)庫事務(wù),把所述數(shù)據(jù)條目插入到所述新的數(shù)據(jù)庫中;提交模塊,用于提交所述新的數(shù)據(jù)庫事務(wù);攔截模塊,用于如果所述插入過程中遇到異常信息,則攔截所述異常信息。匹配模塊,用于將所述客戶端提交的數(shù)據(jù)集中不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目與所述數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行匹配;更新模塊,用于更新所述數(shù)據(jù)庫。所述裝置還包括第一鎖定模塊,用于當(dāng)所述判斷模塊判斷出不能匹配的數(shù)據(jù)條目前,將客戶端提交的數(shù)據(jù)集中匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行鎖定。所述裝置還包括第二鎖定模塊,用于在所述匹配模塊進(jìn)行匹配后,將所述匹配到的數(shù)據(jù)條目進(jìn)行鎖定。所述裝置還包括校驗?zāi)K,用于在所述更新模塊對所述數(shù)據(jù)庫進(jìn)行更新之前,對所述客戶端提交的數(shù)據(jù)集進(jìn)行校驗。本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是在更新數(shù)據(jù)庫時,當(dāng)存在有不匹配的數(shù)據(jù)條目時,立即將該條目插入到數(shù)據(jù)庫中,當(dāng)插入過程中遇到異常信息時,攔截此異常信息,使客戶端的工作不會被終止,解決了拋出的異常信息會終止當(dāng)前用戶操作的問題。
圖1是本發(fā)明實施例1中提供的一種存儲數(shù)據(jù)的方法;圖2是本發(fā)明實施例2中提供的一種存儲數(shù)據(jù)的方法;圖3是本發(fā)明實施例3中提供的一種存儲數(shù)據(jù)的裝置;圖4是本發(fā)明實施例3中提供的一種存儲數(shù)據(jù)的裝置。
具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進(jìn)一步地詳細(xì)描述。實施例1參見圖1,本實施例提供了一種存儲數(shù)據(jù)的方法,包括步驟101 判斷客戶端提交的數(shù)據(jù)集中是否存在不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目;
步驟102 如果存在,則對客戶端提交的數(shù)據(jù)集中的每一條不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目,均開啟新的數(shù)據(jù)庫事務(wù),把數(shù)據(jù)條目插入到所述數(shù)據(jù)庫中;步驟103 提交新的數(shù)據(jù)庫事務(wù);步驟104 如果提交過程中遇到異常信息,則攔截異常信息;步驟105 將客戶端提交的數(shù)據(jù)集中不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目與數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行匹配;步驟106 更新數(shù)據(jù)庫。本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是在更新數(shù)據(jù)庫時,當(dāng)存在有不匹配的數(shù)據(jù)條目時,立即將該條目插入到數(shù)據(jù)庫中,如果插入過程中遇到異常信息,則攔截此異常信息,使客戶端的工作不會被終止,解決了拋出的異常信息會終止當(dāng)前用戶操作的問題。實施例2參見如圖2,本發(fā)明實施例提供了一種存儲數(shù)據(jù)的方法,包括步驟201 數(shù)據(jù)庫系統(tǒng)接收客戶端所提交的數(shù)據(jù)集A。其中,數(shù)據(jù)集A中至少包括一個數(shù)據(jù)條目。本實施例中以每個數(shù)據(jù)條目都有 ID (Identity,身份標(biāo)識)和數(shù)據(jù)值兩個字段為例進(jìn)行說明,但實際應(yīng)用中數(shù)據(jù)集中的數(shù)據(jù)條目所包含的內(nèi)容不限于這兩個字段。其中,ID字段用于存儲數(shù)據(jù)條目的唯一標(biāo)識,該唯一標(biāo)識用于匹配數(shù)據(jù)庫表中的數(shù)據(jù)條目;數(shù)據(jù)值字段用于存儲數(shù)據(jù)條目的相關(guān)數(shù)據(jù),本實施例中以存儲數(shù)據(jù)條目的數(shù)量為例進(jìn)行說明。數(shù)據(jù)庫中對應(yīng)數(shù)據(jù)集A的表為表TA,表TA中包括ID列和數(shù)據(jù)值列。在本實施例中,以客戶端Pl進(jìn)行入庫操作為例進(jìn)行說明,即客戶端 Pl需提交數(shù)據(jù)集A至數(shù)據(jù)庫,更新數(shù)據(jù)庫中的數(shù)據(jù)條目。其中,數(shù)據(jù)集A如表1所示,包括 ID1-ID5等數(shù)據(jù)條目,數(shù)據(jù)庫中表TA如表2所示,包括ID3-ID5數(shù)據(jù)條目。表 權(quán)利要求
1.一種存儲數(shù)據(jù)的方法,其特征在于,所述方法包括判斷客戶端提交的數(shù)據(jù)集中是否存在不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目; 如果存在,則對所述客戶端提交的數(shù)據(jù)集中的每一條不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目,均開啟新的數(shù)據(jù)庫事務(wù),把所述數(shù)據(jù)條目插入到所述數(shù)據(jù)庫中; 提交所述新的數(shù)據(jù)庫事務(wù);如果所述提交過程中遇到異常信息,則攔截所述異常信息;將所述客戶端提交的數(shù)據(jù)集中不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目與所述數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行匹配; 更新所述數(shù)據(jù)庫。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷客戶端提交的數(shù)據(jù)集中是否存在不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目,之前還包括將客戶端提交的數(shù)據(jù)集中匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行鎖定。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述將所述客戶端提交的數(shù)據(jù)集中不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目與所述數(shù)據(jù)庫中的條目進(jìn)行匹配,之后還包括將所述匹配到的數(shù)據(jù)條目進(jìn)行鎖定。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述更新所述數(shù)據(jù)庫,之前還包括 對所述客戶端提交的數(shù)據(jù)集進(jìn)行校驗。
5.一種存儲數(shù)據(jù)的裝置,其特征在于,所述裝置包括判斷模塊,用于判斷客戶端提交的數(shù)據(jù)集中是否存在不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目;開啟模塊,用于如果存在,則對所述客戶端提交的數(shù)據(jù)集中的每一條不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目,均開啟新的數(shù)據(jù)庫事務(wù),把所述數(shù)據(jù)條目插入到所述新的數(shù)據(jù)庫中; 提交模塊,用于提交所述新的數(shù)據(jù)庫事務(wù);攔截模塊,用于如果所述插入過程中遇到異常信息,則攔截所述異常信息。 匹配模塊,用于將所述客戶端提交的數(shù)據(jù)集中不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目與所述數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行匹配;更新模塊,用于更新所述數(shù)據(jù)庫。
6.根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述裝置還包括第一鎖定模塊,用于當(dāng)所述判斷模塊判斷出不能匹配的數(shù)據(jù)條目前,將客戶端提交的數(shù)據(jù)集中匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行鎖定。
7.根據(jù)權(quán)利要求5或6所述的裝置,其特征在于,所述裝置還包括第二鎖定模塊,用于在所述匹配模塊進(jìn)行匹配后,將所述匹配到的數(shù)據(jù)條目進(jìn)行鎖定。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述裝置還包括校驗?zāi)K,用于在所述更新模塊對所述數(shù)據(jù)庫進(jìn)行更新之前,對所述客戶端提交的數(shù)據(jù)集進(jìn)行校驗。
全文摘要
本發(fā)明公開了一種存儲數(shù)據(jù)的方法和裝置,屬于計算機(jī)領(lǐng)域。所述方法包括判斷客戶端提交的數(shù)據(jù)集中是否存在不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目;如果存在,則開啟新的數(shù)據(jù)庫事務(wù),把所述數(shù)據(jù)條目插入到所述新的數(shù)據(jù)庫中;提交所述新的數(shù)據(jù)庫事務(wù);如果所述提交過程中遇到異常信息,則攔截所述異常信息;將所述客戶端提交的數(shù)據(jù)集中不能匹配到數(shù)據(jù)庫中的數(shù)據(jù)條目與所述數(shù)據(jù)庫中的數(shù)據(jù)條目進(jìn)行匹配;更新所述數(shù)據(jù)庫。本發(fā)明在更新數(shù)據(jù)庫時,當(dāng)存在有不匹配的數(shù)據(jù)條目時,立即將該條目插入到數(shù)據(jù)庫中,如果插入過程中遇到異常信息時,則攔截此異常信息,解決了拋出的異常信息會終止當(dāng)前用戶操作的問題。
文檔編號G06F17/30GK102456017SQ20101051734
公開日2012年5月16日 申請日期2010年10月18日 優(yōu)先權(quán)日2010年10月18日
發(fā)明者樊華 申請人:北京市金蝶政務(wù)軟件有限公司