數(shù)據(jù)壓縮及解壓的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,具體而言,本發(fā)明涉及一種數(shù)據(jù)壓縮及解壓的方法及裝置。
【背景技術(shù)】
[0002]隨著計算機技術(shù)的不斷發(fā)展,在軟件開發(fā)方面各種SDK (Software DevelopmentKit,軟件開發(fā)工具包)及開發(fā)方法也在不斷的更新。在軟件應(yīng)用的過程中,通常需要通過接口傳遞各種類型的數(shù)據(jù),當(dāng)傳輸?shù)臄?shù)據(jù)量較大時,如傳輸數(shù)據(jù)中包含了大量的較長字符的數(shù)據(jù)名及其對應(yīng)的具體數(shù)值,一方面,在數(shù)據(jù)傳遞后將耗費系統(tǒng)大量的CPU (CentralProcessing Unit,中央處理器)資源去解析各數(shù)據(jù)名及其對應(yīng)的數(shù)值,從而影響終端的處理速度,且大量較長字符的數(shù)據(jù)名在存儲時將浪費大量的終端數(shù)據(jù)存儲空間;另一方面,若數(shù)據(jù)通過網(wǎng)絡(luò)方式進(jìn)行傳遞,將耗費大量的網(wǎng)絡(luò)帶寬,甚至發(fā)生數(shù)據(jù)被截斷的情況,導(dǎo)致數(shù)據(jù)丟失。
[0003]因此,需要一種對傳輸數(shù)據(jù)中較長字符的參數(shù)名進(jìn)行壓縮的方案,使包含大量較長字符的傳輸數(shù)據(jù)名及其對應(yīng)的具體數(shù)值在接口傳遞的過程中實現(xiàn)高效的傳遞,達(dá)到節(jié)約網(wǎng)絡(luò)帶寬資源與系統(tǒng)CPU資源的目的,并實現(xiàn)在數(shù)據(jù)庫中對傳輸數(shù)據(jù)進(jìn)行高效的讀寫,從而進(jìn)一步的提高用戶的體驗。
【發(fā)明內(nèi)容】
[0004]為克服上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,特提出以下技術(shù)方案:
[0005]本發(fā)明的實施例提出了一種數(shù)據(jù)壓縮的方法,包括:
[0006]對原始傳輸數(shù)據(jù)進(jìn)行分析,確定包括原始傳輸數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)大小的數(shù)據(jù)特征信息;
[0007]根據(jù)數(shù)據(jù)特征信息,判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理;
[0008]當(dāng)判斷結(jié)果指示執(zhí)行壓縮處理時,基于鍵壓縮匹配列表中預(yù)定鍵壓縮方式,對原始傳輸數(shù)據(jù)中原始鍵值對的鍵進(jìn)行轉(zhuǎn)換生成相應(yīng)的壓縮鍵;
[0009]基于壓縮鍵生成包括相應(yīng)的壓縮鍵值對的壓縮傳輸數(shù)據(jù)。
[0010]優(yōu)選地,根據(jù)數(shù)據(jù)特征信息,判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理,包括:
[0011]判斷原始傳輸數(shù)據(jù)的數(shù)據(jù)大小與第一預(yù)定數(shù)據(jù)大小閾值的關(guān)系;
[0012]若判斷結(jié)果為原始傳輸數(shù)據(jù)的數(shù)據(jù)大小大于第一預(yù)定數(shù)據(jù)大小閾值時,確定對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0013]優(yōu)選地,根據(jù)數(shù)據(jù)特征信息,判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理,包括:
[0014]判斷原始傳輸數(shù)據(jù)的數(shù)據(jù)大小分別與第一預(yù)定數(shù)據(jù)大小閾值及第二預(yù)定數(shù)據(jù)大小閾值的關(guān)系,第一預(yù)定數(shù)據(jù)大小閾值大于第二預(yù)定數(shù)據(jù)大小閾值;
[0015]若判斷結(jié)果為原始傳輸數(shù)據(jù)的數(shù)據(jù)大小大于第二預(yù)定數(shù)據(jù)大小閾值且小于第一預(yù)定數(shù)據(jù)大小閾值時,根據(jù)數(shù)據(jù)結(jié)構(gòu)判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0016]優(yōu)選地,根據(jù)數(shù)據(jù)結(jié)構(gòu)判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理,具體包括:
[0017]統(tǒng)計原始傳輸數(shù)據(jù)中具有相同的第一鍵的鍵值對的數(shù)量與原始傳輸數(shù)據(jù)中包括的鍵值對總數(shù)量的第一比例;
[0018]當(dāng)?shù)谝槐壤笥诘谝活A(yù)定比例閾值,且第一鍵的字符數(shù)量大于第一預(yù)定字符數(shù)量閾值時,判斷需要對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0019]優(yōu)選地,根據(jù)數(shù)據(jù)結(jié)構(gòu)判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理,具體包括:
[0020]判斷原始傳輸數(shù)據(jù)中具有最長字符長度的第二鍵的字符數(shù)量是否大于第二預(yù)定字符數(shù)量閾值;
[0021]若判斷第二鍵的字符數(shù)量大于第二預(yù)定字符數(shù)量閾值時,統(tǒng)計原始傳輸數(shù)據(jù)中全部第二鍵的字符數(shù)量占原始傳輸數(shù)據(jù)的總字符數(shù)量的第二比例;
[0022]當(dāng)?shù)诙壤笥诘诙A(yù)定比例閾值時,判斷需要對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0023]優(yōu)選地,該方法還包括:
[0024]確定在預(yù)定時間段內(nèi)原始傳輸數(shù)據(jù)中各個鍵值對的鍵的歷史出現(xiàn)頻率;
[0025]其中,根據(jù)數(shù)據(jù)特征信息,判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理,包括:
[0026]根據(jù)數(shù)據(jù)特征信息,并結(jié)合歷史出現(xiàn)頻率,判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0027]優(yōu)選地,基于壓縮鍵生成包括相應(yīng)的壓縮鍵值對的壓縮傳輸數(shù)據(jù)的步驟進(jìn)一步包括:
[0028]基于壓縮鍵生成相應(yīng)的壓縮鍵值對,并設(shè)置相關(guān)聯(lián)的壓縮狀態(tài)標(biāo)識;
[0029]將壓縮鍵值對及相關(guān)聯(lián)的壓縮狀態(tài)標(biāo)識組合以生成壓縮傳輸數(shù)據(jù)。
[0030]優(yōu)選地,該方法還包括:
[0031]基于鍵壓縮匹配列表生成相應(yīng)的鍵壓縮字典文件;
[0032]根據(jù)接收到的應(yīng)用獲取請求,將鍵壓縮字典文件作為配置文件發(fā)送至請求方。
[0033]本發(fā)明的另一實施例提出了一種數(shù)據(jù)解壓的方法,包括:
[0034]判斷接收到的傳輸數(shù)據(jù)是否為壓縮傳輸數(shù)據(jù);
[0035]當(dāng)判斷確定傳輸數(shù)據(jù)為壓縮傳輸數(shù)據(jù)時,解析并提取壓縮傳輸數(shù)據(jù)中的壓縮鍵值對的壓縮鍵;
[0036]基于預(yù)配置的鍵壓縮匹配列表中的預(yù)定鍵解壓方式,對壓縮鍵進(jìn)行解壓處理,以獲取得到相應(yīng)的原始鍵值對。
[0037]優(yōu)選地,判斷接收到的傳輸數(shù)據(jù)是否為壓縮傳輸數(shù)據(jù)的步驟進(jìn)一步包括:
[0038]判斷傳輸數(shù)據(jù)中的鍵值對是否包括相關(guān)聯(lián)的壓縮狀態(tài)標(biāo)識;
[0039]其中,當(dāng)判斷確定傳輸數(shù)據(jù)為壓縮傳輸數(shù)據(jù)時,解析并提取壓縮傳輸數(shù)據(jù)中的壓縮鍵值對的壓縮鍵的步驟進(jìn)一步包括:
[0040]當(dāng)傳輸數(shù)據(jù)中的鍵值對包括相關(guān)聯(lián)的壓縮狀態(tài)標(biāo)識,則確定傳輸數(shù)據(jù)為壓縮傳輸數(shù)據(jù);以及提取壓縮傳輸數(shù)據(jù)中與壓縮狀態(tài)標(biāo)識相關(guān)的壓縮鍵值對的壓縮鍵。
[0041 ] 優(yōu)選地,該方法還包括:
[0042]接收配置文件,配置文件中包括鍵壓縮字典文件;
[0043]根據(jù)鍵壓縮字典文件配置生成本地的鍵壓縮匹配列表。
[0044]本發(fā)明的實施例提出了一種數(shù)據(jù)壓縮的裝置,包括:
[0045]第一確定模塊,用于對原始傳輸數(shù)據(jù)進(jìn)行分析,確定包括原始傳輸數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)大小的數(shù)據(jù)特征信息;
[0046]第一判斷模塊,用于根據(jù)數(shù)據(jù)特征信息,判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理;
[0047]轉(zhuǎn)換模塊,用于當(dāng)判斷結(jié)果指示執(zhí)行壓縮處理時,基于鍵壓縮匹配列表中預(yù)定鍵壓縮方式,對原始傳輸數(shù)據(jù)中原始鍵值對的鍵進(jìn)行轉(zhuǎn)換生成相應(yīng)的壓縮鍵;
[0048]第一生成模塊,基于壓縮鍵生成包括相應(yīng)的壓縮鍵值對的壓縮傳輸數(shù)據(jù)。
[0049]優(yōu)選地,第一判斷模塊具體包括:
[0050]第二判斷子模塊,用于判斷原始傳輸數(shù)據(jù)的數(shù)據(jù)大小與第一預(yù)定數(shù)據(jù)大小閾值的關(guān)系;
[0051]第二確定子模塊,用于若判斷結(jié)果為原始傳輸數(shù)據(jù)的數(shù)據(jù)大小大于第一預(yù)定數(shù)據(jù)大小閾值時,確定對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0052]優(yōu)選地,第一判斷模塊包括:
[0053]第三判斷子模塊,用于判斷原始傳輸數(shù)據(jù)的數(shù)據(jù)大小分別與第一預(yù)定數(shù)據(jù)大小閾值及第二預(yù)定數(shù)據(jù)大小閾值的關(guān)系,第一預(yù)定數(shù)據(jù)大小閾值大于第二預(yù)定數(shù)據(jù)大小閾值;
[0054]第四判斷子模塊,用于若判斷結(jié)果為原始傳輸數(shù)據(jù)的數(shù)據(jù)大小大于第二預(yù)定數(shù)據(jù)大小閾值且小于第一預(yù)定數(shù)據(jù)大小閾值時,根據(jù)數(shù)據(jù)結(jié)構(gòu)判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0055]優(yōu)選地,第四判斷子模塊具體包括:
[0056]第一統(tǒng)計單元,用于統(tǒng)計原始傳輸數(shù)據(jù)中具有相同的第一鍵的鍵值對的數(shù)量與原始傳輸數(shù)據(jù)中包括的鍵值對總數(shù)量的第一比例;
[0057]第一判斷單元,用于當(dāng)?shù)谝槐壤笥诘谝活A(yù)定比例閾值,且第一鍵的字符數(shù)量大于第一預(yù)定字符數(shù)量閾值時,判斷需要對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0058]優(yōu)選地,第四判斷子模塊具體包括:
[0059]第二判斷單元,用于判斷原始傳輸數(shù)據(jù)中具有最長字符長度的第二鍵的字符數(shù)量是否大于第二預(yù)定字符數(shù)量閾值;
[0060]第二統(tǒng)計單元,用于若判斷第二鍵的字符數(shù)量大于第二預(yù)定字符數(shù)量閾值時,統(tǒng)計原始傳輸數(shù)據(jù)中全部第二鍵的字符數(shù)量占原始傳輸數(shù)據(jù)的總字符數(shù)量的第二比例;
[0061]第三判斷單元,用于當(dāng)?shù)诙壤笥诘诙A(yù)定比例閾值時,判斷需要對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0062]優(yōu)選地,該裝置還包括:
[0063]第三確定模塊,用于確定在預(yù)定時間段內(nèi)原始傳輸數(shù)據(jù)中各個鍵值對的鍵的歷史出現(xiàn)頻率;
[0064]其中,第一判斷模塊具體用于根據(jù)數(shù)據(jù)特征信息,并結(jié)合歷史出現(xiàn)頻率,判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理。
[0065]優(yōu)選地,第一生成模塊包括:
[0066]標(biāo)識設(shè)置單元,用于基于壓縮鍵生成相應(yīng)的壓縮鍵值對,并設(shè)置相關(guān)聯(lián)的壓縮狀態(tài)標(biāo)識;
[0067]組合生成單元,用于將壓縮鍵值對及相關(guān)聯(lián)的壓縮狀態(tài)標(biāo)識組合以生成壓縮傳輸數(shù)據(jù)。
[0068]優(yōu)選地,該裝置還包括:
[0069]第二生成模塊,用于基于鍵壓縮匹配列表生成相應(yīng)的鍵壓縮字典文件;
[0070]發(fā)送模塊,用于根據(jù)接收到的應(yīng)用獲取請求,將鍵壓縮字典文件作為配置文件發(fā)送至請求方ο
[0071]本發(fā)明的另一實施例提出了一種數(shù)據(jù)解壓的裝置,包括:
[0072]第六判斷模塊,用于判斷接收到的傳輸數(shù)據(jù)是否為壓縮傳輸數(shù)據(jù);
[0073]解析提取模塊,用于當(dāng)判斷確定傳輸數(shù)據(jù)為壓縮傳輸數(shù)據(jù)時,解析并提取壓縮傳輸數(shù)據(jù)中的壓縮鍵值對的壓縮鍵;
[0074]解壓處理模塊,基于預(yù)配置的鍵壓縮匹配列表中的預(yù)定鍵解壓方式,對壓縮鍵進(jìn)行解壓處理,以獲取得到相應(yīng)的原始鍵值對。
[0075]優(yōu)選地,第六判斷模塊進(jìn)一步用于判斷傳輸數(shù)據(jù)中的鍵值對是否包括相關(guān)聯(lián)的壓縮狀態(tài)標(biāo)識;
[0076]其中,解析提取模塊進(jìn)一步用于當(dāng)傳輸數(shù)據(jù)中的鍵值對包括相關(guān)聯(lián)的壓縮狀態(tài)標(biāo)識,則確定傳輸數(shù)據(jù)為壓縮傳輸數(shù)據(jù);以及提取壓縮傳輸數(shù)據(jù)中與壓縮狀態(tài)標(biāo)識相關(guān)的壓縮鍵值對的壓縮鍵。
[0077]優(yōu)選地,該裝置還包括:
[0078]接收模塊,用于接收配置文件,配置文件中包括鍵壓縮字典文件;
[0079]第三生成模塊,用于根據(jù)鍵壓縮字典文件配置生成本地的鍵壓縮匹配列表。
[0080]本發(fā)明的實施例中,提出了一種數(shù)據(jù)壓縮及解壓的方案,在服務(wù)器端通過分析原始傳輸數(shù)據(jù),判斷是否對原始傳輸數(shù)據(jù)進(jìn)行壓縮處理,當(dāng)判斷結(jié)果指示執(zhí)行壓縮處理時,基于鍵壓縮匹配列表中預(yù)定鍵壓縮方式,對原始傳輸數(shù)據(jù)中原始鍵值對的鍵進(jìn)行轉(zhuǎn)換生成相應(yīng)的壓縮鍵,隨后基于壓縮鍵生成包括相應(yīng)的壓縮鍵值對的壓縮傳輸數(shù)據(jù);若傳輸數(shù)據(jù)通過網(wǎng)絡(luò)方式進(jìn)行傳輸時,通過對原始傳輸數(shù)據(jù)中原始鍵值對的鍵進(jìn)行轉(zhuǎn)換生成相應(yīng)的壓縮鍵,可在數(shù)據(jù)傳輸過程中節(jié)省網(wǎng)絡(luò)帶寬,避免了數(shù)據(jù)量過大時不可預(yù)期的數(shù)據(jù)丟失的情況,實現(xiàn)了數(shù)據(jù)的高效傳輸;同時,提高計算機數(shù)據(jù)處理的響應(yīng)時間;在終端設(shè)備的