一種數(shù)據(jù)存儲方法、存儲裝置及存儲系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種數(shù)據(jù)存儲方法、存儲裝置及存儲系統(tǒng),用于解決IP硬盤難以在一個主鍵值之下保存多個版本的數(shù)據(jù)的問題。所述方法應(yīng)用于存儲系統(tǒng)中,所述存儲系統(tǒng)包括主機(jī)和網(wǎng)絡(luò)互聯(lián)協(xié)議IP硬盤,所述方法包括:所述IP硬盤接收所述主機(jī)發(fā)送的寫數(shù)據(jù)請求,所述寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、所述目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及所述目標(biāo)數(shù)據(jù)對應(yīng)的版本值;判斷所述主鍵值是否保存在所述IP硬盤中;如果是,則判斷所述主鍵值對應(yīng)的版本值集合中是否包含所述版本值;當(dāng)所述版本值集合中不包含所述版本值時,則將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤。
【專利說明】一種數(shù)據(jù)存儲方法、存儲裝置及存儲系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,特別涉及一種數(shù)據(jù)存儲方法、存儲裝置及存儲系統(tǒng)。
【背景技術(shù)】
[0002]網(wǎng)絡(luò)互聯(lián)協(xié)議(Internet Protocol, IP)硬盤為提供IP協(xié)議接口的硬盤,由于IP硬盤能夠通過IP協(xié)議直接與主機(jī)進(jìn)行通信,不僅使得IP硬盤與主機(jī)間沒有了距離限制,而且能夠支持大規(guī)模并行訪問,大幅提高數(shù)據(jù)訪問的速度。
[0003]目前,IP硬盤使用主鍵-數(shù)據(jù)(Key-Value)的結(jié)構(gòu)進(jìn)行數(shù)據(jù)存儲,主機(jī)也以Key-Value接口對IP硬盤中的數(shù)據(jù)進(jìn)行訪問。在Key-Value的結(jié)構(gòu)中,Key是主鍵,通常是一個字符串,保存在IP硬盤的索引區(qū)中,而Value中包含要存儲的數(shù)據(jù),保存在IP硬盤的數(shù)據(jù)區(qū)中,其中,一個Key中保存有Value在硬盤上的存儲空間的位置信息,Key與Value之間是--對應(yīng)的。
[0004]在對IP硬盤中的數(shù)據(jù)進(jìn)行修改操作時,在數(shù)據(jù)區(qū)分配另一空閑的存儲空間保存修改后的Value,并將索引區(qū)中對應(yīng)Key中保存的位置信息更改為修改后的Value的存儲空間的位置信息,而為修改前的Value所分配的存儲空間需要被回收。
[0005]因此,現(xiàn)有技術(shù)中要對數(shù)據(jù)進(jìn)行修改必須將原有的Value刪除,難以在一個Key之下保存多個版本的Value,不方便查看一個Key對應(yīng)的歷史版本的數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0006]本申請實施例提供一種數(shù)據(jù)存儲方法、存儲裝置及存儲系統(tǒng),用于解決現(xiàn)有技術(shù)中IP硬盤難以在一個主鍵值之下保存多個版本的數(shù)據(jù)的問題。
[0007]第一方面,本申請實施例提供了一種數(shù)據(jù)存儲方法,所述方法應(yīng)用于存儲系統(tǒng)中,所述存儲系統(tǒng)包括主機(jī)和網(wǎng)絡(luò)互聯(lián)協(xié)議IP硬盤,所述方法包括:
[0008]所述IP硬盤接收所述主機(jī)發(fā)送的寫數(shù)據(jù)請求,所述寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、所述目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及所述目標(biāo)數(shù)據(jù)對應(yīng)的版本值;
[0009]判斷所述主鍵值是否保存在所述IP硬盤中;
[0010]如果是,則判斷所述主鍵值對應(yīng)的版本值集合中是否包含所述版本值;
[0011]當(dāng)所述版本值集合中不包含所述版本值時,則將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤。
[0012]結(jié)合第一方面,在第一方面的第一種可能的實現(xiàn)方式中,將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤之后,所述方法還包括:將所述版本值寫入所述版本值集合中。
[0013]結(jié)合第一方面,在第一方面的第二種可能的實現(xiàn)方式中,所述方法還包括:
[0014]當(dāng)所述版本值集合中包含所述版本值時,獲得所述版本值對應(yīng)的位置信息,所述位置信息包括所述版本值對應(yīng)的舊數(shù)據(jù)存儲在所述IP硬盤中的地址;
[0015]將所述目標(biāo)數(shù)據(jù)寫入所述地址對應(yīng)的存儲空間中。
[0016]結(jié)合第一方面,在第一方面的第三種可能的實現(xiàn)方式中,所述方法還包括:
[0017]當(dāng)所述版本值集合中包含所述版本值時,在所述IP硬盤中確定空閑的存儲空間,將所述目標(biāo)數(shù)據(jù)寫入所述空閑的存儲空間中;
[0018]將所述版本值對應(yīng)的位置信息修改為所述空閑的存儲空間的地址。
[0019]結(jié)合第一方面,在第一方面的第四種可能的實現(xiàn)方式中,所述方法還包括:所述寫數(shù)據(jù)請求中的所述版本值是由所述主機(jī)根據(jù)在元數(shù)據(jù)中查詢的所述主鍵值的版本信息獲得的。
[0020]結(jié)合第一方面的第二種可能的實現(xiàn)方式或者第一方面的第三種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,所述方法還包括:所述IP硬盤接收所述主機(jī)發(fā)送的讀數(shù)據(jù)請求,所述讀數(shù)據(jù)請求中包含所述主鍵值及所述版本值;
[0021]根據(jù)所述主鍵值及所述版本值確定出所述位置信息;
[0022]讀取所述位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
[0023]結(jié)合第一方面的第二種可能的實現(xiàn)方式或者第一方面的第三種可能的實現(xiàn)方式,在第一方面的第六種可能的實現(xiàn)方式中,所述方法還包括:
[0024]所述IP硬盤接收所述主機(jī)發(fā)送的讀數(shù)據(jù)請求,所述讀數(shù)據(jù)請求包含所述主鍵值;
[0025]確定所述主鍵值對應(yīng)的版本值集合中版本最高的版本值是所述版本值;
[0026]獲得所述版本值對應(yīng)的位置信息;
[0027]讀取所述位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
[0028]結(jié)合第一方面的第二種可能的實現(xiàn)方式或者第一方面的第三種可能的實現(xiàn)方式,在第一方面的第七種可能的實現(xiàn)方式中,所述方法還包括:
[0029]所述IP硬盤接收所述主機(jī)發(fā)送的刪除數(shù)據(jù)請求,所述刪除數(shù)據(jù)請求包含所述主鍵值及所述版本值;
[0030]從所述主鍵值對應(yīng)的版本值集合中刪除所述版本值。
[0031]結(jié)合第一方面的第七種可能的實現(xiàn)方式,在第一方面的第八種可能的實現(xiàn)方式中,所述方法還包括:
[0032]刪除所述版本值對應(yīng)的位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
[0033]結(jié)合第一方面的第七種可能的實現(xiàn)方式,在第一方面的第九種可能的實現(xiàn)方式中,所述方法還包括:
[0034]判斷所述主鍵值對應(yīng)的版本值集合中是否還存在除所述版本值之外的其它版本值;
[0035]若不存在,則從所述IP硬盤中刪除所述主鍵值。
[0036]第二方面,本申請實施例提供一種存儲裝置,包括:
[0037]存儲單元,用于利用非易失性存儲介質(zhì)來存儲數(shù)據(jù);
[0038]接口,用于利用網(wǎng)絡(luò)互聯(lián)協(xié)議接收寫數(shù)據(jù)請求,所述寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、所述目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及所述目標(biāo)數(shù)據(jù)對應(yīng)的版本值;
[0039]控制器,用于判斷所述主鍵值是否保存在所述IP硬盤中;如果是,則判斷所述主鍵值對應(yīng)的版本值集合中是否包含所述版本值;當(dāng)所述版本值集合中不包含所述版本值時,將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤。
[0040]結(jié)合第二方面,在第二方面的第一種可能的實現(xiàn)方式中,所述控制器還用于:在將所述目標(biāo)數(shù)據(jù)寫入所述存儲單元之后,將所述版本值寫入所述版本值集合中。
[0041]結(jié)合第二方面,在第二方面的第二種可能的實現(xiàn)方式中,所述控制器還用于:當(dāng)所述版本值集合中包含所述版本值時,獲得所述版本值對應(yīng)的位置信息,所述位置信息包括所述版本值對應(yīng)的舊數(shù)據(jù)存儲在所述存儲單元中的地址;并將所述目標(biāo)數(shù)據(jù)寫入所述地址對應(yīng)的存儲空間中。
[0042]結(jié)合第二方面,在第二方面的第三種可能的實現(xiàn)方式中,所述控制器還用于:當(dāng)所述版本值集合中包含所述版本值時,在所述存儲單元中確定空閑的存儲空間,將所述目標(biāo)數(shù)據(jù)寫入所述空閑的存儲空間中;并將所述版本值對應(yīng)的位置信息修改為所述空閑的存儲空間的地址。
[0043]結(jié)合第二方面的第二種可能的實現(xiàn)方式或者第二方面的第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述接口還用于:接收讀數(shù)據(jù)請求,所述讀數(shù)據(jù)請求中包含所述主鍵值及所述版本值;
[0044]所述控制器還用于:根據(jù)所述主鍵值及所述版本值確定出所述位置信息;讀取所述位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
[0045]結(jié)合第二方面的第二種可能的實現(xiàn)方式或者第二方面的第三種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,所述接口還用于:接收讀數(shù)據(jù)請求,所述讀數(shù)據(jù)請求包含所述主鍵值;
[0046]所述控制器還用于:確定所述主鍵值對應(yīng)的版本值集合中版本最高的版本值是所述版本值;獲得所述版本值對應(yīng)的位置信息;讀取所述位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
[0047]結(jié)合第二方面的第二種可能的實現(xiàn)方式或者第二方面的第三種可能的實現(xiàn)方式,在第二方面的第六種可能的實現(xiàn)方式中,所述接口還用于:接收刪除數(shù)據(jù)請求,所述刪除數(shù)據(jù)請求包含所述主鍵值及所述版本值;
[0048]所述控制器還用于:從所述主鍵值對應(yīng)的版本值集合中刪除所述版本值。
[0049]結(jié)合第二方面的第六種可能的實現(xiàn)方式,在第二方面的第七種可能的實現(xiàn)方式中,所述控制器還用于:刪除所述版本值對應(yīng)的位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
[0050]結(jié)合第二方面的第六種可能的實現(xiàn)方式,在第二方面的第八種可能的實現(xiàn)方式中,所述控制器還用于:判斷所述主鍵值對應(yīng)的版本值集合中是否還存在除所述版本值之外的其它版本值;若不存在,則從所述IP硬盤中刪除所述主鍵值。
[0051]第三方面,本申請實施例提供一種存儲系統(tǒng),包括:
[0052]第二方面所述的存儲裝置;
[0053]主機(jī),用于根據(jù)用戶輸入信息生成數(shù)據(jù)處理請求,并向所述存儲裝置發(fā)送所述數(shù)據(jù)處理請求,所述數(shù)據(jù)處理請求包括寫數(shù)據(jù)請求、讀數(shù)據(jù)請求、刪除數(shù)據(jù)請求。
[0054]結(jié)合第三方面,在第三方面的第一種可能的實現(xiàn)方式中,所述主機(jī)具體用于根據(jù)所述主機(jī)中存儲的元數(shù)據(jù)確定所述數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值。
[0055]結(jié)合第三方面的第一種可能的實現(xiàn)方式,在第三方面的第二種可能的實現(xiàn)方式中,所述主機(jī)還用于根據(jù)所述主機(jī)中存儲的元數(shù)據(jù)確定所述數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
[0056]結(jié)合第三方面,在第三方面的第三種可能的實現(xiàn)方式中,所述主機(jī)還用于向所述存儲裝置發(fā)送查詢指令,所述查詢指令用于使所述存儲裝置根據(jù)保存的元數(shù)據(jù)確定所述數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
[0057]本申請實施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
[0058]本申請實施例中,IP硬盤接收所述主機(jī)發(fā)送的寫數(shù)據(jù)請求,所述寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、所述目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及所述目標(biāo)數(shù)據(jù)對應(yīng)的版本值;判斷所述主鍵值是否保存在所述IP硬盤中;如果是,則判斷所述主鍵值對應(yīng)的版本值集合中是否包含所述版本值;當(dāng)所述版本值集合中不包含所述版本值時,則將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤。由此可見,在本發(fā)明實施例中,所述主鍵值可以對應(yīng)多個版本值,在執(zhí)行寫數(shù)據(jù)請求時,如果目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值對應(yīng)的版本值集合中不包含目標(biāo)數(shù)據(jù)對應(yīng)的版本值,則在保留該主鍵值原對應(yīng)版本的數(shù)據(jù)的情況下,存儲所述目標(biāo)數(shù)據(jù),使得該主鍵值能夠?qū)?yīng)多個版本的數(shù)據(jù),便于查看歷史版本的數(shù)據(jù)以及執(zhí)行數(shù)據(jù)回退。
【專利附圖】
【附圖說明】
[0059]為了更清楚地說明本申請實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領(lǐng)域的普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0060]圖1為【背景技術(shù)】中IP硬盤修改數(shù)據(jù)的示意圖;
[0061]圖2為本申請實施例中IP硬盤中數(shù)據(jù)存儲結(jié)構(gòu)的示意圖;
[0062]圖3為本申請實施例中一種數(shù)據(jù)存儲方法的流程示意圖;
[0063]圖4a為本申請實施例中新建一個版本數(shù)據(jù)的示意圖;
[0064]圖4b為本申請實施例中更改一個版本的數(shù)據(jù)的示意圖;
[0065]圖5為本申請實施例中另一種數(shù)據(jù)存儲方法的流程示意圖;
[0066]圖6為本申請實施例中更改一個版本的數(shù)據(jù)的另一種方法的示意圖;
[0067]圖7為本申請實施例中又一種數(shù)據(jù)存儲方法的流程示意圖;
[0068]圖8為本申請實施例中又一種數(shù)據(jù)存儲方法的流程示意圖;
[0069]圖9為本申請實施例中又一種數(shù)據(jù)存儲方法的流程示意圖;
[0070]圖10為本申請實施例中存儲裝置的結(jié)構(gòu)示意框圖;
[0071]圖11為本申請實施例中存儲系統(tǒng)的示意框圖。
【具體實施方式】
[0072]參見圖1,現(xiàn)有技術(shù)中,如果IP硬盤中保存有Key-Valuel的鍵值對,Valuel保存在數(shù)據(jù)區(qū),Key保存在索引區(qū),Key中保存有Valuel的存儲空間的位置信息,此時IP硬盤在響應(yīng)用戶讀取Key對應(yīng)數(shù)據(jù)的讀操作時將返回Valuel中的數(shù)據(jù)。而在數(shù)據(jù)修改后,Key中記錄新寫入的Value2的存儲空間的位置信息,Valuel將被刪除,后續(xù)IP硬盤在響應(yīng)用戶讀取Key對應(yīng)數(shù)據(jù)的讀操作時將返回Value2中的數(shù)據(jù)。
[0073]因此,對于IP硬盤中保存的一個Key-Value鍵值對,要對數(shù)據(jù)進(jìn)行修改必須將原有的Value刪除,難以在一個Key之下保存多個版本的Value,不方便查看一個Key對應(yīng)的歷史版本的數(shù)據(jù)。
[0074]為了解決上述技術(shù)問題,本申請實施例中,在以Key-Value的結(jié)構(gòu)保存數(shù)據(jù)時,在主鍵信息與數(shù)據(jù)之間增加了版本信息,一個主鍵值可以對應(yīng)多個版本值,每一個版本值對應(yīng)一項數(shù)據(jù),進(jìn)而實現(xiàn)在一個主鍵值之下保存多個版本的數(shù)據(jù),方便進(jìn)行數(shù)據(jù)回退及查看歷史版本的數(shù)據(jù)。
[0075]下面通過附圖以及具體實施例對本申請技術(shù)方案做詳細(xì)的說明,應(yīng)當(dāng)理解本申請實施例以及實施例中的具體特征是對本申請技術(shù)方案的詳細(xì)的說明,而不是對本申請技術(shù)方案的限定,在不沖突的情況下,本申請實施例以及實施例中的技術(shù)特征可以相互組合。
[0076]本申請實施例中,一項數(shù)據(jù)以主鍵-版本-數(shù)據(jù)(Key-Vers1n-Value)的結(jié)構(gòu)存儲在IP硬盤中,其中,每個主鍵值對應(yīng)一個版本值集合,該版本值集合中的每一個版本值對應(yīng)一位置信息,該位置信息中包含一項數(shù)據(jù)保存在IP硬盤中的存儲空間的地址,具體的,位置信息中可以包含數(shù)據(jù)在IP硬盤中的偏移量。因此,根據(jù)一個主鍵值及該主鍵值對應(yīng)的版本值集合中的一個版本值,可以唯一確定出IP硬盤中存儲的一項數(shù)據(jù)。
[0077]可選的,參見圖2,IP硬盤的存儲空間可分為索引區(qū)和數(shù)據(jù)區(qū),其中,索引區(qū)中保存有元數(shù)據(jù),所述元數(shù)據(jù)包含主鍵值以及各個版本值之間的對應(yīng)關(guān)系;而數(shù)據(jù)區(qū)用于保存數(shù)據(jù)。索引區(qū)中的一個版本值對應(yīng)的一項數(shù)據(jù)在數(shù)據(jù)區(qū)中的存儲空間的位置信息。
[0078]主鍵-版本-數(shù)據(jù)結(jié)構(gòu)中,版本值用于區(qū)分對應(yīng)一個主鍵值的多個數(shù)據(jù),版本值本身可以是數(shù)字序列、時間戳或者是包含時間戳的信息、用戶標(biāo)識或者與用戶標(biāo)識相關(guān)的信息、以及與數(shù)據(jù)分布有關(guān)的信息,等等。
[0079]為了便于理解,首先介紹主機(jī)生成需要發(fā)送給IP硬盤的寫數(shù)據(jù)請求的過程,具體如下:
[0080]主機(jī)存儲的元數(shù)據(jù)中包含已保存文件的文件名(或者與文件名等同的用于標(biāo)識文件的標(biāo)識)與主鍵值的對應(yīng)關(guān)系。實際情況中,一個文件需要被劃分為多個數(shù)據(jù)塊來進(jìn)行存儲,每個數(shù)據(jù)塊對應(yīng)有一個主鍵值,因此,元數(shù)據(jù)中保存有一個文件的每一個數(shù)據(jù)塊與主鍵值的對應(yīng)關(guān)系。
[0081]用戶在存儲文件時,向主機(jī)輸入目標(biāo)數(shù)據(jù),以及目標(biāo)數(shù)據(jù)的文件名,主機(jī)接收到用戶輸入的上述信息后,查詢主機(jī)存儲的元數(shù)據(jù),根據(jù)主機(jī)存儲的元數(shù)據(jù)確定目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值。
[0082]可選的,主機(jī)存儲的元數(shù)據(jù)中還包含主鍵值的版本信息,即一個主鍵值對應(yīng)的版本值集合中包含有哪些版本值。主機(jī)可以根據(jù)主機(jī)存儲的元數(shù)據(jù)中包含主鍵值的版本信息確定寫數(shù)據(jù)請求中的版本值。例如,在針對一個主鍵值新建一個版本的數(shù)據(jù)時,生成一個不同于主鍵值的版本值集合中當(dāng)前存在的版本值的新的版本值。
[0083]可選的,由于IP硬盤中存儲的元數(shù)據(jù)中包含該IP硬盤保存的主鍵值對應(yīng)的版本信息,因此,主機(jī)可以向IP硬盤請求IP硬盤存儲的元數(shù)據(jù),并根據(jù)IP硬盤的元數(shù)據(jù)確定寫數(shù)據(jù)請求中的版本值。
[0084]實際情況中,用戶可能會要求使用當(dāng)前輸入的目標(biāo)數(shù)據(jù)覆蓋之前的某一版本的數(shù)據(jù),主機(jī)可以根據(jù)用戶輸入的被覆蓋版本的信息與主機(jī)或IP硬盤存儲的元數(shù)據(jù)確定出被覆蓋數(shù)據(jù)對應(yīng)的版本值,亦即目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
[0085]而如果主機(jī)查詢元數(shù)據(jù)之后,如果確定元數(shù)據(jù)中不包含用戶輸入的文件名,則表明用戶要存儲新的文件,主機(jī)將分配一個IP硬盤當(dāng)前不存在的主鍵值,并針對該主鍵值新建一個版本值,指示IP硬盤根據(jù)分配的主鍵值和版本值來存儲目標(biāo)數(shù)據(jù)。
[0086]可選的,一個文件劃分的多個數(shù)據(jù)塊分別對應(yīng)不同IP硬盤中的主鍵值,即數(shù)據(jù)塊被分別存儲在不同的IP硬盤中。
[0087]參見圖3,為本申請實施例提供的一種數(shù)據(jù)存儲方法的流程示意圖,該流程可包括:
[0088]步驟101:1P硬盤接收主機(jī)發(fā)送的寫數(shù)據(jù)請求,寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及目標(biāo)數(shù)據(jù)對應(yīng)的版本值;
[0089]步驟102:判斷該主鍵值是否保存在IP硬盤中;若是,則轉(zhuǎn)入步驟103 ;
[0090]步驟103:判斷該主鍵值對應(yīng)的版本值集合中是否存在目標(biāo)數(shù)據(jù)對應(yīng)的版本值;若不存在,則轉(zhuǎn)入步驟104 ;
[0091]步驟104:將目標(biāo)數(shù)據(jù)寫入IP硬盤。
[0092]具體的,步驟101中,IP硬盤接收主機(jī)發(fā)送的寫數(shù)據(jù)請求,該寫數(shù)據(jù)請求中包含主機(jī)采用前述方式確定出的目標(biāo)數(shù)據(jù)、目標(biāo)數(shù)據(jù)的主鍵值以及目標(biāo)數(shù)據(jù)的版本值。本申請實施例中,IP硬盤可以設(shè)置在主機(jī)內(nèi)部,這種情況下,IP硬盤可以通過總線與主機(jī)中的包括處理器在內(nèi)的模塊進(jìn)行通信。另外,IP硬盤也可以設(shè)置在主機(jī)外部,IP硬盤可以利用IP協(xié)議與主機(jī)進(jìn)行通信,接收主機(jī)發(fā)送的寫數(shù)據(jù)請求。
[0093]IP硬盤收到寫數(shù)據(jù)請求之后,IP硬盤中的控制器首先判斷目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值是一個新的主鍵值,還是當(dāng)前已經(jīng)存在的主鍵值。如果控制器判斷出IP硬盤中已經(jīng)存在了目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值,則進(jìn)一步判斷該主鍵值對應(yīng)的版本值集合中是否已經(jīng)存在目標(biāo)數(shù)據(jù)對應(yīng)的版本值。如果判斷出該版本值集合中不包含目標(biāo)數(shù)據(jù)對應(yīng)的版本值,則表明需要在該主鍵值之下新建一個版本的數(shù)據(jù),在保留該主鍵值原對應(yīng)版本的數(shù)據(jù)的情況下,在IP硬盤中的空閑存儲空間中存儲所述目標(biāo)數(shù)據(jù),使得該主鍵值能夠?qū)?yīng)多個版本的數(shù)據(jù),便于查看歷史版本的數(shù)據(jù)以及執(zhí)行數(shù)據(jù)回退。
[0094]可選的,數(shù)據(jù)存儲方法還包括:
[0095]步驟105:將該版本值寫入版本值集合中。
[0096]具體的,步驟105與步驟104沒有嚴(yán)格的先后順序關(guān)系,步驟105可以在步驟104之前執(zhí)行,可以與步驟104同時執(zhí)行,也可以在步驟104之后執(zhí)行。通過將目標(biāo)數(shù)據(jù)對應(yīng)的版本值加入目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值對應(yīng)的版本值集合中,而該版本值中包含有目標(biāo)數(shù)據(jù)的存儲空間的位置信息,使得通過該主鍵值能夠查詢到目標(biāo)數(shù)據(jù)以及目標(biāo)數(shù)據(jù)對應(yīng)的版本信息,便于對目標(biāo)數(shù)據(jù)進(jìn)行管理。
[0097]參見圖4a,對上述技術(shù)方案舉例說明:在存儲數(shù)據(jù)之前,索引區(qū)中的Key對應(yīng)的版本值集合中包含V1、V2,在獲取到Put (Key,V3,Value3)的寫數(shù)據(jù)請求時,在判斷出Key對應(yīng)的版本值集合中不包含V3時,在數(shù)據(jù)區(qū)中一空閑存儲空間存儲Value3,并在Key對應(yīng)的版本值集合中添加V3,在V3中寫入Value3的存儲空間的位置信息。
[0098]上述技術(shù)方案中,IP硬盤以主鍵-版本-數(shù)據(jù)結(jié)構(gòu)來存儲數(shù)據(jù),使得一個主鍵值之下可以保存多個版本的數(shù)據(jù),進(jìn)而允許以新建版本值的方式來更新數(shù)據(jù),而不刪除之前的歷史版本的數(shù)據(jù),便于查看歷史版本的數(shù)據(jù)以及執(zhí)行數(shù)據(jù)的回退。
[0099]進(jìn)一步,步驟103執(zhí)行時,若確定版本值集合中存在目標(biāo)數(shù)據(jù)對應(yīng)的版本值,則轉(zhuǎn)入步驟106,執(zhí)行如下流程:
[0100]步驟106:獲得該版本值對應(yīng)的位置信息,該位置信息包括版本值對應(yīng)的舊數(shù)據(jù)存儲在IP硬盤中的地址;
[0101]步驟107:將目標(biāo)數(shù)據(jù)寫入獲得的地址對應(yīng)的存儲空間中。
[0102]具體的,如果控制器判斷出索引區(qū)中已經(jīng)存在了目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值,以及該主鍵值對應(yīng)的版本值集合中已經(jīng)存在目標(biāo)數(shù)據(jù)對應(yīng)的版本值,則表明需要對當(dāng)前已存在的一個版本對應(yīng)的數(shù)據(jù)進(jìn)行修改,執(zhí)行步驟106?107,確定出需要被覆蓋的在先版本對應(yīng)的數(shù)據(jù)的存儲空間,在確定出的存儲空間處寫入目標(biāo)數(shù)據(jù)。
[0103]例如,參見圖4b,在存儲數(shù)據(jù)之前,索引區(qū)中的Key對應(yīng)的版本值集合中包含V1、V2,在獲取到Put (Key,VI,Value3)的寫數(shù)據(jù)請求時,在判斷出Key對應(yīng)的版本值集合中已經(jīng)存在Vl時,獲取Vl中包含的存儲空間信息,確定出Vl對應(yīng)的舊數(shù)據(jù)Valuel在數(shù)據(jù)區(qū)中的存儲空間,在該存儲空間覆蓋寫入Value3。
[0104]上述技術(shù)方案中,可以對一個主鍵值的某一版本的數(shù)據(jù)進(jìn)行修改,而不影響該主鍵值的其他版本的數(shù)據(jù),容易對數(shù)據(jù)進(jìn)行維護(hù),提高了數(shù)據(jù)的有效性。
[0105]進(jìn)一步,步驟102執(zhí)行時,如果確定IP硬盤中不存在目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值,則轉(zhuǎn)入步驟108,執(zhí)行如下流程:
[0106]步驟108:在IP硬盤的空閑存儲空間中保存目標(biāo)數(shù)據(jù);
[0107]步驟109:在IP硬盤中寫入目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值,并將目標(biāo)數(shù)據(jù)對應(yīng)的版本值與寫入的該主鍵值進(jìn)行對應(yīng)存儲,以及在存儲的版本值中添加該空閑存儲空間的位置信肩、O
[0108]具體的,在目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值為新的主鍵值時,IP硬盤將分配一空閑存儲空間存儲接收的數(shù)據(jù),并在IP硬盤中對應(yīng)的寫入接收的主鍵值和版本值。由于寫入的數(shù)據(jù)為主鍵值對應(yīng)的第一個版本的數(shù)據(jù),因此,該主鍵值的版本值集合中只有新寫入的版本值,該版本值中包含存儲新寫入數(shù)據(jù)的存儲空間的位置信息。
[0109]另外,步驟109可以與步驟108同時執(zhí)行,或者先于步驟108執(zhí)行,或者在步驟108之后執(zhí)行,本申請實施例不予限定。
[0110]參見圖5,為本申請實施例提供的另一種數(shù)據(jù)存儲方法的流程示意圖,該流程可包括:
[0111]步驟201:1P硬盤接收主機(jī)發(fā)送的寫數(shù)據(jù)請求,寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及目標(biāo)數(shù)據(jù)對應(yīng)的版本值;
[0112]步驟202:判斷目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值是否保存在IP硬盤中;
[0113]步驟203:在IP硬盤中保存有該主鍵值時,判斷該主鍵值對應(yīng)的版本值集合中是否存在目標(biāo)數(shù)據(jù)對應(yīng)的版本值;
[0114]步驟204:當(dāng)該版本值集合中包含目標(biāo)數(shù)據(jù)對應(yīng)的版本值時,在IP硬盤中確定空閑的存儲空間,將目標(biāo)數(shù)據(jù)寫入該空閑的存儲空間中;
[0115]步驟205:將該版本值對應(yīng)的位置信息修改為該空閑的存儲空間的地址。
[0116]具體的,步驟201?204的實施方式可以參考步驟101?104的實施方式。圖5對應(yīng)的數(shù)據(jù)存儲方法與圖3對應(yīng)的數(shù)據(jù)存儲方法的區(qū)別在于:在控制器判斷出索引區(qū)中已經(jīng)存在了目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值,以及該主鍵值對應(yīng)的版本值集合中已經(jīng)存在目標(biāo)數(shù)據(jù)對應(yīng)的版本值后,在對某一版本值對應(yīng)的數(shù)據(jù)進(jìn)行更新時,不是直接在該版本值對應(yīng)的舊數(shù)據(jù)的存儲空間處寫入新數(shù)據(jù),而是在數(shù)據(jù)區(qū)的空閑位置處寫入新數(shù)據(jù),然后將該版本值中包含的位置信息更新為新寫入數(shù)據(jù)的存儲空間的地址。
[0117]例如,參見圖6,在存儲數(shù)據(jù)之前,索引區(qū)中的Key對應(yīng)的版本值集合中包含V1、V2,在獲取到Put (Key, V2,Value3)的寫數(shù)據(jù)請求時,在判斷出Key對應(yīng)的版本值集合中已經(jīng)存在V2時,在數(shù)據(jù)區(qū)中一空閑存儲空間存儲Value3,并將V2中保存的存儲空間位置信息更新為Value3的存儲空間的位置信息。
[0118]上述技術(shù)方案中,避免了在原數(shù)據(jù)的存儲空間寫入新數(shù)據(jù)時可能產(chǎn)生的錯誤,例如數(shù)據(jù)混淆錯誤、原數(shù)據(jù)存儲空間的容量小于新數(shù)據(jù)的大小導(dǎo)致的新數(shù)據(jù)不完整錯誤,另夕卜,還能避免原數(shù)據(jù)存儲空間大于新數(shù)據(jù)大小造成的存儲空間浪費(fèi)。
[0119]可選的,步驟205之后,釋放該版本值對應(yīng)的舊數(shù)據(jù)的存儲空間,避免存儲空間浪費(fèi)。
[0120]進(jìn)一步,參見圖7,數(shù)據(jù)存儲方法還可以包括如下流程:
[0121]步驟301:1P硬盤接收主機(jī)發(fā)送的讀數(shù)據(jù)請求,讀數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及目標(biāo)數(shù)據(jù)對應(yīng)的版本值;
[0122]步驟302:根據(jù)該主鍵值及該版本值確定出位置信息;
[0123]步驟303:讀取該位置信息對應(yīng)的存儲空間中存儲的目標(biāo)數(shù)據(jù)。
[0124]具體的,用戶在讀取之前寫入的數(shù)據(jù)時需要向主機(jī)輸入目標(biāo)數(shù)據(jù)的文件名以及表明要讀取哪個版本的數(shù)據(jù)的信息,主機(jī)查詢本地元數(shù)據(jù)或者同時向IP硬盤請求元數(shù)據(jù),確定出目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值以及版本值。
[0125]而IP硬盤保存的元數(shù)據(jù)保存有:數(shù)據(jù)對應(yīng)的主鍵值、數(shù)據(jù)對應(yīng)的版本值、用于存儲數(shù)據(jù)的存儲空間的位置信息三者的對應(yīng)關(guān)系。步驟302中,IP硬盤中的處理器根據(jù)讀數(shù)據(jù)請求中的主鍵值、版本值以及IP硬盤中元數(shù)據(jù)的上述對應(yīng)關(guān)系即可確定出一位置信息,該位置信息即待讀取的目標(biāo)數(shù)據(jù)在IP硬盤中存儲空間的位置信息。步驟303中,根據(jù)該位置信息定位出數(shù)據(jù),即為目標(biāo)數(shù)據(jù),向主機(jī)返回目標(biāo)數(shù)據(jù),實現(xiàn)目標(biāo)數(shù)據(jù)的讀取。
[0126]上述技術(shù)方案中,能夠在一個主鍵值對應(yīng)有多個數(shù)據(jù)的情況下,準(zhǔn)確、便捷地讀取用戶需要的數(shù)據(jù)。
[0127]進(jìn)一步,參見圖8,數(shù)據(jù)存儲方法還可以包括如下流程:
[0128]步驟401:1P硬盤接收主機(jī)發(fā)送的讀數(shù)據(jù)請求,讀數(shù)據(jù)請求包含目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值;
[0129]步驟402:確定該主鍵值對應(yīng)的版本值集合中版本最高的版本值是目標(biāo)數(shù)據(jù)對應(yīng)的版本值;
[0130]步驟403:獲得版本值對應(yīng)的位置信息;
[0131]步驟404:讀取位置信息對應(yīng)的存儲空間中存儲的目標(biāo)數(shù)據(jù)。
[0132]具體的,本方法與圖7對應(yīng)的方法的區(qū)別在于:實際情況中,用戶可能沒有輸入要讀取那個版本的數(shù)據(jù)的相關(guān)信息,主機(jī)發(fā)送給IP硬盤的讀數(shù)據(jù)請求中不包含目標(biāo)數(shù)據(jù)的版本值,IP硬盤在接收到這一類的讀取數(shù)據(jù)請求時,默認(rèn)要讀取該主鍵值對應(yīng)的版本值集合中版本最高的版本值對應(yīng)的數(shù)據(jù),向主機(jī)返回該版本最高的版本值對應(yīng)的數(shù)據(jù)。
[0133]實施過程中,可根據(jù)主鍵-版本-數(shù)據(jù)結(jié)構(gòu)中版本值自身的屬性來確定出版本最高的版本值。例如,在版本值為不斷累加的數(shù)字序列時,對應(yīng)數(shù)值最大的數(shù)字序列即為版本值(比如,在版本值集合中只有1.1和1.2這兩個版本值時,可確定版本值1.2為最高版本);而在版本值為時間戳或者包含時間戳的信息時,可以確定出對應(yīng)最晚時間的版本值為版本最聞的版本值。
[0134]上述技術(shù)方案中,IP硬盤能夠在接收到不包含版本信息的讀數(shù)據(jù)請求時返回目標(biāo)數(shù)據(jù)的主鍵值對應(yīng)的版本最高的版本值對應(yīng)的數(shù)據(jù),便于用戶通過快捷便利地讀取數(shù)據(jù)。
[0135]進(jìn)一步,參見圖9,數(shù)據(jù)存儲方法還可以包括如下流程:
[0136]步驟501:1P硬盤接收主機(jī)發(fā)送的刪除數(shù)據(jù)請求,刪除數(shù)據(jù)請求包含目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及目標(biāo)數(shù)據(jù)對應(yīng)的版本值;
[0137]步驟502:從該主鍵值對應(yīng)的版本值集合中刪除目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
[0138]具體的,用戶在刪除數(shù)據(jù)時向主機(jī)輸入目標(biāo)數(shù)據(jù)對應(yīng)的文件名及表明要刪除哪個版本的文件的信息。主機(jī)查詢本地元數(shù)據(jù)或者同時向IP硬盤請求元數(shù)據(jù),確定出目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值以及版本值。
[0139]IP硬盤在接收到刪除數(shù)據(jù)請求后,從目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值對應(yīng)的版本值集合中刪除目標(biāo)數(shù)據(jù)對應(yīng)的版本值,在刪除該版本值之后,與該主鍵值對應(yīng)的數(shù)據(jù)中已經(jīng)不包含目標(biāo)數(shù)據(jù),進(jìn)而實現(xiàn)快速、準(zhǔn)確地刪除主鍵值對應(yīng)的一個版本數(shù)據(jù)。
[0140]可選的,步驟501之后,數(shù)據(jù)存儲方法還可以包括如下步驟:
[0141]步驟503:刪除版本值對應(yīng)的位置信息對應(yīng)的存儲空間中存儲的目標(biāo)數(shù)據(jù)。
[0142]具體的,還可以刪除IP硬盤中與目標(biāo)數(shù)據(jù)對應(yīng)的版本值對應(yīng)的數(shù)據(jù),從物理層面上徹底刪除待刪除的數(shù)據(jù),提高存儲空間的效用。其中,步驟503可以與步驟502同時進(jìn)行,也可以在步驟502之前進(jìn)行;在保存了目標(biāo)數(shù)據(jù)對應(yīng)的版本值中的位置信息之后,步驟503也可以在步驟502之后進(jìn)行。
[0143]可選的,在步驟502之后,數(shù)據(jù)存儲方法還可以包括如下步驟:
[0144]步驟504:判斷該主鍵值對應(yīng)的版本值集合中是否還存在除目標(biāo)數(shù)據(jù)對應(yīng)的版本值之外的其它版本值;若不存在,則執(zhí)行步驟505 ;
[0145]步驟505:從IP硬盤中刪除該主鍵值。
[0146]具體的,在將版本值刪除之后,控制器將判斷該主鍵值對應(yīng)的版本值集合中是否還存在其他的版本值,如果還存在,則結(jié)束進(jìn)程。如果不存在其他版本值了,表明已經(jīng)沒有數(shù)據(jù)與該主鍵值相對應(yīng),該主鍵值已經(jīng)沒有存在的必要,此時可以刪除該主鍵值,提高存儲主鍵值的索引區(qū)的存儲空間的效用。
[0147]本申請實施例中,IP硬盤中存儲的元數(shù)據(jù)可以是以列表或數(shù)據(jù)庫的形式,列表或數(shù)據(jù)庫中保存有主鍵值、版本值、數(shù)據(jù)的存儲空間的位置信息三者的對應(yīng)關(guān)系。另外,IP硬盤中存儲的元數(shù)據(jù)也可以是IP硬盤索引區(qū)中保存的主鍵值與版本值的形式存在,其中,每一個主鍵值中包含于主鍵值對應(yīng)的每一個版本值的信息(可以是版本值的地址信息、版本名,等等),通過該信息可以獲知主鍵值對應(yīng)有哪些版本值,而每一個版本值中包含有位置信息,該位置信息用于表征一項數(shù)據(jù)在IP硬盤中的存儲空間的位置。
[0148]基于相同的發(fā)明構(gòu)思,本申請實施例提供了一種存儲裝置,參見圖10,存儲裝置包括總線600,以及連接到總線600的控制器601、存儲單元602、接口 603。
[0149]其中,存儲單元602用于利用非易失性存儲介質(zhì)來存儲數(shù)據(jù);接口 603,用于利用網(wǎng)絡(luò)互聯(lián)協(xié)議接收寫數(shù)據(jù)請求,寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及目標(biāo)數(shù)據(jù)對應(yīng)的版本值。本申請實施例中接口 603可以是獨(dú)立的通信模塊,也可以是控制器601提供的通信接口。
[0150]而控制器601用于:判斷目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值是否保存在IP硬盤中;如果是,則判斷該主鍵值對應(yīng)的版本值集合中是否包含目標(biāo)數(shù)據(jù)對應(yīng)的版本值;當(dāng)版本值集合中不包含版本值時,將目標(biāo)數(shù)據(jù)寫入IP硬盤。
[0151]可選的,控制器601還用于:在將目標(biāo)數(shù)據(jù)寫入存儲單元之后,將目標(biāo)數(shù)據(jù)對應(yīng)的版本值寫入版本值集合中。
[0152]可選的,控制器601還用于:當(dāng)版本值集合中包含目標(biāo)數(shù)據(jù)對應(yīng)的版本值時,獲得該版本值對應(yīng)的位置信息,該位置信息包括目標(biāo)數(shù)據(jù)對應(yīng)的版本值對應(yīng)的舊數(shù)據(jù)存儲在存儲單元中的地址;并將目標(biāo)數(shù)據(jù)寫入地址對應(yīng)的存儲空間中。
[0153]可選的,控制器還用于:當(dāng)版本值集合中包含目標(biāo)數(shù)據(jù)對應(yīng)的版本值時,在存儲單元中確定空閑的存儲空間,將目標(biāo)數(shù)據(jù)寫入空閑的存儲空間中;并將目標(biāo)數(shù)據(jù)對應(yīng)的版本值對應(yīng)的位置信息修改為該空閑的存儲空間的地址。
[0154]可選的,接口 603還用于:接收讀數(shù)據(jù)請求,該讀數(shù)據(jù)請求中包含主鍵值及版本值;
[0155]控制器601還用于:根據(jù)主鍵值及版本值確定出位置信息;讀取位置信息對應(yīng)的存儲空間中存儲的目標(biāo)數(shù)據(jù)。
[0156]可選的,接口 603還用于:接收讀數(shù)據(jù)請求,讀數(shù)據(jù)請求包含主鍵值;
[0157]控制器601還用于:確定主鍵值對應(yīng)的版本值集合中版本最高的版本值是版本值;獲得版本值對應(yīng)的位置信息;讀取位置信息對應(yīng)的存儲空間中存儲的目標(biāo)數(shù)據(jù)。
[0158]可選的,接口 603還用于:接收刪除數(shù)據(jù)請求,刪除數(shù)據(jù)請求包含主鍵值及版本值;
[0159]控制器601還用于:從目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值對應(yīng)的版本值集合中刪除版本值。
[0160]可選的,控制器601還用于:刪除版本值對應(yīng)的位置信息對應(yīng)的存儲空間中存儲的目標(biāo)數(shù)據(jù)。
[0161]可選的,控制器601還用于:判斷目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值對應(yīng)的版本值集合中是否還存在除該版本值之外的其它版本值;若不存在,則從IP硬盤中刪除主鍵值。
[0162]前述實施例中的數(shù)據(jù)存儲方法中的各種數(shù)據(jù)存儲方式和具體實例同樣適用于本實施例的存儲裝置,通過前述實施例中對數(shù)據(jù)存儲方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實施例中存儲裝置的實施方法,所以為了說明書的簡潔,在此不再詳述。
[0163]基于相同的發(fā)明構(gòu)思,本申請實施例還提供了一種存儲系統(tǒng),參見圖11,該系統(tǒng)包括主機(jī)701和存儲裝置702。
[0164]其中,存儲裝置702為前述包括總線600、控制器601、存儲單元602、接口 603的存儲裝置。
[0165]而主機(jī)701用于:根據(jù)用戶輸入信息生成數(shù)據(jù)處理請求,并向存儲裝置702發(fā)送數(shù)據(jù)處理請求,數(shù)據(jù)處理請求包括寫數(shù)據(jù)請求、讀數(shù)據(jù)請求、刪除數(shù)據(jù)請求。
[0166]可選的,主機(jī)701具體用于根據(jù)主機(jī)701中存儲的元數(shù)據(jù)確定數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值。
[0167]可選的,主機(jī)701還用于根據(jù)主機(jī)701中存儲的元數(shù)據(jù)確定數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
[0168]可選的,主機(jī)701還用于向存儲裝置發(fā)送查詢指令,查詢指令用于使存儲裝置根據(jù)保存的元數(shù)據(jù)確定數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
[0169]可選的,主機(jī)701向存儲裝置發(fā)送的查詢指令用于使存儲裝置返回目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值對應(yīng)的版本信息;主機(jī)701還用于根據(jù)存儲裝置返回的版本信息確定目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
[0170]較佳的,主機(jī)701包括:總線及連接到總線的處理器、隨機(jī)存儲器、只讀存儲器、輸入設(shè)備、輸出設(shè)備、收發(fā)器。其中,處理器通過總線分別耦接隨機(jī)存取存儲器、只讀存儲器、輸入設(shè)備、輸出設(shè)備以及收發(fā)器。當(dāng)需要運(yùn)行主機(jī)701時,通過固化在只讀存儲器中的基本輸入輸出系統(tǒng)引導(dǎo)系統(tǒng)進(jìn)行啟動,引導(dǎo)主機(jī)701進(jìn)入正常運(yùn)行狀態(tài)。而在主機(jī)701進(jìn)入正常運(yùn)行狀態(tài)后,在隨機(jī)存取存儲器中運(yùn)行應(yīng)用程序和操作系統(tǒng)。
[0171]輸入設(shè)備用于獲取用戶輸入信息,例如觸摸屏、鍵盤,等等。輸出設(shè)備用于向用戶輸出信息,例如顯示器、揚(yáng)聲器,等等。而收發(fā)器用于與存儲裝置702進(jìn)行通信。
[0172]前述實施例中的數(shù)據(jù)存儲方法中的各種數(shù)據(jù)存儲方式和具體實例同樣適用于本實施例的存儲系統(tǒng),通過前述實施例中對數(shù)據(jù)存儲方法的詳細(xì)描述,本領(lǐng)域技術(shù)人員可以清楚的知道本實施例中存儲系統(tǒng)的實施方法,所以為了說明書的簡潔,在此不再詳述。
[0173]本申請實施例中提供的一個或多個技術(shù)方案,至少具有如下技術(shù)效果或優(yōu)點:
[0174]本申請實施例中,IP硬盤接收所述主機(jī)發(fā)送的寫數(shù)據(jù)請求,所述寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、所述目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及所述目標(biāo)數(shù)據(jù)對應(yīng)的版本值;判斷所述主鍵值是否保存在所述IP硬盤中;如果是,則判斷所述主鍵值對應(yīng)的版本值集合中是否包含所述版本值;當(dāng)所述版本值集合中不包含所述版本值時,則將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤。由此可見,在本發(fā)明實施例中,所述主鍵值可以對應(yīng)多個版本值,在執(zhí)行寫數(shù)據(jù)請求時,如果目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值對應(yīng)的版本值集合中不包含目標(biāo)數(shù)據(jù)對應(yīng)的版本值,則在保留該主鍵值原對應(yīng)版本的數(shù)據(jù)的情況下,存儲所述目標(biāo)數(shù)據(jù),使得該主鍵值能夠?qū)?yīng)多個版本的數(shù)據(jù),便于查看歷史版本的數(shù)據(jù)以及執(zhí)行數(shù)據(jù)回退。
[0175]本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。
[0176]本申請是參照根據(jù)本申請實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0177]這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0178]盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
[0179]顯然,本領(lǐng)域的技術(shù)人員可以對本申請進(jìn)行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。
【權(quán)利要求】
1.一種數(shù)據(jù)存儲方法,其特征在于,所述方法應(yīng)用于存儲系統(tǒng)中,所述存儲系統(tǒng)包括主機(jī)和網(wǎng)絡(luò)互聯(lián)協(xié)議IP硬盤,所述方法包括: 所述IP硬盤接收所述主機(jī)發(fā)送的寫數(shù)據(jù)請求,所述寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、所述目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及所述目標(biāo)數(shù)據(jù)對應(yīng)的版本值; 判斷所述主鍵值是否保存在所述IP硬盤中; 如果是,則判斷所述主鍵值對應(yīng)的版本值集合中是否包含所述版本值; 當(dāng)所述版本值集合中不包含所述版本值時,則將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤之后,所述方法還包括:將所述版本值寫入所述版本值集合中。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)所述版本值集合中包含所述版本值時,獲得所述版本值對應(yīng)的位置信息,所述位置信息包括所述版本值對應(yīng)的舊數(shù)據(jù)存儲在所述IP硬盤中的地址; 將所述目標(biāo)數(shù)據(jù)寫入所述地址對應(yīng)的存儲空間中。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)所述版本值集合中包含所述版本值時,在所述IP硬盤中確定空閑的存儲空間,將所述目標(biāo)數(shù)據(jù)寫入所述空閑的存儲空間中; 將所述版本值對應(yīng)的位置信息修改為所述空閑的存儲空間的地址。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括:所述寫數(shù)據(jù)請求中的所述版本值是由所述主機(jī)根據(jù)在元數(shù)據(jù)中查詢的所述主鍵值的版本信息獲得的。
6.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述方法還包括: 所述IP硬盤接收所述主機(jī)發(fā)送的讀數(shù)據(jù)請求,所述讀數(shù)據(jù)請求中包含所述主鍵值及所述版本值; 根據(jù)所述主鍵值及所述版本值確定出所述位置信息; 讀取所述位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
7.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述方法還包括: 所述IP硬盤接收所述主機(jī)發(fā)送的讀數(shù)據(jù)請求,所述讀數(shù)據(jù)請求包含所述主鍵值; 確定所述主鍵值對應(yīng)的版本值集合中版本最高的版本值是所述版本值; 獲得所述版本值對應(yīng)的位置信息; 讀取所述位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
8.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述方法還包括: 所述IP硬盤接收所述主機(jī)發(fā)送的刪除數(shù)據(jù)請求,所述刪除數(shù)據(jù)請求包含所述主鍵值及所述版本值; 從所述主鍵值對應(yīng)的版本值集合中刪除所述版本值。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述方法還包括: 刪除所述版本值對應(yīng)的位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
10.根據(jù)權(quán)利要求8所述的方法,其特征在于,所述方法還包括: 判斷所述主鍵值對應(yīng)的版本值集合中是否還存在除所述版本值之外的其它版本值; 若不存在,則從所述IP硬盤中刪除所述主鍵值。
11.一種存儲裝置,其特征在于,包括: 存儲單元,用于利用非易失性存儲介質(zhì)來存儲數(shù)據(jù); 接口,用于利用網(wǎng)絡(luò)互聯(lián)協(xié)議接收寫數(shù)據(jù)請求,所述寫數(shù)據(jù)請求中包含目標(biāo)數(shù)據(jù)、所述目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值及所述目標(biāo)數(shù)據(jù)對應(yīng)的版本值; 控制器,用于判斷所述主鍵值是否保存在所述IP硬盤中;如果是,則判斷所述主鍵值對應(yīng)的版本值集合中是否包含所述版本值;當(dāng)所述版本值集合中不包含所述版本值時,將所述目標(biāo)數(shù)據(jù)寫入所述IP硬盤。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述控制器還用于:在將所述目標(biāo)數(shù)據(jù)寫入所述存儲單元之后,將所述版本值寫入所述版本值集合中。
13.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述控制器還用于:當(dāng)所述版本值集合中包含所述版本值時,獲得所述版本值對應(yīng)的位置信息,所述位置信息包括所述版本值對應(yīng)的舊數(shù)據(jù)存儲在所述存儲單元中的地址;并將所述目標(biāo)數(shù)據(jù)寫入所述地址對應(yīng)的存儲空間中。
14.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述控制器還用于:當(dāng)所述版本值集合中包含所述版本值時,在所述存儲單元中確定空閑的存儲空間,將所述目標(biāo)數(shù)據(jù)寫入所述空閑的存儲空間中;并將所述版本值對應(yīng)的位置信息修改為所述空閑的存儲空間的地址。
15.根據(jù)權(quán)利要求13或14所述的裝置,其特征在于,所述接口還用于:接收讀數(shù)據(jù)請求,所述讀數(shù)據(jù)請求中包含所述主鍵值及所述版本值; 所述控制器還用于:根據(jù)所述主鍵值及所述版本值確定出所述位置信息;讀取所述位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
16.根據(jù)權(quán)利要求13或14所述的裝置,其特征在于,所述接口還用于:接收讀數(shù)據(jù)請求,所述讀數(shù)據(jù)請求包含所述主鍵值; 所述控制器還用于:確定所述主鍵值對應(yīng)的版本值集合中版本最高的版本值是所述版本值;獲得所述版本值對應(yīng)的位置信息;讀取所述位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
17.根據(jù)權(quán)利要求13或14所述的裝置,其特征在于,所述接口還用于:接收刪除數(shù)據(jù)請求,所述刪除數(shù)據(jù)請求包含所述主鍵值及所述版本值; 所述控制器還用于:從所述主鍵值對應(yīng)的版本值集合中刪除所述版本值。
18.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述控制器還用于:刪除所述版本值對應(yīng)的位置信息對應(yīng)的存儲空間中存儲的所述目標(biāo)數(shù)據(jù)。
19.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述控制器還用于:判斷所述主鍵值對應(yīng)的版本值集合中是否還存在除所述版本值之外的其它版本值;若不存在,則從所述IP硬盤中刪除所述主鍵值。
20.一種存儲系統(tǒng),其特征在于,包括: 根據(jù)權(quán)利要求11-19中任一權(quán)利要求所述的存儲裝置; 主機(jī),用于根據(jù)用戶輸入信息生成數(shù)據(jù)處理請求,并向所述存儲裝置發(fā)送所述數(shù)據(jù)處理請求,所述數(shù)據(jù)處理請求包括寫數(shù)據(jù)請求、讀數(shù)據(jù)請求、刪除數(shù)據(jù)請求。
21.根據(jù)權(quán)利要求20所述的系統(tǒng),其特征在于,所述主機(jī)具體用于根據(jù)所述主機(jī)中存儲的元數(shù)據(jù)確定所述數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的主鍵值。
22.根據(jù)權(quán)利要求21所述的系統(tǒng),其特征在于,所述主機(jī)還用于根據(jù)所述主機(jī)中存儲的元數(shù)據(jù)確定所述數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
23.根據(jù)權(quán)利要求20所述的系統(tǒng),其特征在于,所述主機(jī)還用于向所述存儲裝置發(fā)送查詢指令,所述查詢指令用于使所述存儲裝置根據(jù)保存的元數(shù)據(jù)確定所述數(shù)據(jù)處理請求中包含的目標(biāo)數(shù)據(jù)對應(yīng)的版本值。
【文檔編號】G06F3/06GK104238963SQ201410526359
【公開日】2014年12月24日 申請日期:2014年9月30日 優(yōu)先權(quán)日:2014年9月30日
【發(fā)明者】張雷, 肖壘 申請人:華為技術(shù)有限公司