顧明
(阜新高等專科學(xué)校,遼寧阜新,123000)
隨著現(xiàn)代網(wǎng)絡(luò)技術(shù)的深入發(fā)展與應(yīng)用,大量的信息數(shù)據(jù)隨之產(chǎn)生,這些數(shù)據(jù)包含許多有價(jià)值信息需通過進(jìn)一步挖掘分析以供使用,促使處理大規(guī)模數(shù)據(jù)的相關(guān)技術(shù)不斷發(fā)展完善,已經(jīng)成為研究大數(shù)據(jù)處理領(lǐng)域的重點(diǎn)之一,在優(yōu)化解決大數(shù)據(jù)處理方面,數(shù)據(jù)流分類壓縮并行算法表現(xiàn)出了較大的應(yīng)用優(yōu)勢。
物聯(lián)網(wǎng)發(fā)展及功能的實(shí)現(xiàn)產(chǎn)生大量實(shí)時(shí)數(shù)據(jù),這些數(shù)據(jù)需作為歷史數(shù)據(jù)被保存下來以供后續(xù)使用,直接存入數(shù)據(jù)庫的方式在降低數(shù)據(jù)庫實(shí)時(shí)性的同時(shí)需較大的存儲空間,增加了數(shù)據(jù)庫的壓力及用戶對數(shù)據(jù)的使用難度。實(shí)時(shí)記錄和查詢數(shù)據(jù)是實(shí)時(shí)數(shù)據(jù)庫的基本功能,數(shù)據(jù)規(guī)模不斷擴(kuò)大的實(shí)時(shí)數(shù)據(jù)庫對所使用到的數(shù)據(jù)壓縮算法的要求不斷提高,實(shí)現(xiàn)對數(shù)據(jù)高效準(zhǔn)確的壓縮和解壓過程,對大量數(shù)據(jù)進(jìn)行存儲的實(shí)時(shí)數(shù)據(jù)庫通常需并行采取多種存儲方式完成。在現(xiàn)有壓縮技術(shù)研究成果中,目前以旋轉(zhuǎn)門算法、PPM壓縮算法較為常用,但普遍存在有損壓縮的問題,無法滿足高精度的數(shù)據(jù)存儲要求。為此本文主要對實(shí)時(shí)數(shù)據(jù)庫中的數(shù)據(jù)壓縮算法進(jìn)行了研究,設(shè)計(jì)了一種無損數(shù)據(jù)壓縮方案,以期更好的為生產(chǎn)活動服務(wù)。
針對實(shí)時(shí)數(shù)據(jù)庫需以被壓縮數(shù)據(jù)特點(diǎn)為依據(jù)對壓縮算法進(jìn)行設(shè)計(jì),實(shí)時(shí)數(shù)據(jù)庫數(shù)據(jù)主要可劃分為:(1)表示采集數(shù)據(jù)時(shí)間的時(shí)間戳,通過將時(shí)間戳添加到各次采集的數(shù)據(jù)上可使決策的準(zhǔn)確率得以有效提升,通常以具體應(yīng)用場景為依據(jù)對自定義系統(tǒng)采集的時(shí)間戳。時(shí)間戳跳變對整體性影響較小,時(shí)間戳在固定的數(shù)據(jù)采集周期下通常呈現(xiàn)出等差數(shù)列形式,不連續(xù)的跳變的時(shí)間戳表現(xiàn)形式通常代表數(shù)據(jù)傳輸失敗,大部分?jǐn)?shù)據(jù)均可成功傳輸。(2)用于判斷數(shù)據(jù)采集信息工作狀態(tài)的質(zhì)量碼,為滿足物聯(lián)網(wǎng)發(fā)展需求,數(shù)據(jù)質(zhì)量碼在此基礎(chǔ)上包含了多種信號狀態(tài),在實(shí)時(shí)數(shù)據(jù)庫中,數(shù)據(jù)質(zhì)量碼以少數(shù)的固定值為主,不同狀態(tài)對應(yīng)使用不同的數(shù)值表示,例如在系統(tǒng)數(shù)據(jù)處于正常狀態(tài)的情況下,質(zhì)量碼的存儲特征通常用0表示,并在發(fā)生變化后通常會持續(xù)一段時(shí)間。(3)作為實(shí)時(shí)數(shù)據(jù)庫的主要構(gòu)成部分?jǐn)?shù)值包含bool型、離散型、連續(xù)型等在內(nèi)的多種類型,其中bool型數(shù)值包括0和 1兩種,根據(jù)不同數(shù)據(jù)精度,連續(xù)型數(shù)值的表示方式需使用到不同長度的數(shù)值對數(shù)據(jù)精度的要求越高表示其具體數(shù)值的位數(shù)越長[1]。
本文針對時(shí)間戳和質(zhì)量碼,在壓縮處理實(shí)時(shí)數(shù)據(jù)庫數(shù)據(jù)的過程中,為提升數(shù)據(jù)傳輸及查詢效率,首先對數(shù)據(jù)進(jìn)行預(yù)處理,將數(shù)據(jù)按上文所述分為時(shí)間戳、質(zhì)量碼和數(shù)值,其中的時(shí)間戳和質(zhì)量碼采用RLE 算法;數(shù)值需做進(jìn)一步的數(shù)據(jù)分析處理,數(shù)值型數(shù)據(jù)中選用采用LZW算法作為bool型數(shù)據(jù)的壓縮算法,綜合運(yùn)用LZW及LZ78算法作為連續(xù)型及離散型數(shù)據(jù)的壓縮算法,實(shí)現(xiàn)了不同類型數(shù)據(jù)的壓縮過程。
(1)時(shí)間戳和質(zhì)量碼的壓縮
先確定代表某個(gè)時(shí)間戳的基準(zhǔn)值,并將其存入數(shù)據(jù)庫中,再通過處理其他記錄的時(shí)間戳獲取一個(gè)差值的序列,然后比較序列力相鄰的兩個(gè)時(shí)間戳差值的大小,記錄差值相等的次數(shù),然后讀入下一個(gè)數(shù)據(jù),對差值不相等情況下的差值及差值相等次數(shù)進(jìn)行記錄后在開始對下一個(gè)差值進(jìn)行讀入操作,考慮到時(shí)間戳的慣用格式,其兩個(gè)相鄰差值的級別通常較小,存儲時(shí)間戳的差值時(shí)可使用 1 個(gè)字節(jié)。在存儲差值時(shí),通過單字節(jié)匹配的方式執(zhí)行RLE 算法完成。
(2)數(shù)值的壓縮
本文使用簡單的二進(jìn)制的bit位對bool類數(shù)值的壓縮過程進(jìn)行表示。壓縮處理連續(xù)型和離散型數(shù)值時(shí),將數(shù)據(jù)切割為相互獨(dú)立的單個(gè)字節(jié)以滿足LZ系列壓縮算法處理需求時(shí),會導(dǎo)致原有數(shù)據(jù)的完整性被破壞,所以本文算法在數(shù)據(jù)壓縮過程對數(shù)值之間的關(guān)系進(jìn)行考慮,對于連續(xù)型數(shù)值實(shí)際實(shí)驗(yàn)證明了一段時(shí)間內(nèi)其數(shù)據(jù)的波動性較小,以所獲取的差值為依據(jù)對差值的壓縮值進(jìn)行計(jì)算,在記錄值同基準(zhǔn)值間差值超長預(yù)設(shè)范圍的情況下將該記錄值選做新基準(zhǔn)值,據(jù)此完成對后來記錄的差值的計(jì)算。先完成相關(guān)值的初始化選擇和設(shè)置,包括基準(zhǔn)值和一個(gè)固定值的差值范圍,接下來對字典進(jìn)行初始化,根據(jù)經(jīng)過預(yù)處理的數(shù)據(jù)類型,完成對當(dāng)前記錄值同基準(zhǔn)值間差值的計(jì)算,并據(jù)此判斷字典中是否含有當(dāng)前差值;否則找出該字符串對應(yīng)索引過程,通過LZ78算法的使用完成對不同基準(zhǔn)值的壓縮過程,具體流程如圖1所示,從而使連續(xù)型數(shù)據(jù)實(shí)現(xiàn)快速有效的壓縮處理過程[2]。

