2007年10月28日晚上,我挖了一個坑,那篇“關(guān)于實時數(shù)據(jù)庫接口標(biāo)準(zhǔn)的討論”,只寫了第一部分,到現(xiàn)在還沒有填上。工作忙是一個原因,我只能利用晚上22:00至23:00這一段時間寫一些東西,另外一個更重要的原因是:我還在為該文章備課呢,請大家再等一段時間吧。
今天咱另換一個話題,談?wù)勗趯崟r數(shù)據(jù)庫領(lǐng)域中,有關(guān)數(shù)據(jù)壓縮的一些認(rèn)識誤區(qū)。 我曾答應(yīng)liyaoer123(實時數(shù)據(jù)庫陣地的博主)同學(xué),與他討論一下數(shù)據(jù)壓縮技術(shù)。另外,我經(jīng)常收到一些朋友的來信,他們對實時數(shù)據(jù)庫及數(shù)據(jù)壓縮的認(rèn)識有一些誤區(qū),今天,我便收到三封討論實時數(shù)據(jù)庫的郵件。 數(shù)據(jù)壓縮是實時數(shù)據(jù)庫中一個很重要的概念和技術(shù),只要接觸過實時數(shù)據(jù)庫,都應(yīng)該聽說過數(shù)據(jù)壓縮。同時,很多人對實時數(shù)據(jù)庫中數(shù)據(jù)壓縮存在誤解,我們就一條一條地解說吧。 1.實時數(shù)據(jù)庫中的數(shù)據(jù)壓縮技術(shù)很高深很神秘。 現(xiàn)在的數(shù)據(jù)壓縮理論和技術(shù)已經(jīng)很成熟,大家可以看看我轉(zhuǎn)摘的博文《數(shù)據(jù)壓縮技術(shù)簡史》,該文章淺顯易懂,是一篇很好的關(guān)于數(shù)據(jù)壓縮的科普文章。 在不同的應(yīng)用領(lǐng)域,又可以針對不同的數(shù)據(jù)應(yīng)用特征,引用不同的數(shù)據(jù)壓縮技術(shù),比如,圖形處理領(lǐng)域的JEPG壓縮技術(shù),聲音處理中的MP3壓縮技術(shù)等。在流程工業(yè)行業(yè)中,工業(yè)實時數(shù)據(jù)也有一定的變化規(guī)律,可以針對這些規(guī)律,研究特定的數(shù)據(jù)壓縮算法。 下面是工業(yè)實時數(shù)據(jù)的一些特征:
在工業(yè)應(yīng)用領(lǐng)域中,常用的壓縮算法分為三類:
其中,無損壓縮一般以通用壓縮理論為基礎(chǔ),采取哈佛曼算法等經(jīng)典的壓縮算法;而有損壓縮而更多地考慮了工業(yè)實時數(shù)據(jù)的特征,而采取的一些特殊舍點算法;二級壓縮技術(shù),則是同時利用了這兩種數(shù)據(jù)壓縮技術(shù)。 實時數(shù)據(jù)庫的無損壓縮以通用壓縮理論為基礎(chǔ),隨便找一本大學(xué)教材就能看懂,在此不再多說。 目前比較著名的有損壓縮算法,有PI中使用的旋轉(zhuǎn)門壓縮算法,IH中使用的死區(qū)壓縮算法,以及一些變通壓縮算法(如在旋轉(zhuǎn)門算法基礎(chǔ)上改用二次均方差作為偏差比較,以提高數(shù)據(jù)還原精度),這些算法原理都比較簡單。網(wǎng)上有很多相關(guān)的文章,我在前幾篇文章中提到的變化壓縮算法,是死區(qū)壓縮算法的簡化變種,而liyaoer123同學(xué)在他的博客上帖出了osisoft關(guān)于旋轉(zhuǎn)門壓縮的技術(shù)文章,大家有興趣可以去看看。 總而言之,實時數(shù)據(jù)庫的壓縮算法真的不難理解,只是實時數(shù)據(jù)庫重多技術(shù)中的一種而已。 2.只要搞清楚數(shù)據(jù)壓縮算法,就能編寫好的實時數(shù)據(jù)庫了。 這個問題要從兩方面來分析。 首先要說明,數(shù)據(jù)壓縮只是實時數(shù)據(jù)庫中一個技術(shù)點,這個技術(shù)點相對于實時數(shù)據(jù)庫其它技術(shù)點而言,難度和工作量是非常小的,我在《實時數(shù)據(jù)庫的理論與技術(shù)》中,列出了實時數(shù)據(jù)庫需關(guān)心的技術(shù)點,大家可以看看。只搞清數(shù)據(jù)壓縮算法,是不能編寫良好的實時數(shù)據(jù)庫的。 另一個方面,只從數(shù)據(jù)壓縮這個角度來看,只考慮算法也是不行的。 在實時數(shù)據(jù)庫的數(shù)據(jù)壓縮模塊中,除了要考慮壓縮算法之外,還要考慮以下內(nèi)容:
3.實時數(shù)據(jù)庫中,數(shù)據(jù)壓縮的壓縮率越高越好。 剛才提到,實時數(shù)據(jù)庫中的數(shù)據(jù)壓縮算法都是非常簡單,這是由實時數(shù)據(jù)庫的應(yīng)用特點決定的。 要考慮一個實時數(shù)據(jù)庫的數(shù)據(jù)壓縮技術(shù)技術(shù),需要從以下幾方面考慮:
數(shù)據(jù)壓縮率只是其中一個指標(biāo),實時數(shù)據(jù)庫追求的是綜合性能指標(biāo),不能只看某一項指標(biāo)。 從某個角度而言,在實時數(shù)據(jù)庫的應(yīng)用中,數(shù)據(jù)的壓縮和解壓時間的指標(biāo),要優(yōu)先于數(shù)據(jù)壓縮率指標(biāo)。但是,在設(shè)計良好的系統(tǒng)中,這兩個指標(biāo)之間并不矛盾。 4.無損壓縮比有損壓縮要好 在兩個洋品牌PI和eDNA之間,經(jīng)常會就無損壓縮和有損壓縮哪個更好這個問題產(chǎn)生爭執(zhí)。 基本上,在此爭執(zhí)中,eDNA的無損壓縮處于攻勢,而PI則見招折招處處守勢。總的來說,eDNA的市場宣傳做得很不錯,很多用戶都是這樣評價:eDNA比PI相比有很多優(yōu)點,它采用了無損壓縮技術(shù),還有......,而且,它的價格比PI便宜多了。 客觀地講,無損壓縮有其好處,它在某些方面保證了數(shù)據(jù)的精度,但是,這并不能說,無損壓縮一定比有損壓縮好。 采用無損壓縮算法的實時數(shù)據(jù)庫廠家,不能回避以下兩個問題: 采用無損壓縮算法的壓縮率比采用有損壓縮算法要低得多,針對工業(yè)實時數(shù)據(jù)的特征信息提取的無損壓縮,是不可能達(dá)到10:1的。 采用無損壓縮算法的實時數(shù)據(jù)庫,單機總處理點數(shù)會存在性能瓶頸,以目前主流的計算機而言,采用無損壓縮算法的實時數(shù)據(jù)庫,平均只能處理2萬左右的歷史點。 另外,無損壓縮所宣稱的100%保持?jǐn)?shù)據(jù)不丟失,只是一句話宣傳詞,在計算機上處理工業(yè)實時數(shù)據(jù),本身就存在大量的數(shù)據(jù)信息丟失:
在存在多處無法控制的失真環(huán)節(jié)的情況下,只強調(diào)保存數(shù)據(jù)的完全不失真,是沒有意義的,只是商務(wù)宣傳的需要,只要是數(shù)字化和計算機化處理,所有的數(shù)據(jù)就是近似的處理過程。 有人會說,這也失真、那也失真,還處理個屁呀。這其實是一種處女情結(jié),是在無意義地追求某個特定的指標(biāo)而不考慮系統(tǒng)整體性能。如果實時數(shù)據(jù)庫在采用無損壓縮的同時,還能保證很快的解壓縮速度和較高的壓縮率,當(dāng)然無可厚非,但目前的理論和技術(shù)條件下,這些指標(biāo)是矛盾的。而采取有損壓縮技術(shù),是在不影響整體精度情況下的性能指標(biāo)的綜合平衡。 5.實時數(shù)據(jù)庫中,數(shù)據(jù)壓縮不重要,要不要數(shù)據(jù)壓縮沒關(guān)系。 關(guān)于這一論點,有兩種不同的觀點。 第一種觀點認(rèn)為,現(xiàn)在的計算機硬盤很便宜了,磁盤容量不夠,大不了多買幾塊磁盤。 第二種觀點認(rèn)為,實時數(shù)據(jù)庫的重點是上層功能和應(yīng)用,在工業(yè)應(yīng)用中,數(shù)據(jù)壓縮費力又不討好,還不如將精力放在其它功能上。 這兩種觀點都不正確,實時數(shù)據(jù)庫的市場存在意義,是因為現(xiàn)在的其它數(shù)據(jù)庫產(chǎn)品,不能地處理大量工業(yè)實時和歷史數(shù)據(jù)。這里說不能處理,包括處理速度和磁盤容量。 在我的文章《實時數(shù)據(jù)庫歷史數(shù)據(jù)容量的計算方法》中計算得出,用關(guān)系數(shù)據(jù)庫保存10000個每秒鐘變化一次的雙精度數(shù),同時建立一個索引,保存一年需要磁盤空間為:12922G,而用實時數(shù)據(jù)庫保存,則只需103G,大家可以換算一下,12922G,需要多少塊磁盤? 磁盤容量只是問題的一個方面,另一方面,數(shù)據(jù)的高壓縮率意味著整個系統(tǒng)的數(shù)據(jù)處理速度更快,這體現(xiàn)在三個方面:高壓縮率的數(shù)據(jù),占用磁盤空間小,將數(shù)據(jù)從磁盤讀入內(nèi)存的速度快,網(wǎng)絡(luò)傳輸?shù)乃俣瓤?,?shù)據(jù)在內(nèi)存中占用的空間小。而這三個因素,是實時數(shù)據(jù)庫提高系統(tǒng)整體運行速度很重要的幾個因素。 一個良好的實時數(shù)據(jù)庫,必須要處理好實時壓縮問題,只有處理好數(shù)據(jù)壓縮問題,才能使系統(tǒng)的整體性能達(dá)到某個可用性指標(biāo)。 以下有一個對是否選用實時數(shù)據(jù)庫和數(shù)據(jù)壓縮技術(shù)的簡單判斷:
很多朋友告訴我,他們的系統(tǒng)不采用數(shù)據(jù)壓縮技術(shù),他們也不關(guān)心數(shù)據(jù)壓縮技術(shù),他們認(rèn)為,良好的上層應(yīng)用軟件比數(shù)據(jù)壓縮更重要。我要對他們說:不同的行業(yè),不同的系統(tǒng)規(guī)模,對實時數(shù)據(jù)庫的性能指標(biāo)要求是不一樣的。實時數(shù)據(jù)庫系統(tǒng)是一個綜合性的應(yīng)用系統(tǒng),設(shè)計良好的底層模塊是其它模塊良好運行的基礎(chǔ),數(shù)據(jù)壓縮技術(shù)與其它數(shù)據(jù)庫技術(shù)一起,對整個系統(tǒng)的運行提供了很底層但很重要的環(huán)境,大型實時數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)壓縮技術(shù)是必須考慮的,另一方面,實時數(shù)據(jù)庫中,數(shù)據(jù)壓縮技術(shù)只是實時數(shù)據(jù)庫系統(tǒng)中一個重要的技術(shù)點,但不是全部。 |
|
來自: 昵稱14228556 > 《待分類1》