實時資料庫中的資料壓縮技術

2021-07-12 01:44:29 字數 3848 閱讀 6488

標籤: 資料庫

演算法磁碟

網路圖形工作

2009-09-21 11:22

2715人閱讀收藏 

舉報

實時資料庫(4)

實時資料庫中的資料壓縮技術很高深很神秘。 轉(bbs.51cto.com)

現在的資料壓縮理論和技術已經很成熟,大家可以看看我**的博文《資料壓縮技術簡史》,該文章淺顯易懂,是一篇很好的關於資料壓縮的科普文章。

在不同的應用領域,又可以針對不同的資料應用特徵,引用不同的資料壓縮技術,比如,圖形處理領域的jepg壓縮技術,聲音處理中的***壓縮技術等。在流程工業行業中,工業實時資料也有一定的變化規律,可以針對這些規律,研究特定的資料壓縮演算法。

下面是工業實時資料的一些特徵:

工業實時資料的資料變化具有一定波形規律; 

工業實時資料中只有一小部分測點的值經常發生改變; 

工業實時資料中很多測點的數值都具有慢變化的特徵; 

數值變化與時間變化具有共同變化特性; 

使用者在一定範圍內,能夠允許資料的精度損失; 

在工業應用領域中,常用的壓縮演算法分為三類:

無失真壓縮; 

有失真壓縮; 

二級壓縮; 

其中,無失真壓縮一般以通用壓縮理論為基礎,採取哈佛曼演算法等經典的壓縮演算法;而有失真壓縮而更多地考慮了工業實時資料的特徵,而採取的一些特殊舍點演算法;二級壓縮技術,則是同時利用了這兩種資料壓縮技術。

實時資料庫的無失真壓縮以通用壓縮理論為基礎,隨便找一本大學教材就能看懂,在此不再多說。

目前比較著名的有損壓縮演算法,有pi中使用的旋轉門壓縮演算法,ih中使用的死區壓縮演算法,以及一些變通壓縮演算法(如在旋轉門演算法基礎上改用二次均方差作為偏差比較,以提高資料還原精度),這些演算法原理都比較簡單。網上有很多相關的文章,我在前幾篇文章中提到的變化壓縮演算法,是死區壓縮演算法的簡化變種,而liyaoer123同學在他的部落格上帖出了osisoft關於旋轉門壓縮的技術文章,大家有興趣可以去看看。

總而言之,實時資料庫的壓縮演算法真的不難理解,只是實時資料庫重多技術中的一種而已。

2.只要搞清楚資料壓縮演算法,就能編寫好的實時資料庫了。

這個問題要從兩方面來分析。

首先要說明,資料壓縮只是實時資料庫中乙個技術點,這個技術點相對於實時資料庫其它技術點而言,難度和工作量是非常小的,我在《實時資料庫的理論與技術》中,列出了實時資料庫需關心的技術點,大家可以看看。只搞清資料壓縮演算法,是不能編寫良好的實時資料庫的。

另乙個方面,只從資料壓縮這個角度來看,只考慮演算法也是不行的。

在實時資料庫的資料壓縮模組中,除了要考慮壓縮演算法之外,還要考慮以下內容:

變數id、時間戳、質量戳、值四個欄位在壓縮演算法中的資料組織,包括邏輯組織和空間組織; 

壓縮演算法與記憶體緩衝區的配合; 

壓縮演算法與磁碟檔案的配合; 

特殊情況的資料處理,如,啟動、停止、備份、恢復等時的資料壓縮狀態。 

3.實時資料庫中,資料壓縮的壓縮率越高越好。

剛才提到,實時資料庫中的資料壓縮演算法都是非常簡單,這是由實時資料庫的應用特點決定的。

要考慮乙個實時資料庫的資料壓縮技術技術,需要從以下幾方面考慮:

資料壓縮率; 

壓縮資料的檢索和定位速度; 

資料壓縮時間; 

資料解壓時間; 

壓縮資料在記憶體和磁碟的組織結構,以便更方便地利用記憶體和磁碟的特性; 

資料解壓後的還原精度; 

資料壓縮率只是其中乙個指標,實時資料庫追求的是綜合性能指標,不能只看某一項指標。

從某個角度而言,在實時資料庫的應用中,資料的壓縮和解壓時間的指標,要優先於資料壓縮率指標。但是,在設計良好的系統中,這兩個指標之間並不矛盾。

4.無失真壓縮比有失真壓縮要好

在兩個洋品牌pi和edna之間,經常會就無失真壓縮和有失真壓縮哪個更好這個問題產生爭執。

基本上,在此爭執中,edna的無失真壓縮處於攻勢,而pi則見招折招處處守勢。總的來說,edna的市場宣傳做得很不錯,很多使用者都是這樣評價:edna比pi相比有很多優點,它採用了無失真壓縮技術,還有......,而且,它的**比pi便宜多了。

客觀地講,無失真壓縮有其好處,它在某些方面保證了資料的精度,但是,這並不能說,無失真壓縮一定比有失真壓縮好。

採用無失真壓縮演算法的實時資料庫廠家,不能迴避以下兩個問題:

採用無失真壓縮演算法的壓縮率比採用有損壓縮演算法要低得多,針對工業實時資料的特徵資訊提取的無失真壓縮,是不可能達到10:1的。