圖1 數(shù)值壓縮算法流程
具體實(shí)驗(yàn)結(jié)果如表1所示。本文通過使用智能溫濕度控制系統(tǒng)提供測試環(huán)境及數(shù)據(jù),該系統(tǒng)對棚內(nèi)的溫度和濕度使用傳感器完成采集后向控制中心傳送所采集到的數(shù)據(jù),再通過系統(tǒng)的智能控制算法完成對棚內(nèi)環(huán)境的智能控制過程,環(huán)境傳感器采集周期為20 ms,系統(tǒng)采集參數(shù)屬性包含4個(gè)等級,陽光強(qiáng)度(15級)為離散值,溫度值為一個(gè)連續(xù)數(shù)值即(-3℃~42℃)間,濕度值(2000)為一個(gè)連續(xù)數(shù)值,當(dāng)前調(diào)節(jié)傳感器開關(guān)的數(shù)量為1000,以該環(huán)境中的數(shù)據(jù)(共包括4000 個(gè)點(diǎn))作為實(shí)驗(yàn)對象采用本文算法所獲取的壓縮值如表2所示,實(shí)驗(yàn)結(jié)果表明該算法壓縮時(shí)間戳和質(zhì)量碼的效果較好,更適用于離散數(shù)值的壓縮過程。實(shí)時(shí)數(shù)據(jù)庫壓縮算法同本文壓縮算法的實(shí)驗(yàn)對比結(jié)果如表3所示,本文算法壓縮結(jié)果同原始壓縮比例基本一致,由于原始壓縮算法屬于有損壓縮導(dǎo)致一部分?jǐn)?shù)據(jù)被丟失,本文算法的無損壓縮過程更能滿足實(shí)際工業(yè)應(yīng)用需求。通過實(shí)時(shí)性較的RLE算法的使用實(shí)現(xiàn)了壓縮時(shí)間的顯著降低,有損壓縮雖能降低解壓時(shí)間但會損失部分?jǐn)?shù)據(jù),所以可,本文算法兼顧了解壓質(zhì)量和效率,能更好的滿足實(shí)時(shí)數(shù)據(jù)庫的需求[3]。

表1 算法的壓縮性能對比結(jié)果

表2 4000個(gè)點(diǎn)的歷史數(shù)據(jù)

表3 壓縮算法的性能對比
目前使用的實(shí)施數(shù)據(jù)庫大多能對歷史數(shù)據(jù)進(jìn)行長時(shí)間的保存,但隨著實(shí)際應(yīng)用中數(shù)據(jù)規(guī)模的不斷增加,占用較大存儲空間的直接存儲模式明顯降低了傳輸及后續(xù)查詢效率,為解決數(shù)據(jù)庫中大量數(shù)據(jù)的存儲問題,本文完成了分類的數(shù)據(jù)壓縮算法的設(shè)計(jì),在提高數(shù)據(jù)壓縮的同時(shí)實(shí)現(xiàn)了實(shí)時(shí)數(shù)據(jù)庫數(shù)據(jù)的無損存儲,經(jīng)實(shí)驗(yàn)測試本文方法取得了良好的數(shù)據(jù)壓縮及存儲效果,進(jìn)一步提高了數(shù)據(jù)庫的實(shí)時(shí)性功能,并使數(shù)據(jù)庫的實(shí)際存儲容量得以顯著提升。