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