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

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

表1 算法的壓縮性能對比結果

表2 4000個點的歷史數據

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