本發(fā)明涉及數(shù)據(jù)存儲領域,特別是涉及一種數(shù)據(jù)存儲方法、裝置及系統(tǒng)。
背景技術:
隨著數(shù)據(jù)的爆炸式增長,大量的數(shù)據(jù)需被存儲,數(shù)據(jù)庫是數(shù)據(jù)存儲的主要方式。對于存儲的數(shù)據(jù),為便于高效地進行查找,通常利用索引信息進行查找,但索引信息需占用一定的存儲空間,不利于數(shù)據(jù)庫的充分利用。對于數(shù)據(jù)庫中存儲的數(shù)據(jù),存在大量的重復數(shù)據(jù),該重復數(shù)據(jù)不僅占用存儲空間,還降低存儲效率。
如何充分利用數(shù)據(jù)庫的存儲空間、提高存儲效率,是目前數(shù)據(jù)存儲領域亟待解決的問題之一。
技術實現(xiàn)要素:
本發(fā)明主要解決的技術問題是提供一種數(shù)據(jù)存儲方法、裝置及系統(tǒng),可充分利用數(shù)據(jù)庫的存儲空間,且提高存儲效率。
為解決上述技術問題,本發(fā)明提供一種數(shù)據(jù)存儲方法,包括以下步驟:將待存儲的數(shù)據(jù)劃分為多個數(shù)據(jù)塊;將數(shù)據(jù)塊的字節(jié)與預設值進行比較,當數(shù)據(jù)塊的字節(jié)小于等于預設值時,計算該數(shù)據(jù)塊的md5值,當數(shù)據(jù)塊的字節(jié)大于預設值時,根據(jù)預設長度選取數(shù)據(jù)塊前端和后端的內(nèi)容,計算該內(nèi)容md5值;將計算的md5值與指紋庫進行匹配,將在指紋庫中沒有相應匹配項的md5值對應的數(shù)據(jù)塊的字節(jié)相加;根據(jù)相加值選擇與相加值匹配的存儲數(shù)據(jù)庫,將該相加值對應的數(shù)據(jù)塊存儲至選擇的存儲數(shù)據(jù)庫,并接收該存儲數(shù)據(jù)庫返回的索引信息。
其中,供選擇的存儲數(shù)據(jù)庫的數(shù)量為1個或1個以上。
其中,與相加值匹配的存儲數(shù)據(jù)庫為存儲空間大于且最接近相加值的存儲數(shù)據(jù)庫。
其中,指紋庫包括存儲數(shù)據(jù)庫已存儲的數(shù)據(jù)塊的md5值。
其中,索引信息包括數(shù)據(jù)塊的存儲路徑。
為解決上述技術問題,本發(fā)明提供一種數(shù)據(jù)存儲裝置,包括:劃分模塊,用于將待存儲的數(shù)據(jù)劃分為多個數(shù)據(jù)塊;計算模塊,用于將數(shù)據(jù)塊的字節(jié)與預設值進行比較,當數(shù)據(jù)塊的字節(jié)小于等于預設值時,計算該數(shù)據(jù)塊的md5值,當數(shù)據(jù)塊的字節(jié)大于預設值時,根據(jù)預設長度選取數(shù)據(jù)塊前端和后端的內(nèi)容,計算該內(nèi)容md5值;相加模塊,用于將計算的md5值與指紋庫進行匹配,將在指紋庫中沒有相應匹配項的md5值對應的數(shù)據(jù)塊的字節(jié)相加;存儲模塊,用于根據(jù)相加值選擇與相加值匹配的存儲數(shù)據(jù)庫,將該相加值對應的數(shù)據(jù)塊存儲至選擇的存儲數(shù)據(jù)庫,并接收該存儲數(shù)據(jù)庫返回的索引信息。
其中,供選擇的存儲數(shù)據(jù)庫的數(shù)量為1個或1個以上;與相加值匹配的存儲數(shù)據(jù)庫為存儲空間大于且最接近相加值的存儲數(shù)據(jù)庫。
其中,指紋庫包括存儲數(shù)據(jù)庫已存儲的數(shù)據(jù)塊的md5值。
其中,索引信息包括數(shù)據(jù)塊的存儲路徑。
為解決上述技術問題,本發(fā)明提供一種數(shù)據(jù)存儲系統(tǒng),包括:主控數(shù)據(jù)庫,主控數(shù)據(jù)庫包括上述數(shù)據(jù)存儲裝置;存儲數(shù)據(jù)庫,用于提供數(shù)據(jù)塊的存儲空間。
本發(fā)明的有益效果是:區(qū)別于現(xiàn)有技術的情況,本發(fā)明的數(shù)據(jù)存儲方法包括以下步驟:將待存儲的數(shù)據(jù)劃分為多個數(shù)據(jù)塊;將數(shù)據(jù)塊的字節(jié)與預設值進行比較,當數(shù)據(jù)塊的字節(jié)小于等于預設值時,計算該數(shù)據(jù)塊的md5值,當數(shù)據(jù)塊的字節(jié)大于預設值時,根據(jù)預設長度選取數(shù)據(jù)塊前端和后端的內(nèi)容,計算該內(nèi)容md5值;將計算的md5值與指紋庫進行匹配,將在指紋庫中沒有相應匹配項的md5值對應的數(shù)據(jù)塊的字節(jié)相加;根據(jù)相加值選擇與相加值匹配的存儲數(shù)據(jù)庫,將該相加值對應的數(shù)據(jù)塊存儲至選擇的存儲數(shù)據(jù)庫,并接收該存儲數(shù)據(jù)庫返回的索引信息。通過上述方法,可判斷待存儲的數(shù)據(jù)是否已經(jīng)存儲,對于已經(jīng)存儲的數(shù)據(jù)不再進行存儲,此方式可避免數(shù)據(jù)的重復存儲,節(jié)省存儲空間,提高存儲效率,同時將索引信息放置在存儲數(shù)據(jù)庫外,可充分利用存儲數(shù)據(jù)庫的存儲空間。
附圖說明
圖1是本發(fā)明數(shù)據(jù)存儲方法一實施例的流程示意圖;
圖2是本發(fā)明數(shù)據(jù)存儲裝置一實施例的結構示意圖。
具體實施方式
下面結合附圖和實施例對本發(fā)明進行詳細說明。
請參閱圖1,圖1是本發(fā)明數(shù)據(jù)存儲方法一實施例的流程示意圖,如圖1所示,包括以下步驟:
s11,將待存儲的數(shù)據(jù)劃分為多個數(shù)據(jù)塊。
本實施例的方法由主控數(shù)據(jù)庫實施,在劃分數(shù)據(jù)塊時,數(shù)據(jù)塊大小為變長。
s12,將數(shù)據(jù)塊的字節(jié)與預設值進行比較,當數(shù)據(jù)塊的字節(jié)小于等于預設值時,計算該數(shù)據(jù)塊的md5值,當數(shù)據(jù)塊的字節(jié)大于預設值時,根據(jù)預設長度選取數(shù)據(jù)塊前端和后端的內(nèi)容,計算該內(nèi)容md5值。
在本實施例中,選取的數(shù)據(jù)塊前端和后端的內(nèi)容的長度等于預設長度,在選取過程中,數(shù)據(jù)塊前端選取固定長度的內(nèi)容,數(shù)據(jù)塊后端選取固定長度的內(nèi)容,該兩個固定長度均為預先設置好的長度。
在本實施例中,對于字節(jié)大于預設值的數(shù)據(jù)塊,其md5值的計算方式可減少計算時間,提高數(shù)據(jù)存儲效率。
s13,將計算的md5值與指紋庫進行匹配,將在指紋庫中沒有相應匹配項的md5值對應的數(shù)據(jù)塊的字節(jié)相加。
在本實施例中,當計算的md5值在指紋庫中存在相應的匹配項時,則判斷該md5值對應的數(shù)據(jù)塊為重復數(shù)據(jù)塊,則不再對該數(shù)據(jù)塊進行存儲。
s14,根據(jù)相加值選擇與相加值匹配的存儲數(shù)據(jù)庫,將該相加值對應的數(shù)據(jù)塊存儲至選擇的存儲數(shù)據(jù)庫,并接收該存儲數(shù)據(jù)庫返回的索引信息。
在本實施例中,供選擇的存儲數(shù)據(jù)庫的數(shù)量為1個或1個以上。與相加值匹配的存儲數(shù)據(jù)庫具體為存儲空間大于且最接近相加值的存儲數(shù)據(jù)庫,如:當有兩個存儲數(shù)據(jù)庫的存儲空間大于相加值時,選擇最接近相加值的存儲數(shù)據(jù)庫作為存儲對象。需要指出的是,當只有一個存儲數(shù)據(jù)庫的存儲空間大于相加值時,選擇該存儲數(shù)據(jù)庫作為存儲對象。上述選擇存儲數(shù)據(jù)庫的方式可充分利用存儲空間。
在本實施例中,指紋庫包括存儲數(shù)據(jù)庫已存儲的數(shù)據(jù)塊的md5值。索引信息包括數(shù)據(jù)塊的存儲路徑。
綜上所述,本實施例的數(shù)據(jù)存儲方法具有以下特點:判斷待存儲的數(shù)據(jù)是否已經(jīng)存儲,對于已經(jīng)存儲的數(shù)據(jù)不再進行存儲,此方式可避免數(shù)據(jù)的重復存儲,節(jié)省存儲空間,提高存儲效率,同時將索引信息放置在存儲數(shù)據(jù)庫外,可充分利用存儲數(shù)據(jù)庫的存儲空間。
請參閱圖2,圖2是本發(fā)明數(shù)據(jù)存儲裝置一實施例的結構示意圖,如圖2所示,包括:劃分模塊21、計算模塊22、相加模塊23及存儲模塊24。
上述各模塊的功能具體如下:
劃分模塊21用于將待存儲的數(shù)據(jù)劃分為多個數(shù)據(jù)塊;計算模塊22用于將數(shù)據(jù)塊的字節(jié)與預設值進行比較,當數(shù)據(jù)塊的字節(jié)小于等于預設值時,計算該數(shù)據(jù)塊的md5值,當數(shù)據(jù)塊的字節(jié)大于預設值時,根據(jù)預設長度選取數(shù)據(jù)塊前端和后端的內(nèi)容,計算該內(nèi)容md5值;相加模塊23用于將計算的md5值與指紋庫進行匹配,將在指紋庫中沒有相應匹配項的md5值對應的數(shù)據(jù)塊的字節(jié)相加;存儲模塊24用于根據(jù)相加值選擇與相加值匹配的存儲數(shù)據(jù)庫,將該相加值對應的數(shù)據(jù)塊存儲至選擇的存儲數(shù)據(jù)庫,并接收該存儲數(shù)據(jù)庫返回的索引信息。
圖2所示裝置位于主控數(shù)據(jù)庫,在本實施例中,劃分模塊21劃分數(shù)據(jù)塊時,數(shù)據(jù)塊大小為變長。
在本實施例中,選取的數(shù)據(jù)塊前端和后端的內(nèi)容的長度等于預設長度,在選取過程中,數(shù)據(jù)塊前端選取固定長度的內(nèi)容,數(shù)據(jù)塊后端選取固定長度的內(nèi)容,該兩個固定長度均為預先設置好的長度。
在本實施例中,對于字節(jié)大于預設值的數(shù)據(jù)塊,其md5值的計算方式可減少計算時間,提高數(shù)據(jù)存儲效率。
在本實施例中,當計算的md5值在指紋庫中存在相應的匹配項時,則不再對該md5值對應的數(shù)據(jù)塊進行存儲。
在本實施例中,供選擇的存儲數(shù)據(jù)庫的數(shù)量為1個或1個以上。與相加值匹配的存儲數(shù)據(jù)庫具體為存儲空間大于且最接近相加值的存儲數(shù)據(jù)庫,如:當有兩個存儲數(shù)據(jù)庫的存儲空間大于相加值時,選擇最接近相加值的存儲數(shù)據(jù)庫作為存儲對象。需要指出的是,當只有一個存儲數(shù)據(jù)庫的存儲空間大于相加值時,選擇該存儲數(shù)據(jù)庫作為存儲對象。上述選擇存儲數(shù)據(jù)庫的方式可充分利用存儲空間。
在本實施例中,指紋庫包括存儲數(shù)據(jù)庫已存儲的數(shù)據(jù)塊的md5值。索引信息包括數(shù)據(jù)塊的存儲路徑。其中,指紋庫位于主控數(shù)據(jù)庫內(nèi)。
綜上所述,本實施例的數(shù)據(jù)存儲裝置具有以下特點:避免數(shù)據(jù)的重復存儲,節(jié)省存儲空間,提高存儲效率,對索引信息進行存儲,使得索引信息放置在存儲數(shù)據(jù)庫外,可充分利用存儲數(shù)據(jù)庫的存儲空間。
本發(fā)明數(shù)據(jù)存儲系統(tǒng)包括主控數(shù)據(jù)庫和存儲數(shù)據(jù)庫,其中,存儲數(shù)據(jù)庫的數(shù)量為1個或1個以上。主控數(shù)據(jù)庫和存儲數(shù)據(jù)庫相互配合,實現(xiàn)數(shù)據(jù)的高效存儲。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。