一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮方法及裝置制造方法
【專利摘要】本發(fā)明旨在提供一種在列存儲數(shù)據(jù)庫中自適應(yīng)的智能壓縮方法。包括,多種壓縮算法構(gòu)成的復(fù)合壓縮引擎,對一列中的數(shù)據(jù)進(jìn)行抽樣分析特征,按照特征縮減壓縮引擎中備選算法的范圍,通過采樣壓縮的方式選定壓縮算法,以及同一壓縮方法的步長控制防止抽樣異常造成整列壓縮效果不佳。本發(fā)明可以在列存數(shù)據(jù)庫中對存儲數(shù)據(jù)進(jìn)行有效的壓縮,通過復(fù)合算法引擎適應(yīng)不同的數(shù)據(jù)。而數(shù)據(jù)抽樣以及采樣可以有效的在相近算法中做出選擇,避免了傳統(tǒng)復(fù)合算法下追求壓縮比而造成的過量計算,兼顧壓縮速度與壓縮比的綜合結(jié)果。
【專利說明】一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機(jī)技術(shù)應(yīng)用領(lǐng)域,特別是涉及到一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮方法。
【背景技術(shù)】
[0002]壓縮是數(shù)據(jù)庫中一項很重要的技術(shù),它不僅僅可以減少磁盤存儲空間的占用,還可以很大程度的提高查詢速度,特別是在早期存儲設(shè)備I/o性能較差的時候。隨著現(xiàn)代數(shù)據(jù)庫技術(shù)的發(fā)展,特別是列存數(shù)據(jù)庫出現(xiàn)后,壓縮技術(shù)發(fā)揮了更大的作用。因為傳統(tǒng)的行存數(shù)據(jù)庫不同類型的數(shù)據(jù)混雜在一起,很難從中找出數(shù)據(jù)規(guī)律以實現(xiàn)壓縮。為了達(dá)到理想的壓縮比,通常要進(jìn)行大量的計算。
[0003]列存數(shù)據(jù)庫中各列的數(shù)據(jù)獨(dú)立存儲,因為同一列的數(shù)據(jù)類型相同,而且實際應(yīng)用場景下的數(shù)據(jù)往往具有很強(qiáng)的局部性,所以更具備可壓縮性。然而隨著信息量的急速增長,對壓縮效能的要求也越來越高,這不僅僅體現(xiàn)在壓縮比方面。因為不同硬件環(huán)境存儲設(shè)備與計算設(shè)備的處理能力不同,所以對壓縮比和壓、解壓速率的要求也不同。一種方式是在數(shù)據(jù)庫實現(xiàn)中集成多種壓縮算法,對每一列采用不同的算法,一般是在建表的時候指定。這種方法的缺點是依賴于人的判斷,此外無法解決不同數(shù)據(jù)特征下選定最適宜的方法,因為即使數(shù)據(jù)類型或列的類型相同,數(shù)據(jù)仍然可以有不同的特征。如取值范圍、離散度、有序、連續(xù)性等。
【發(fā)明內(nèi)容】
[0004]本發(fā)明主要解決的是如何在列存數(shù)據(jù)庫中智能的采用自適應(yīng)的方式實現(xiàn)壓縮算法的自主選取,既達(dá)到較好的壓縮效果,又能降低運(yùn)行及維護(hù)成本。
[0005]為了實現(xiàn)上述目的,本發(fā)明采取的技術(shù)方案為:一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮方法,其特征在于,包括如下步驟:
[0006](I)多種壓縮算法構(gòu)建壓縮引擎并分類;
[0007](2)數(shù)據(jù)采樣分析,找到相應(yīng)的壓縮算法分類;
[0008](3)選定列存數(shù)據(jù)的步長并抽樣,使用壓縮算法分類中的各壓縮算法進(jìn)行壓縮;
[0009](4)評估壓縮結(jié)果,選定一種壓縮算法;
[0010](5)對步長范圍內(nèi)的數(shù)據(jù)都采用步驟(4)確認(rèn)的壓縮算法進(jìn)行處理;
[0011](6)取得下一步長的數(shù)據(jù)從步驟(2)開始循環(huán)。
[0012]優(yōu)選的,所述步驟(I)壓縮引擎由多種壓縮算法共同構(gòu)建而成,并按照各壓縮算法擅長處理的數(shù)據(jù)類型進(jìn)行分類。
[0013]進(jìn)一步的,所述分類的每個類中可以有多種備選算法,每種算法也可能被劃分至多個類中。
[0014]優(yōu)選的,所述步驟(2)是利用數(shù)據(jù)庫中知識庫的規(guī)則對數(shù)據(jù)進(jìn)行特征分析。
[0015]本發(fā)明的另一方面,一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮裝置,其特征在于,包括:
[0016]壓縮引擎構(gòu)建模塊,用于以多種壓縮算法構(gòu)建壓縮引擎;
[0017]分類模塊,用于多種壓縮算法的分類;
[0018]數(shù)據(jù)采樣模塊,用于對數(shù)據(jù)進(jìn)行采樣;
[0019]數(shù)據(jù)分析模塊,用于對采樣數(shù)據(jù)進(jìn)行分析,找到相應(yīng)的壓縮算法分類;
[0020]步長選定模塊,選定列存數(shù)據(jù)的步長;
[0021]抽樣模塊,從一個步長的數(shù)據(jù)中抽樣;
[0022]壓縮模塊,對數(shù)據(jù)進(jìn)行壓縮;
[0023]評估模塊,用于評估壓縮結(jié)果,選定壓縮引擎中的一種壓縮算法;
[0024]循環(huán)模塊,用于按照步長循環(huán)取得數(shù)據(jù)。
[0025]優(yōu)選的,所述分類模塊為數(shù)據(jù)類型分類模塊,按照各壓縮算法擅長處理的數(shù)據(jù)類型進(jìn)行分類。
[0026]優(yōu)選的,所述數(shù)據(jù)分析模塊包括規(guī)則分析模塊,用于利用數(shù)據(jù)庫中知識庫的規(guī)則對數(shù)據(jù)進(jìn)行特征分析。
[0027]本發(fā)明的有益效果為:
[0028]通過本發(fā)明的實施,使用多種壓縮算法構(gòu)成壓縮引擎,對列數(shù)據(jù)進(jìn)行采樣初步分析數(shù)據(jù)特征,包括類型、數(shù)值范圍等信息,結(jié)合系統(tǒng)中的知識庫對算法進(jìn)行初選。在數(shù)據(jù)中進(jìn)行抽樣,使用備選的壓縮方法進(jìn)行壓縮,并借助評估體系對壓縮結(jié)果進(jìn)行對比,綜合考量選定最適合的算法。在后續(xù)的一定量的數(shù)據(jù)范圍內(nèi)采用選定的壓縮方法。本發(fā)明可以在列存數(shù)據(jù)庫中對存儲數(shù)據(jù)進(jìn)行有效的壓縮,通過復(fù)合算法引擎適應(yīng)不同的數(shù)據(jù)。而數(shù)據(jù)抽樣以及采樣可以有效的在相近算法中做出選擇,避免了傳統(tǒng)復(fù)合算法下追求壓縮比而造成的過量計算,兼顧壓縮速度與壓縮比的綜合結(jié)果。
【專利附圖】
【附圖說明】
[0029]圖1是本發(fā)明的流程示意圖。
【具體實施方式】
[0030]下面結(jié)合具體實施例對本發(fā)明作進(jìn)一步說明。
[0031]如圖1所示,本發(fā)明采取如下的流程步驟:
[0032]1.多種壓縮算法構(gòu)成壓縮引擎
[0033]針對常見的數(shù)據(jù)類型和特征,如整型、浮點、字符竄、超長字符串、有序數(shù)據(jù)等,選擇一批壓縮算法,并按照其擅長處理的數(shù)據(jù)類型進(jìn)行分類。每個類中可以有多種備選算法,每種算法也可能被劃分至多個類中。
[0034]2.數(shù)據(jù)采樣分析
[0035]對數(shù)據(jù)進(jìn)行采樣,并利用知識庫中的規(guī)則對數(shù)據(jù)進(jìn)行特征分析,以找到相應(yīng)的備選算法分類。
[0036]3.選定步長并抽樣進(jìn)行壓縮
[0037]—般列存數(shù)據(jù)是分塊進(jìn)行存儲的,可以根據(jù)需要選定步長,如果數(shù)據(jù)量較大時,可選擇大的步長,例如步長可以選擇為1000個數(shù)據(jù)塊。
[0038]從一個步長的數(shù)據(jù)量中進(jìn)行抽樣,可以使隨機(jī)抽取也可以直接取前幾個數(shù)據(jù)塊。對抽樣數(shù)據(jù),使用步驟2中確認(rèn)的備選算法逐一進(jìn)行壓縮。
[0039]4.評估
[0040]使用評估系統(tǒng)對壓縮結(jié)果進(jìn)行評估,根據(jù)需要確定各種壓縮指標(biāo)的權(quán)重,獲得最終結(jié)論一選定一種壓縮算法。
[0041]5.壓縮
[0042]對步長范圍內(nèi)的數(shù)據(jù)都采用步驟4確認(rèn)的壓縮方法進(jìn)行處理。
[0043]6.循環(huán)
[0044]取得下一個步長的數(shù)據(jù),轉(zhuǎn)至步驟2,直至所有數(shù)據(jù)處理結(jié)束。
[0045]通過上述步驟,在列存數(shù)據(jù)庫中對存儲數(shù)據(jù)進(jìn)行有效的壓縮,通過復(fù)合算法引擎適應(yīng)不同的數(shù)據(jù)。而數(shù)據(jù)抽樣以及采樣可以有效的在相近算法中做出選擇,避免了傳統(tǒng)復(fù)合算法下追求壓縮比而造成的過量計算,兼顧壓縮速度與壓縮比的綜合結(jié)果。
【權(quán)利要求】
1.一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮方法,其特征在于,包括如下步驟: (1)多種壓縮算法構(gòu)建壓縮引擎并分類; (2)數(shù)據(jù)采樣分析,找到相應(yīng)的壓縮算法分類; (3)選定列存數(shù)據(jù)的步長并抽樣,使用壓縮算法分類中的各壓縮算法進(jìn)行壓縮; (4)評估壓縮結(jié)果,選定一種壓縮算法; (5)對步長范圍內(nèi)的數(shù)據(jù)都采用步驟(4)確認(rèn)的壓縮算法進(jìn)行處理; (6)取得下一步長的數(shù)據(jù)從步驟(2)開始循環(huán)。
2.根據(jù)權(quán)利要求1所述的一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮方法,其特征在于,所述步驟(1)壓縮引擎由多種壓縮算法共同構(gòu)建而成,并按照各壓縮算法擅長處理的數(shù)據(jù)類型進(jìn)行分類。
3.根據(jù)權(quán)利要求2所述的一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮方法,其特征在于,所述分類的每個類中可以有多種備選算法,每種算法也可能被劃分至多個類中。
4.根據(jù)權(quán)利要求1所述的一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮方法,其特征在于,所述步驟(2)是利用數(shù)據(jù)庫中知識庫的規(guī)則對數(shù)據(jù)進(jìn)行特征分析。
5.一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮裝置,其特征在于,包括: 壓縮引擎構(gòu)建模塊,用于以多種壓縮算法構(gòu)建壓縮引擎; 分類模塊,用于多種壓縮算法的分類; 數(shù)據(jù)采樣模塊,用于對數(shù)據(jù)進(jìn)行采樣; 數(shù)據(jù)分析模塊,用于對采樣數(shù)據(jù)進(jìn)行分析,找到相應(yīng)的壓縮算法分類; 步長選定模塊,選定列存數(shù)據(jù)的步長; 抽樣模塊,從一個步長的數(shù)據(jù)中抽樣; 壓縮模塊,對數(shù)據(jù)進(jìn)行壓縮; 評估模塊,用于評估壓縮結(jié)果,選定壓縮引擎中的一種壓縮算法; 循環(huán)模塊,用于按照步長循環(huán)取得數(shù)據(jù)。
6.根據(jù)權(quán)利要求5所述的一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮裝置,其特征在于,所述分類模塊為數(shù)據(jù)類型分類模塊,按照各壓縮算法擅長處理的數(shù)據(jù)類型進(jìn)行分類。
7.根據(jù)權(quán)利要求5所述的一種列存數(shù)據(jù)庫的數(shù)據(jù)壓縮裝置,其特征在于,所述數(shù)據(jù)分析模塊包括規(guī)則分析模塊,用于利用數(shù)據(jù)庫中知識庫的規(guī)則對數(shù)據(jù)進(jìn)行特征分析。
【文檔編號】H03M7/30GK104462334SQ201410727736
【公開日】2015年3月25日 申請日期:2014年12月3日 優(yōu)先權(quán)日:2014年12月3日
【發(fā)明者】劉威, 鹿明, 武新, 崔維力 申請人:天津南大通用數(shù)據(jù)技術(shù)股份有限公司