採用無失真壓縮演算法的實時資料庫,單機總處理點數會存在效能瓶頸,以目前主流的計算機而言,採用無失真壓縮演算法的實時資料庫,平均只能處理2萬左右的歷史點。

另外,無失真壓縮所宣稱的100%保持資料不丟失,只是一句話宣傳詞,在計算機上處理工業實時資料,本身就存在大量的資料資訊丟失:

資料採集感測器存在採集誤差; 

資料採集是實時資料趨勢變化的取樣和數位化的過程,採集週期之間的特徵波型已經丟失; 

計算機處理和網路傳輸造成的延時和不確定,也會造成採集波型的失真; 

感測器和計算機的資料型別位元組限制,也會造成資料的失真。 

在存在多處無法控制的失真環節的情況下,只強調儲存資料的完全不失真,是沒有意義的,只是商務宣傳的需要,只要是數位化和計算機化處理,所有的資料就是近似的處理過程。

有人會說,這也失真、那也失真,還處理個屁呀。這其實是一種**情結,是在無意義地追求某個特定的指標而不考慮系統整體效能。如果實時資料庫在採用無失真壓縮的同時,還能保證很快的解壓縮速度和較高的壓縮率,當然無可厚非,但目前的理論和技術條件下,這些指標是矛盾的。而採取有失真壓縮技術,是在不影響整體精度情況下的效能指標的綜合平衡。

5.實時資料庫中,資料壓縮不重要,要不要資料壓縮沒關係。

關於這一論點,有兩種不同的觀點。

第一種觀點認為,現在的計算機硬碟很便宜了,磁碟容量不夠,大不了多買幾塊磁碟。

第二種觀點認為,實時資料庫的重點是上層功能和應用,在工業應用中,資料壓縮費力又不討好,還不如將精力放在其它功能上。

這兩種觀點都不正確,實時資料庫的市場存在意義,是因為現在的其它資料庫產品,不能地處理大量工業實時和歷史資料。這裡說不能處理,包括處理速度和磁碟容量。

在我的文章《實時資料庫歷史資料容量的計算方法》中計算得出,用關聯式資料庫儲存10000個每秒鐘變化一次的雙精度數,同時建立乙個索引,儲存一年需要磁碟空間為:12922g,而用實時資料庫儲存,則只需103g,大家可以換算一下,12922g,需要多少塊磁碟?

磁碟容量只是問題的乙個方面,另一方面,資料的高壓縮率意味著整個系統的資料處理速度更快,這體現在三個方面:高壓縮率的資料,占用磁碟空間小,將資料從磁碟讀入記憶體的速度快,網路傳輸的速度快,資料在記憶體中占用的空間小。而這三個因素,是實時資料庫提高系統整體執行速度很重要的幾個因素。

乙個良好的實時資料庫,必須要處理好實時壓縮問題,只有處理好資料壓縮問題,才能使系統的整體效能達到某個可用性指標。

以下有乙個對是否選用實時資料庫和資料壓縮技術的簡單判斷:

關聯式資料庫只能處理5000點每秒變化的工業實時資料,在此範圍內,可以不考慮選用實時資料庫。 

在5000點至10000點的系統內,需要拋開關聯式資料庫,重新設計自己的資料存貯系統,但是,在這個領域,是不太需要考慮資料壓縮技術的。 

當系統的歷史點數在10000點以上時,必須要考慮資料壓縮技術和專門的實時資料庫了。 

很多朋友告訴我,他們的系統不採用資料壓縮技術,他們也不關心資料壓縮技術,他們認為,良好的上層應用軟體比資料壓縮更重要。我要對他們說:不同的行業,不同的系統規模,對實時資料庫的效能指標要求是不一樣的。實時資料庫系統是乙個綜合性的應用系統,設計良好的底層模組是其它模組良好執行的基礎,資料壓縮技術與其它資料庫技術一起,對整個系統的執行提供了很底層但很重要的環境,大型實時資料庫系統中,資料壓縮技術是必須考慮的,另一方面,實時資料庫中,資料壓縮技術只是實時資料庫系統中乙個重要的技術點,但不是全部。

實時資料庫Server To Server同步方案

sis 側實時資料庫 mis側實時資料庫同步,中間過物理隔離網閘,傳輸資料,滿足 電力二次系統安全防護方案 要求,實現可信資料從高安全區向低安全區的單向傳遞。1 網閘原理 連線建立後,內網側主動向外網側傳送資料,外網側可選擇應答或不應答 或是外網側傳送乙個小於等於 4個位元組的請求,內網側以相應的資...

實時資料庫Server To Server同步方案

sis側實時資料庫 mis側實時資料庫同步,中間過物理隔離網閘,傳輸資料,滿足 電力二次系統安全防護方案 要求,實現可信資料從高安全區向低安全區的單向傳遞 1 網閘原理 連線建立後,內網側主動向外網側傳送資料,外網側可選擇應答或不應答 或是外網側傳送乙個小於等於4個位元組的請求,內網側以相應的資料進...

實時資料庫Server To Server同步方案

sis側實時資料庫 mis側實時資料庫同步,中間過物理隔離網閘,傳輸資料,滿足 電力二次系統安全防護方案 要求,實現可信資料從高安全區向低安全區的單向傳遞 1 網閘原理 連線建立後,內網側主動向外網側傳送資料,外網側可選擇應答或不應答 或是外網側傳送乙個小於等於4個位元組的請求,內網側以相應的資料進...