一種基于數(shù)據(jù)庫事務操作的重復文檔歸并系統(tǒng)及方法
【技術領域】
[0001]本發(fā)明涉及文檔處理領域,尤其是涉及一種基于數(shù)據(jù)庫事務操作的高可用重復文檔歸并系統(tǒng)及方法。
【背景技術】
[0002]在文檔管理系統(tǒng)中,存在文檔重復保存的情況。多個不同的文檔擁有相同的內容,重復的內容數(shù)據(jù)造成存儲空間的浪費。通常文檔管理系統(tǒng)根據(jù)文檔內容的數(shù)字指紋發(fā)現(xiàn)相同內容的文檔,并且只保留其中一份文檔體,而令其他相同的文檔引用該文檔體,從而達到節(jié)省存儲空間的目的。
[0003]但在這個重復文檔歸并的過程中,多個文檔引用同一份文檔體數(shù)據(jù)。在后續(xù)的運行過程中,當一個文檔刪除后,該文檔所引用的文檔體可能存在被其他文檔引用的情況,因而無法立刻刪除。最終,由于無法確認文檔體的被引用情況,為保證數(shù)據(jù)的可靠性,不做文檔體的刪除操作。直到整個系統(tǒng)停止寫入操作,并對所有文檔和文檔體的引用關系進行全面統(tǒng)計,才能準確地刪除不再被引用的文檔體。這就造成了文檔體刪除的復雜性。
【發(fā)明內容】
[0004]本發(fā)明的目的就是為了克服上述現(xiàn)有技術存在的缺陷而提供一種基于數(shù)據(jù)庫事務操作的高可用重復文檔歸并方法,利用關系型數(shù)據(jù)庫的事務操作,保證在系統(tǒng)不中斷運行的情況下,正確刪除已不再被引用的文檔體對象。
[0005]本發(fā)明的目的可以通過以下技術方案來實現(xiàn):
[0006]—種基于數(shù)據(jù)庫事務操作的重復文檔歸并系統(tǒng),包括依次連接的客戶端、文檔管理服務器和數(shù)據(jù)庫,其中,所述文檔管理服務器包括:
[0007]文檔上傳請求響應模塊,響應客戶端的文檔上傳請求,向數(shù)據(jù)庫發(fā)起上傳事務,根據(jù)上傳文檔的數(shù)字指紋執(zhí)行相應操作,完成文檔上傳;
[0008]文檔刪除請求響應模塊,響應客戶端的文檔刪除請求,向數(shù)據(jù)庫發(fā)起刪除事務,檢查相應文檔體是否還有其它引用,并將無其它引用的文檔體標記為待回收狀態(tài);
[0009]周期性檢查模塊,用于周期性地掃描數(shù)據(jù)庫中的文檔體,將標記為待回收狀態(tài)的文檔體刪除。
[0010]所述文檔上傳請求響應模塊包括:
[0011]文檔上傳請求接收單元,用于接收客戶端發(fā)出的文檔上傳請求,所述文檔上傳請求包含待上傳文檔內容的數(shù)字指紋;
[0012]第一數(shù)據(jù)庫事務啟動單元,用于向數(shù)據(jù)庫發(fā)起上傳事務,查詢數(shù)據(jù)庫中是否存在與所述數(shù)字指紋相同的文檔體;
[0013]引用記錄增加單元,在所述第一數(shù)據(jù)庫事務啟動單元的查詢結果為是時響應,用于向數(shù)據(jù)庫添加一條對具有相同數(shù)字指紋的文檔體的引用記錄,結束上傳事務,并向客戶端反饋文檔上傳完成;
[0014]文檔體增加單元,在所述數(shù)據(jù)庫事務啟動單元的查詢結果為否時響應,用于生成一個全局唯一的文檔體ID,并向數(shù)據(jù)庫中添加一條包含所述文檔體ID的文檔體記錄及相應引用記錄,結束上傳事務,并向客戶端反饋繼續(xù)上傳文檔體指令。
[0015]所述文檔刪除請求響應模塊包括:
[0016]文檔刪除請求接收單元,用于接收客戶端發(fā)出的文檔刪除請求;
[0017]第二數(shù)據(jù)庫事務啟動單元,用于向數(shù)據(jù)庫發(fā)起刪除事務,刪除與待刪除文檔體相應的文檔記錄和文檔體引用記錄;
[0018]引用檢查單元,用于檢查待刪除文檔體是否還有其它引用,若檢查結果為是,則直接結束刪除事務;
[0019]文檔體標記單元,在所述引用檢查單元的檢查結果為否時響應,將文檔體標記為待回收狀態(tài),結束刪除事務。
[0020]所述文檔體增加單元還包括文檔保存子單元,用于接收客戶端上傳的文檔體,并以所述文檔體ID作為文件名,將接收文檔體數(shù)據(jù)保存至數(shù)據(jù)庫。
[0021]—種基于數(shù)據(jù)庫事務操作的重復文檔歸并方法,包括文檔上傳流程、文檔刪除流程和周期性檢查流程,所述文檔上傳流程包括:
[0022]Al)客戶端發(fā)出文檔上傳請求,所述文檔上傳請求包含待上傳文檔內容的數(shù)字指紋;
[0023]A2)文檔管理服務器向數(shù)據(jù)庫發(fā)起上傳事務,查詢數(shù)據(jù)庫中是否存在與所述數(shù)字指紋相同的文檔體,若是,則執(zhí)行步驟A3),若否,則執(zhí)行步驟A4);
[0024]A3)文檔管理服務器向數(shù)據(jù)庫添加一條對具有相同數(shù)字指紋的文檔體的引用記錄,結束上傳事務,并向客戶端反饋文檔上傳完成;
[0025]A4)文檔管理服務器生成一個全局唯一的文檔體ID,并向數(shù)據(jù)庫中添加一條包含所述文檔體ID的文檔體記錄及相應引用記錄,結束上傳事務,并向客戶端反饋繼續(xù)上傳文檔體指令;
[0026]A5)客戶端上傳文檔體;
[0027]所述文檔刪除流程包括:
[0028]BI)客戶端發(fā)出文檔刪除請求;
[0029]B2)文檔管理服務器向數(shù)據(jù)庫發(fā)起刪除事務,刪除與待刪除文檔體相應的文檔記錄和文檔體引用記錄;
[0030]B3)文檔管理服務器檢查待刪除文檔體是否還有其它引用,若檢查結果為是,則直接結束刪除事務,若否,則將文檔體標記為待回收狀態(tài),結束刪除事務。
[0031]所述周期性檢查流程具體為:周期性地掃描數(shù)據(jù)庫中的文檔體,將標記為待回收狀態(tài)的文檔體刪除。
[0032]所述步驟A5)中,客戶端上傳文檔體后,文檔管理服務器以所述文檔體ID作為文件名,將文檔體數(shù)據(jù)保存至數(shù)據(jù)庫。
[0033]與現(xiàn)有技術相比,本發(fā)明具有以下優(yōu)點:
[0034](I)本發(fā)明通過兩個模塊分別處理客戶端的文檔上傳和文檔刪除,兩個模塊可同時發(fā)生,上傳和刪除操作分別位于各自的事務中執(zhí)行,可以保證兩組操作的原子性,不會出現(xiàn)上傳操作引用了一個文檔體,卻被另一個同時進行的文檔刪除操作所刪除的情況。
[0035](2)本發(fā)明利用關系數(shù)據(jù)庫的事務保證了兩個同時發(fā)生的上傳操作和刪除操作不會相互干擾,解決了錯誤刪除被引用的文檔體而引發(fā)數(shù)據(jù)丟失的問題。
[0036](3)本發(fā)明另外設置了一個獨立的過程用于刪除已被標記為待回收狀態(tài)的文檔體,清理掉不再被使用的文檔體數(shù)據(jù),保證了可以在系統(tǒng)不停機的情況下正確刪除不再被引用的文檔體,使得存儲空間被回收,保證了系統(tǒng)的高可用性。
【附圖說明】
[0037]圖1為本發(fā)明文檔上傳的流程示意圖;
[0038]圖2為本發(fā)明文檔刪除的流程示意圖。
【具體實施方式】
[0039]下面結合附圖和具體實施例對本發(fā)明進行詳細說明。本實施例以本發(fā)明技術方案為前提進行實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
[0040]本實施例提供一種基于數(shù)據(jù)庫事務操作的重復文檔歸并系統(tǒng),包括依次連接的客戶端、文檔管理服務器和數(shù)據(jù)庫,所述文檔管理服務器包括文檔上傳請求響應模塊、文檔刪除請求響應模塊和周期性檢查模塊,其中,文檔上傳請求響應模塊響應客戶端的文檔上傳請求,向數(shù)據(jù)庫發(fā)起上傳事務,根據(jù)上傳文檔的數(shù)字指紋執(zhí)行相應操作,完成文檔上傳;文檔刪除請求響應模塊響應客戶端的文檔刪除請求,向數(shù)據(jù)庫發(fā)