歷史數(shù)據(jù)存儲管理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫數(shù)據(jù)存儲及檢索領(lǐng)域,尤其涉及一種歷史數(shù)據(jù)存儲管理方法。
【背景技術(shù)】
[0002]在現(xiàn)有的數(shù)據(jù)管理系統(tǒng)中,一些很關(guān)鍵的數(shù)據(jù)要求記錄變更歷史,并需要呈現(xiàn)歷史。比如,對于訂單合同類數(shù)據(jù),存在主子關(guān)系表,并且一個主表有多個相關(guān)聯(lián)的子表;這樣,在存儲變更歷史數(shù)據(jù)時,對于當前的數(shù)據(jù)管理系統(tǒng)中,會在每次修改前保存完整的訂單或合同數(shù)據(jù)到歷史表,即將主表記錄和對應(yīng)的所有子表中全部關(guān)聯(lián)數(shù)據(jù)復(fù)制到歷史表。
[0003]然而,隨著數(shù)據(jù)越來越多,變更次數(shù)越來越多,存儲的歷史數(shù)據(jù)也隨之成倍增加。同時影響數(shù)據(jù)庫存儲、備份時的數(shù)據(jù)大??;并且數(shù)據(jù)量太大影響查詢返回速度,急需一種更好的歷史數(shù)據(jù)存儲方案。
[0004]因此,本領(lǐng)域的技術(shù)人員致力于開發(fā)一種能夠節(jié)省存儲空間而且簡化獲取變化歷史數(shù)據(jù)的處理的方法。
【發(fā)明內(nèi)容】
[0005]有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是提供一種歷史數(shù)據(jù)存儲管理方法,其能夠節(jié)省存儲空間而且簡化獲取變化歷史數(shù)據(jù)的處理。
[0006]為實現(xiàn)上述目的,本發(fā)明提供了一種歷史數(shù)據(jù)存儲管理方法,其特征在于包括:在關(guān)系數(shù)據(jù)庫中存儲包含一個或多個子表的主表,而且在歷史表中關(guān)聯(lián)主表及其子表,其中歷史表中存儲主表的開始版本號和結(jié)束版本號以及每個子表的開始版本號和結(jié)束版本號;在主表的數(shù)據(jù)變更后且在保存變更后的數(shù)據(jù)之前。
[0007]在本發(fā)明的較佳實施方式中,所述歷史數(shù)據(jù)存儲管理方法還包括:分別判斷由于本次數(shù)據(jù)變更而導致的主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄的變化情況。
[0008]在本發(fā)明的較佳實施方式中,所述歷史數(shù)據(jù)存儲管理方法還包括:使得主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄中沒有變化的項目所對應(yīng)的結(jié)束版本號遞增加一。
[0009]在本發(fā)明的較佳實施方式中,所述歷史數(shù)據(jù)存儲管理方法還包括:在歷史表中插入主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄中存在變化的項目的新紀錄,該新紀錄中的開始版本號和結(jié)束版本號為相應(yīng)子表的當前版本號。
[0010]在本發(fā)明的較佳實施方式中,歷史表中還主表記錄關(guān)鍵字。
[0011]在本發(fā)明的較佳實施方式中,所述歷史數(shù)據(jù)存儲管理方法還包括:在讀取歷史數(shù)據(jù)時提供主表記錄關(guān)鍵字和期望查找的變更狀態(tài)所對應(yīng)的結(jié)束版本號,從而根據(jù)主表記錄關(guān)鍵字和期望查找的變更狀態(tài)所對應(yīng)的結(jié)束版本號在歷史表中存儲的主表記錄關(guān)鍵字和開始版本號、結(jié)束版本號中進行檢索,以找到對應(yīng)的歷史記錄。
[0012]在本發(fā)明中,主子表部分數(shù)據(jù)變更時,其他部分可不用因為這些變更,重新記錄歷史,只需要更新結(jié)束版本號即可,從而減少歷史記錄。由此,本發(fā)明在將多級數(shù)據(jù)表變更后保存變更歷史時,能夠節(jié)省存儲空間,而且簡化獲取變化歷史數(shù)據(jù)的處理。
[0013]以下將結(jié)合附圖對本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進一步說明,以充分地了解本發(fā)明的目的、特征和效果。
【附圖說明】
[0014]圖1是根據(jù)本發(fā)明優(yōu)選實施例的歷史數(shù)據(jù)存儲管理方法的保存變更歷史數(shù)據(jù)處理的流程圖。
[0015]圖2是根據(jù)本發(fā)明優(yōu)選實施例的歷史數(shù)據(jù)存儲管理方法的保存變更歷史數(shù)據(jù)處理的一個具體流程示例。
【具體實施方式】
[0016]本發(fā)明的目的是提供一種歷史數(shù)據(jù)存儲管理方法,使數(shù)據(jù)變動時歷史數(shù)據(jù)占用較少的存儲空間。其中,在記錄歷史時,如果本次要記錄的歷史數(shù)據(jù)與前次歷史數(shù)據(jù)相同,就不進行保存,而使用之前的記錄;只有在本次需要記錄的歷史數(shù)據(jù)變化的情況下,才保存本次歷史。這樣就可以大大減少因小部分數(shù)據(jù)變更,需要保存主、子表中相關(guān)的所有數(shù)據(jù),而產(chǎn)生大量歷史數(shù)據(jù)占用存儲空間的問題。
[0017]根據(jù)本發(fā)明優(yōu)選實施例的歷史數(shù)據(jù)存儲管理方法可體現(xiàn)在保存變更歷史數(shù)據(jù)處理以及讀取變更歷史數(shù)據(jù)處理中。
[0018]圖1是根據(jù)本發(fā)明優(yōu)選實施例的歷史數(shù)據(jù)存儲管理方法的保存變更歷史數(shù)據(jù)處理的流程圖。
[0019]如圖1所示,可以在關(guān)系數(shù)據(jù)庫中存儲包含一個或多個子表的主表(第一步驟SI),而且在歷史表中關(guān)聯(lián)主表及其子表,其中歷史表中存儲主表的開始版本號和結(jié)束版本號以及每個子表的開始版本號和結(jié)束版本號(第二步驟S2);在主表的數(shù)據(jù)變更(第三步驟S3)后且在保存變更后的數(shù)據(jù)之前,分別判斷由于本次數(shù)據(jù)變更而導致的主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄的變化情況(第四步驟S4),使得主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄中沒有變化的項目所對應(yīng)的結(jié)束版本號遞增加一(第五步驟S5),而且在歷史表中插入主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄中存在變化的項目的新紀錄(第六步驟S6),該新紀錄中的開始版本號和結(jié)束版本號為相應(yīng)子表的當前版本號。此后,即可保存變更后的數(shù)據(jù)(第七步驟S7)。由此完成保存變更歷史數(shù)據(jù)處理。
[0020]圖2是根據(jù)本發(fā)明優(yōu)選實施例的歷史數(shù)據(jù)存儲管理方法的保存變更歷史數(shù)據(jù)處理的一個具體流程示例。
[0021]如圖2所示,可以在變更后保存數(shù)據(jù)前調(diào)用歷史數(shù)據(jù)處理;將新數(shù)據(jù)保存前對當前數(shù)據(jù)庫主子表中存儲的數(shù)據(jù)當前數(shù)據(jù)拿出來,分別跟歷史表中最后一次歷史數(shù)據(jù)進行比較;未變化的部分數(shù)據(jù)更新變更的結(jié)束版本號為當前版本號;變化的部分數(shù)據(jù)重新插入到歷史表,開始版本號、結(jié)束版本號均為當前版本號;接下來依次處理各子表中對應(yīng)數(shù)據(jù),判斷、記錄歷史等;所有歷史數(shù)據(jù)處理完畢后,保存變更后的新數(shù)據(jù)。
[0022]優(yōu)選地,歷史表中還主表記錄關(guān)鍵字。由此進一步地,在歷史數(shù)據(jù)讀取處理中,在讀取歷史數(shù)據(jù)時可以提供主表記錄關(guān)鍵字和期望查找的變更狀態(tài)所對應(yīng)的結(jié)束版本號,從而根據(jù)主表記錄關(guān)鍵字和期望查找的變更狀態(tài)所對應(yīng)的結(jié)束版本號在歷史表中存儲的主表記錄關(guān)鍵字和開始版本號、結(jié)束版本號中進行檢索,從而找到對應(yīng)的歷史記錄,并返回該記錄。
[0023]可以看出,本發(fā)明解決了局部數(shù)據(jù)變化需要記錄所有相關(guān)數(shù)據(jù)歷史,從而占用大量存儲空間的缺點。保存的歷史數(shù)據(jù)減少,同時因為增加了變更結(jié)束版本號,方便查詢時可以直接定位到變更時的版本,同時可應(yīng)用于其他數(shù)據(jù)存儲時,主子表關(guān)系較復(fù)雜數(shù)據(jù)存儲的歷史變更保存。
[0024]在另一種替換實施例中,也可以在有效數(shù)據(jù)和歷史數(shù)據(jù)之間使用一個關(guān)聯(lián)表記錄變更版本號,變更數(shù)據(jù)保存前,將所有主子表中數(shù)據(jù)與歷史表中保存的當前數(shù)據(jù)進行比較,如果找到與當前數(shù)據(jù)一致的數(shù)據(jù),則關(guān)聯(lián)表增加一條當前變更版本號相關(guān)的當前數(shù)據(jù)對應(yīng)的歷史數(shù)據(jù)記錄;如果該條數(shù)據(jù)部分內(nèi)容變更,則增加一條新的歷史記錄,然后再在關(guān)聯(lián)表中插入一條有效數(shù)據(jù)與當前數(shù)據(jù)對應(yīng)的記錄。然后再保存新數(shù)據(jù)。
[0025]上述說明示出并描述了本發(fā)明的優(yōu)選實施例,如前所述,應(yīng)當理解本發(fā)明并非局限于本文所披露的形式,不應(yīng)看作是對其他實施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述發(fā)明構(gòu)想范圍內(nèi),通過上述教導或相關(guān)領(lǐng)域的技術(shù)或知識進行改動。而本領(lǐng)域人員所進行的改動和變化不脫離本發(fā)明的精神和范圍,則都應(yīng)在本發(fā)明所附權(quán)利要求的保護范圍內(nèi)。
【主權(quán)項】
1.一種歷史數(shù)據(jù)存儲管理方法,其特征在于包括:在關(guān)系數(shù)據(jù)庫中存儲包含一個或多個子表的主表,而且在歷史表中關(guān)聯(lián)主表及其子表,其中歷史表中存儲主表的開始版本號和結(jié)束版本號以及每個子表的開始版本號和結(jié)束版本號;在主表的數(shù)據(jù)變更后且在保存變更后的數(shù)據(jù)之前。2.如權(quán)利要求1所述的歷史數(shù)據(jù)存儲管理方法,其特征在于還包括:分別判斷由于本次數(shù)據(jù)變更而導致的主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄的變化情況。3.如權(quán)利要求2所述的歷史數(shù)據(jù)存儲管理方法,其特征在于還包括:使得主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄中沒有變化的項目所對應(yīng)的結(jié)束版本號遞增加一。4.如權(quán)利要求2所述的歷史數(shù)據(jù)存儲管理方法,其特征在于還包括:在歷史表中插入主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄中存在變化的項目的新紀錄,該新紀錄中的開始版本號和結(jié)束版本號為相應(yīng)子表的當前版本號。5.如權(quán)利要求1或2所述的歷史數(shù)據(jù)存儲管理方法,其特征在于,歷史表中還主表記錄關(guān)鍵字。6.如權(quán)利要求5所述的歷史數(shù)據(jù)存儲管理方法,其特征在于還包括:在讀取歷史數(shù)據(jù)時提供主表記錄關(guān)鍵字和期望查找的變更狀態(tài)所對應(yīng)的結(jié)束版本號,從而根據(jù)主表記錄關(guān)鍵字和期望查找的變更狀態(tài)所對應(yīng)的結(jié)束版本號在歷史表中存儲的主表記錄關(guān)鍵字和開始版本號、結(jié)束版本號中進行檢索,以找到對應(yīng)的歷史記錄。
【專利摘要】本發(fā)明公開了一種歷史數(shù)據(jù)存儲管理方法,包括:在關(guān)系數(shù)據(jù)庫中存儲包含一個或多個子表的主表,而且在歷史表中關(guān)聯(lián)主表及其子表,其中歷史表中存儲主表的開始版本號和結(jié)束版本號以及每個子表的開始版本號和結(jié)束版本號;在主表的數(shù)據(jù)變更后且在保存變更后的數(shù)據(jù)之前,分別判斷由于本次數(shù)據(jù)變更而導致的主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄的變化情況,使得主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄中沒有變化的項目所對應(yīng)的結(jié)束版本號遞增加一,而且在歷史表中插入主表記錄以及相應(yīng)子表中對應(yīng)的多條記錄中存在變化的項目的新紀錄,該新紀錄中的開始版本號和結(jié)束版本號為相應(yīng)子表的當前版本號。
【IPC分類】G06F17/30
【公開號】CN105095457
【申請?zhí)枴緾N201510451790
【發(fā)明人】江南春, 羅巍峰
【申請人】馳眾信息技術(shù)(上海)有限公司
【公開日】2015年11月25日
【申請日】2015年7月28日