壓縮方法、裝置和設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)壓縮技術(shù)領(lǐng)域,特別涉及一種壓縮方法、裝置和設(shè)備。
【背景技術(shù)】
[0002]數(shù)據(jù)壓縮是指在不丟失有用信息的前提下,縮減數(shù)據(jù)中的冗余數(shù)據(jù)以減小數(shù)據(jù)存儲空間的方法,通過對數(shù)據(jù)進行壓縮,可以有效地節(jié)省存儲空間。
[0003]在對原始數(shù)據(jù)進行壓縮時,通常會將原始數(shù)據(jù)劃分為多個數(shù)據(jù)塊,刪除該多個數(shù)據(jù)塊中重復(fù)的數(shù)據(jù)塊,再對剩余的每個數(shù)據(jù)塊分別進行壓縮。數(shù)據(jù)塊的重刪率和壓縮率取決于數(shù)據(jù)塊的大小,數(shù)據(jù)塊越大,重刪率越小,單個數(shù)據(jù)塊的壓縮率越高;相反,數(shù)據(jù)塊越小,重刪率越大,單個數(shù)據(jù)塊的壓縮率越低。
[0004]在實現(xiàn)本發(fā)明的過程中,為了保證重刪率較高,通常會將數(shù)據(jù)塊設(shè)置的較小,但這會造成數(shù)據(jù)塊的壓縮率過低。因此,需要提出一種提高壓縮率的方法。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種壓縮方法、裝置和設(shè)備。所述技術(shù)方案如下:
[0006]第一方面,提供了一種壓縮方法,所述方法包括:
[0007]接收多個數(shù)據(jù)塊;
[0008]從所述多個數(shù)據(jù)塊中獲得具有相同對象標(biāo)識的數(shù)據(jù)塊;
[0009]對所述具有相同對象標(biāo)識的數(shù)據(jù)塊進行合并;
[0010]對合并后的數(shù)據(jù)塊進行壓縮。
[0011]結(jié)合第一方面,在第一方面的第一種可能實現(xiàn)方式中,所述對所述具有相同對象標(biāo)識的數(shù)據(jù)塊進行合并,包括:
[0012]對于具有相同對象標(biāo)識的多個數(shù)據(jù)塊,根據(jù)每個數(shù)據(jù)塊的地址,對所述多個數(shù)據(jù)塊進彳丁排序;
[0013]按照所述多個數(shù)據(jù)塊的排列順序,對地址連續(xù)的多個數(shù)據(jù)塊進行合并。
[0014]結(jié)合第一方面的第一種可能實現(xiàn)方式,在第一方面的第二種可能實現(xiàn)方式中,所述按照所述多個數(shù)據(jù)塊的排列順序,對地址連續(xù)的多個數(shù)據(jù)塊進行合并,包括:
[0015]按照所述多個數(shù)據(jù)塊的排列順序,獲取第一數(shù)據(jù)塊;
[0016]判斷所述第一數(shù)據(jù)塊的長度是否大于第一預(yù)設(shè)長度;
[0017]如果所述第一數(shù)據(jù)塊的長度大于所述第一預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊確定為待壓縮的數(shù)據(jù)塊;
[0018]如果所述第一數(shù)據(jù)塊的長度不大于所述第一預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊與地址連續(xù)的下一數(shù)據(jù)塊進行合并。
[0019]結(jié)合第一方面的第二種可能實現(xiàn)方式,在第一方面的第三種可能實現(xiàn)方式中,所述如果所述第一數(shù)據(jù)塊的長度不大于所述第一預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊與地址連續(xù)的下一數(shù)據(jù)塊進行合并,包括:
[0020]如果所述第一數(shù)據(jù)塊的長度不大于所述第一預(yù)設(shè)長度,則按照所述多個數(shù)據(jù)塊的排列順序,獲取具有相同對象標(biāo)識的多個數(shù)據(jù)塊中所述第一數(shù)據(jù)塊的下一數(shù)據(jù)塊,作為第二數(shù)據(jù)塊;
[0021]判斷所述第二數(shù)據(jù)塊的地址與所述第一數(shù)據(jù)塊的地址是否連續(xù);
[0022]如果所述第二數(shù)據(jù)塊的地址與所述第一數(shù)據(jù)塊的地址連續(xù),將所述第二數(shù)據(jù)塊與所述第一數(shù)據(jù)塊合并,得到第三數(shù)據(jù)塊;
[0023]如果所述第二數(shù)據(jù)塊的地址與所述第一數(shù)據(jù)塊的地址不連續(xù),則判斷所述第一數(shù)據(jù)塊的長度是否大于第二預(yù)設(shè)長度;如果所述第一數(shù)據(jù)塊的長度大于所述第二預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊確定為待壓縮的數(shù)據(jù)塊;如果所述第一數(shù)據(jù)塊的長度不大于所述第二預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊確定為無需壓縮的數(shù)據(jù)塊。
[0024]結(jié)合第一方面的第三種可能實現(xiàn)方式,在第一方面的第四種可能實現(xiàn)方式中,所述如果所述第二數(shù)據(jù)塊的地址與所述第一數(shù)據(jù)塊的地址連續(xù),將所述第二數(shù)據(jù)塊與所述第一數(shù)據(jù)塊合并,得到第三數(shù)據(jù)塊之后,所述方法還包括:
[0025]判斷所述第三數(shù)據(jù)塊的長度是否大于所述第一預(yù)設(shè)長度;
[0026]如果所述第三數(shù)據(jù)塊的長度大于所述第一預(yù)設(shè)長度,則將所述第三數(shù)據(jù)塊確定為待壓縮的數(shù)據(jù)塊;
[0027]如果所述第三數(shù)據(jù)塊的長度不大于所述第一預(yù)設(shè)長度,則將所述第三數(shù)據(jù)塊與地址連續(xù)的下一數(shù)據(jù)塊進行合并。
[0028]第二方面,提供了一種壓縮裝置,所述裝置包括:
[0029]接收模塊,用于接收多個數(shù)據(jù)塊;
[0030]分類模塊,用于從所述多個數(shù)據(jù)塊中獲得具有相同對象標(biāo)識的數(shù)據(jù)塊;
[0031]合并模塊,用于對所述具有相同對象標(biāo)識的數(shù)據(jù)塊進行合并;
[0032]壓縮模塊,用于對合并后的數(shù)據(jù)塊進行壓縮。
[0033]結(jié)合第二方面,在第二方面的第一種可能實現(xiàn)方式中,所述合并模塊包括:
[0034]排序單元,用于對于具有相同對象標(biāo)識的多個數(shù)據(jù)塊,根據(jù)每個數(shù)據(jù)塊的地址,對所述多個數(shù)據(jù)塊進行排序;
[0035]合并單元,用于按照所述多個數(shù)據(jù)塊的排列順序,對地址連續(xù)的多個數(shù)據(jù)塊進行合并。
[0036]結(jié)合第二方面的第一種可能實現(xiàn)方式,在第二方面的第二種可能實現(xiàn)方式中,所述合并單元包括:
[0037]獲取子單元,用于按照所述多個數(shù)據(jù)塊的排列順序,獲取第一數(shù)據(jù)塊;
[0038]判斷子單元,用于判斷所述第一數(shù)據(jù)塊的長度是否大于第一預(yù)設(shè)長度;
[0039]確定子單元,用于如果所述第一數(shù)據(jù)塊的長度大于所述第一預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊確定為待壓縮的數(shù)據(jù)塊;
[0040]合并子單元,用于如果所述第一數(shù)據(jù)塊的長度不大于所述第一預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊與地址連續(xù)的下一數(shù)據(jù)塊進行合并。
[0041]結(jié)合第二方面的第二種可能實現(xiàn)方式,在第二方面的第三種可能實現(xiàn)方式中,所述合并子單元具體用于如果所述第一數(shù)據(jù)塊的長度不大于所述第一預(yù)設(shè)長度,則按照所述多個數(shù)據(jù)塊的排列順序,獲取具有相同對象標(biāo)識的多個數(shù)據(jù)塊中所述第一數(shù)據(jù)塊的下一數(shù)據(jù)塊,作為第二數(shù)據(jù)塊;判斷所述第二數(shù)據(jù)塊的地址與所述第一數(shù)據(jù)塊的地址是否連續(xù);如果所述第二數(shù)據(jù)塊的地址與所述第一數(shù)據(jù)塊的地址連續(xù),將所述第二數(shù)據(jù)塊與所述第一數(shù)據(jù)塊合并,得到第三數(shù)據(jù)塊;
[0042]所述合并子單元還用于如果所述第二數(shù)據(jù)塊的地址與所述第一數(shù)據(jù)塊的地址不連續(xù),則判斷所述第一數(shù)據(jù)塊的長度是否大于第二預(yù)設(shè)長度;如果所述第一數(shù)據(jù)塊的長度大于所述第二預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊確定為待壓縮的數(shù)據(jù)塊;如果所述第一數(shù)據(jù)塊的長度不大于所述第二預(yù)設(shè)長度,則將所述第一數(shù)據(jù)塊確定為無需壓縮的數(shù)據(jù)塊。
[0043]結(jié)合第二方面的第三種可能實現(xiàn)方式,在第二方面的第四種可能實現(xiàn)方式中,所述合并子單元還用于判斷所述第三數(shù)據(jù)塊的長度是否大于所述第一預(yù)設(shè)長度;如果所述第三數(shù)據(jù)塊的長度大于所述第一預(yù)設(shè)長度,則將所述第三數(shù)據(jù)塊確定為待壓縮的數(shù)據(jù)塊;如果所述第三數(shù)據(jù)塊的長度不大于所述第一預(yù)設(shè)長度,則將所述第三數(shù)據(jù)塊與地址連續(xù)的下一數(shù)據(jù)塊進行合并。
[0044]第三方面,提供了一種壓縮設(shè)備,所述設(shè)備包括:存儲器和處理器,所述存儲器與所述處理器連接,所述存儲器存儲有指令所述處理器執(zhí)行所述第一方面提供的任一方法。
[0045]本發(fā)明實施例提供的方法、裝置和設(shè)備,通過根據(jù)每個數(shù)據(jù)塊的對象標(biāo)識,獲得具有相同對象標(biāo)識的數(shù)據(jù)塊,即屬于同一對象的數(shù)據(jù)塊,從而將屬于同一對象的數(shù)據(jù)塊進行合并,再對合并后的數(shù)據(jù)塊進行壓縮。通過采用合并的方式增加了數(shù)據(jù)塊的長度,減少了數(shù)據(jù)碎片,在對合并后的數(shù)據(jù)塊進行壓縮時,能夠提高壓縮率。且,通過對數(shù)據(jù)塊進行分類,僅會將屬于同一對象的數(shù)據(jù)塊進行合并,而不會將屬于不同對象的數(shù)據(jù)塊進行合并,保證了在對某一對象進行讀取操作時的局部性,對該對象進行刪除或覆蓋寫等操作時,不會對其他對象的壓縮數(shù)據(jù)塊造成影響,減少了存儲設(shè)備的數(shù)據(jù)碎片。
【附圖說明】
[0046]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹。
[0047]圖1是本發(fā)明實施例提供的一種壓縮方法的流程圖;
[0048]圖2是本發(fā)明實施例提供的一種壓縮方法的流程圖;
[0049]圖3是本發(fā)明實施例提供的壓縮數(shù)據(jù)塊的示意圖;
[0050]圖4是本發(fā)明實施例提供的一種壓縮設(shè)備的框圖;
[0051]圖5是本發(fā)明實施例提供的