亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種NewSQL數(shù)據(jù)庫中的增量式快照方法

文檔序號:8258960閱讀:387來源:國知局
一種NewSQL數(shù)據(jù)庫中的增量式快照方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于數(shù)據(jù)庫技術(shù)領(lǐng)域,涉及一種快照方法,具體涉及一種NewSQL數(shù)據(jù)庫中的增量式快照方法。
【背景技術(shù)】
[0002]NewSQL數(shù)據(jù)庫:NewSQL數(shù)據(jù)庫是一類能夠具有類似nosql數(shù)據(jù)庫的良好可擴展性,同時又支持傳統(tǒng)數(shù)據(jù)庫例如ACID事務(wù)以及sql語言特性的新型數(shù)據(jù)庫系統(tǒng)。NewSQL數(shù)據(jù)庫主要的應(yīng)用場景是OLTP在線事務(wù)交易系統(tǒng),但現(xiàn)有的快照方法在寫入快照數(shù)據(jù)時,只存在快照數(shù)據(jù)重復(fù)寫入的問題,由于快照數(shù)據(jù)的重復(fù)寫入,從而有效的增加了快照數(shù)據(jù)的寫入時間,并使快照數(shù)據(jù)消耗外存空間增長。

【發(fā)明內(nèi)容】

[0003]本發(fā)明的目的在于克服上述現(xiàn)有技術(shù)的缺點,提供了一種NewSQL數(shù)據(jù)庫中的增量式快照方法,該方法可以快速的將快照數(shù)據(jù)寫入,并且避免快照數(shù)據(jù)消耗外存空間的增長。
[0004]為達到上述目的,本發(fā)明所述的NewSQL數(shù)據(jù)庫中的增量式快照方法包括以下步驟:
[0005]I)快照引擎將當(dāng)前內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進行串行化后分為若干數(shù)據(jù)塊,然后將各數(shù)據(jù)塊依次寫入到環(huán)形緩沖區(qū)中,開始快照后,重復(fù)數(shù)據(jù)刪除引擎連續(xù)從環(huán)形緩沖區(qū)中讀取數(shù)據(jù)塊,并計算各數(shù)據(jù)塊對應(yīng)的hash值;
[0006]2)查找hash值查找指紋索引表,分別判斷步驟I)得到的各數(shù)據(jù)塊對應(yīng)的hash值是否存在于hash值查找指紋索引表,當(dāng)任意一個數(shù)據(jù)塊對應(yīng)的hash值存在于hash值查找指紋索引表中時,則將該數(shù)據(jù)塊記作重復(fù)數(shù)據(jù)塊,然后將該重復(fù)數(shù)據(jù)塊對應(yīng)的hash值寫入到摘要文件中;當(dāng)任意一個數(shù)據(jù)塊對應(yīng)的hash值不存在于hash值查找指紋索引表中時,則將該數(shù)據(jù)塊記作新數(shù)據(jù)塊,并將新數(shù)據(jù)塊寫入數(shù)據(jù)塊存儲引擎中,同時將新數(shù)據(jù)塊對應(yīng)的hash值以及該新數(shù)據(jù)塊在數(shù)據(jù)文件中的偏移地址寫入到hash值查找指紋索引表中,并將該新數(shù)據(jù)塊對應(yīng)的hash值寫入到摘要文件中。
[0007]設(shè)環(huán)形緩沖區(qū)的頭指針為head,尾指針為tail,環(huán)形緩沖區(qū)的長度為length,則有:
[0008]當(dāng)head等于tail時,則緩沖緩沖區(qū)為空的,當(dāng)head不等于tail時,則環(huán)形緩沖區(qū)為非空的;
[0009]判斷(head+1)% Ienth 是否等于 tail,當(dāng)(head+1) % Ienth 等于 tail 時,則環(huán)形緩沖區(qū)已經(jīng)存儲滿,當(dāng)(head+1) % Ienth不等于tail時,則環(huán)形緩沖區(qū)未存儲滿;
[0010]重復(fù)數(shù)據(jù)刪除引擎通過Get方法從環(huán)形緩沖區(qū)讀取數(shù)據(jù)塊,當(dāng)讀取一次數(shù)據(jù)塊后,則將tail指針指向內(nèi)存單元數(shù)據(jù),并將tail指針調(diào)整為tail = (tail+1) % length ;
[0011]采用put方法將數(shù)據(jù)塊寫入到環(huán)形緩沖區(qū)中,寫入一次數(shù)據(jù)塊中,則將head指針指向內(nèi)存單元數(shù)據(jù),并將head指針調(diào)整為head = (head+1) % length。
[0012]采用固定分塊的方法或可變分塊的方法將串行化的數(shù)據(jù)分為數(shù)據(jù)塊;
[0013]hash值查找指紋索引表中保存有數(shù)據(jù)塊對應(yīng)的hash值以及該數(shù)據(jù)塊在數(shù)據(jù)文件中的偏移地址;
[0014]通過SHA-1 hash函數(shù)計算各數(shù)據(jù)塊對應(yīng)的hash值。
[0015]當(dāng)需要進行數(shù)據(jù)恢復(fù)時,選擇要恢復(fù)到的快照檢測點,根據(jù)所述快照檢測點讀取相對應(yīng)的摘要文件,再從摘要文件中逐個讀取hash值,并且每讀取一條hash值,則通過hash值在hash值查找指紋索引表查找相應(yīng)的偏移地址,然后根據(jù)對應(yīng)的偏移地址及hash值從數(shù)據(jù)塊存儲引擎中讀取數(shù)據(jù)塊,再加載到內(nèi)存中。
[0016]本發(fā)明具有以下有益效果:
[0017]本發(fā)明所述的NewSQL數(shù)據(jù)庫中的增量式快照方法在使用時,先將內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進行串行化后分為若干數(shù)據(jù)塊,然后將各數(shù)據(jù)塊依次寫入到環(huán)形緩沖區(qū)中,再通過重復(fù)數(shù)據(jù)刪除引擎從環(huán)形緩沖區(qū)中讀取各數(shù)據(jù)塊,并計算各數(shù)據(jù)塊對應(yīng)的hash值,根據(jù)各數(shù)據(jù)塊對應(yīng)的hash值查找hash值查表指紋索引表,刪除重復(fù)的數(shù)據(jù)塊,從而避免快照數(shù)據(jù)重復(fù)寫入的問題,降低快照數(shù)據(jù)的寫入時間,避免快照數(shù)據(jù)消耗外存空間的增長,同時先將數(shù)據(jù)塊寫入到環(huán)形緩沖區(qū)中,避免內(nèi)存反復(fù)申請-釋放帶來的性能開銷,減少快照時間。
【附圖說明】
[0018]圖1為本發(fā)明的原理圖;
[0019]圖2為本發(fā)明的流程圖;
[0020]圖3為本發(fā)明中數(shù)據(jù)恢復(fù)的流程圖。
【具體實施方式】
[0021]下面結(jié)合附圖對本發(fā)明做進一步詳細描述:
[0022]參考圖1及圖2,本發(fā)明所述的NewSQL數(shù)據(jù)庫中的增量式快照方法包括以下步驟:
[0023]I)快照引擎將當(dāng)前內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進行串行化后分為若干數(shù)據(jù)塊,然后將各數(shù)據(jù)塊依次寫入到環(huán)形緩沖區(qū)中,開始快照后,重復(fù)數(shù)據(jù)刪除引擎連續(xù)從環(huán)形緩沖區(qū)中讀取數(shù)據(jù)塊,并計算各數(shù)據(jù)塊對應(yīng)的hash值;
[0024]2)查找hash值查找指紋索引表,分別判斷步驟I)得到的各數(shù)據(jù)塊對應(yīng)的hash值是否存在于hash值查找指紋索引表,當(dāng)任意一個數(shù)據(jù)塊對應(yīng)的hash值存在于hash值查找指紋索引表中時,則將該數(shù)據(jù)塊記作重復(fù)數(shù)據(jù)塊,然后將該重復(fù)數(shù)據(jù)塊對應(yīng)的hash值寫入到摘要文件中;當(dāng)任意一個數(shù)據(jù)塊對應(yīng)的hash值不存在于hash值查找指紋索引表中時,則將該數(shù)據(jù)塊記作新數(shù)據(jù)塊,并將新數(shù)據(jù)塊寫入數(shù)據(jù)塊存儲引擎中,同時將新數(shù)據(jù)塊對應(yīng)的hash值以及該新數(shù)據(jù)塊在數(shù)據(jù)文件中的偏移地址寫入到hash值查找指紋索引表中,并將該新數(shù)據(jù)塊對應(yīng)的hash值寫入到摘要文件中。
[0025]需要說明的是,設(shè)環(huán)形緩沖區(qū)的頭指針為head,尾指針為tail,環(huán)形緩沖區(qū)的長度為length,則有:當(dāng)head等于tail時,則緩沖緩沖區(qū)為空的,當(dāng)head不等于tail時,則環(huán)形緩沖區(qū)為非空的;判斷(head+1) % Ienth是否等于tail,當(dāng)(head+1) % Ienth等于tail時,則環(huán)形緩沖區(qū)已經(jīng)存儲滿,當(dāng)(head+1) % Ienth不等于tail時,則環(huán)形緩沖區(qū)未存儲滿;重復(fù)數(shù)據(jù)刪除引擎通過Get方法從環(huán)形緩沖區(qū)讀取數(shù)據(jù)塊,當(dāng)讀取一次數(shù)據(jù)塊后,則將tail指針指向內(nèi)存單元數(shù)據(jù),并將tail指針調(diào)整為tail = (tail+1) % length ;采用put方法將數(shù)據(jù)塊寫入到環(huán)形緩沖區(qū)中,寫入一次數(shù)據(jù)塊中,則將head指針指向內(nèi)存單元數(shù)據(jù),并將head指針調(diào)整為head = (head+1) % length。
[0026]采用固定分塊的方法或可變分塊的方法將串行化的數(shù)據(jù)分為數(shù)據(jù)塊;hash值查找指紋索引表中保存有數(shù)據(jù)塊對應(yīng)的hash值以及該數(shù)據(jù)塊在數(shù)據(jù)文件中的偏移地址;通過SHA-1 hash函數(shù)計算各數(shù)據(jù)塊對應(yīng)的hash值。
[0027]參考圖3,當(dāng)需要進行數(shù)據(jù)恢復(fù)時,選擇要恢復(fù)到的快照檢測點,根據(jù)所述快照檢測點讀取相對應(yīng)的摘要文件,再從摘要文件中逐個讀取hash值,并且每讀取一條hash值,則通過hash值在hash值查找指紋索引表查找相應(yīng)的偏移地址,然后根據(jù)對應(yīng)的偏移地址及hash值從數(shù)據(jù)塊存儲引擎中讀取數(shù)據(jù)塊,再加載到內(nèi)存中。
【主權(quán)項】
1.一種NewSQL數(shù)據(jù)庫中的增量式快照方法,其特征在于,包括以下步驟: 1)快照引擎將當(dāng)前內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進行串行化后分為若干數(shù)據(jù)塊,然后將各數(shù)據(jù)塊依次寫入到環(huán)形緩沖區(qū)中,開始快照后,重復(fù)數(shù)據(jù)刪除引擎連續(xù)從環(huán)形緩沖區(qū)中讀取數(shù)據(jù)塊,并計算各數(shù)據(jù)塊對應(yīng)的hash值; 2)查找hash值查找指紋索引表,分別判斷步驟I)得到的各數(shù)據(jù)塊對應(yīng)的hash值是否存在于hash值查找指紋索引表,當(dāng)任意一個數(shù)據(jù)塊對應(yīng)的hash值存在于hash值查找指紋索引表中時,則將該數(shù)據(jù)塊記作重復(fù)數(shù)據(jù)塊,然后將該重復(fù)數(shù)據(jù)塊對應(yīng)的hash值寫入到摘要文件中;當(dāng)任意一個數(shù)據(jù)塊對應(yīng)的hash值不存在于hash值查找指紋索引表中時,則將該數(shù)據(jù)塊記作新數(shù)據(jù)塊,并將新數(shù)據(jù)塊寫入數(shù)據(jù)塊存儲引擎中,同時將新數(shù)據(jù)塊對應(yīng)的hash值以及該新數(shù)據(jù)塊在數(shù)據(jù)文件中的偏移地址寫入到hash值查找指紋索引表中,并將該新數(shù)據(jù)塊對應(yīng)的hash值寫入到摘要文件中。
2.根據(jù)權(quán)利要求1所述的NewSQL數(shù)據(jù)庫中的增量式快照方法,其特征在于,設(shè)環(huán)形緩沖區(qū)的頭指針為head,尾指針為tail,環(huán)形緩沖區(qū)的長度為length,則有: 當(dāng)head等于tail時,則緩沖緩沖區(qū)為空的,當(dāng)head不等于tail時,則環(huán)形緩沖區(qū)為非空的; 判斷(head+1) % Ienth是否等于tail,當(dāng)(head+1) % Ienth等于tail時,則環(huán)形緩沖區(qū)已經(jīng)存儲滿,當(dāng)(head+1) % Ienth不等于tail時,則環(huán)形緩沖區(qū)未存儲滿; 重復(fù)數(shù)據(jù)刪除引擎通過Get方法從環(huán)形緩沖區(qū)讀取數(shù)據(jù)塊,當(dāng)讀取一次數(shù)據(jù)塊后,則將tail指針指向內(nèi)存單元數(shù)據(jù),并將tail指針調(diào)整為tail = (tail+1) % length ; 采用put方法將數(shù)據(jù)塊寫入到環(huán)形緩沖區(qū)中,寫入一次數(shù)據(jù)塊中,則將head指針指向內(nèi)存單元數(shù)據(jù),并將head指針調(diào)整為head = (head+1) % length。
3.根據(jù)權(quán)利要求1所述的NewSQL數(shù)據(jù)庫中的增量式快照方法,其特征在于,采用固定分塊的方法或可變分塊的方法將串行化的數(shù)據(jù)分為數(shù)據(jù)塊。
4.根據(jù)權(quán)利要求1所述的NewSQL數(shù)據(jù)庫中的增量式快照方法,其特征在于,所述hash值查找指紋索引表中保存有數(shù)據(jù)塊對應(yīng)的hash值以及該數(shù)據(jù)塊在數(shù)據(jù)文件中的偏移地址。
5.根據(jù)權(quán)利要求1所述的NewSQL數(shù)據(jù)庫中的增量式快照方法,其特征在于,通過SHA-1hash函數(shù)計算各數(shù)據(jù)塊對應(yīng)的hash值。
6.根據(jù)權(quán)利要求1所述的NewSQL數(shù)據(jù)庫中的增量式快照方法,其特征在于,當(dāng)需要進行數(shù)據(jù)恢復(fù)時,選擇要恢復(fù)到的快照檢測點,根據(jù)所述快照檢測點讀取相對應(yīng)的摘要文件,再從摘要文件中逐個讀取hash值,并且每讀取一條hash值,則通過hash值在hash值查找指紋索引表查找相應(yīng)的偏移地址,然后根據(jù)對應(yīng)的偏移地址及hash值從數(shù)據(jù)塊存儲引擎中讀取數(shù)據(jù)塊,再加載到內(nèi)存中。
【專利摘要】本發(fā)明公開了一種NewSQL數(shù)據(jù)庫中的增量式快照方法,該方法可以快速的將快照數(shù)據(jù)寫入,包括以下步驟:1)快照引擎將當(dāng)前內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進行串行化后分為若干數(shù)據(jù)塊,然后將各數(shù)據(jù)塊依次寫入到環(huán)形緩沖區(qū)中,開始快照后,重復(fù)數(shù)據(jù)刪除引擎連續(xù)從環(huán)形緩沖區(qū)中讀取數(shù)據(jù)塊,并計算各數(shù)據(jù)塊對應(yīng)的hash值;2)查找hash值查找指紋索引表,刪除于hash值查找指紋索引表中hash值抽重復(fù)的數(shù)據(jù)塊,再將各數(shù)據(jù)塊對應(yīng)的hash值寫入到摘要文件中。發(fā)明可以快速的將快照數(shù)據(jù)寫入,并且避免快照數(shù)據(jù)消耗外存空間的增長。
【IPC分類】G06F17-30
【公開號】CN104573089
【申請?zhí)枴緾N201510046499
【發(fā)明人】董小社, 王龍翔, 張興軍, 魏曉林
【申請人】西安交通大學(xué)
【公開日】2015年4月29日
【申請日】2015年1月29日
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1