Sybase IQ與傳統數據庫在數據壓縮方面的典型對比
我們開始審視Sybase IQ時發現,Sybase對其使用列方法的好處所做的論述相當令人信服。然而,通過對數據倉庫不斷增加需求、迅猛增長的來自Web的數據與用戶所帶來的分析和報表(更不必提即將到來的RFID應用),以及客戶的經驗等等,我們現在可以證明,Sybase IQ提供了一個遠比那些傳統的關系型數據庫供應商更優越的方法。下面,就讓我們一起看看Sybase IQ在列存儲、數據壓縮、索引等技術方面的革命性創舉。
列存儲
不同于傳統的關系型數據庫其數據在表中是按行存儲的,Sybase IQ是通過表中的列來存儲與訪問數據的。盡管這種方式很明顯的不太適合于交易環境,在交易環境中,一個事務與一行數據有效對應,而在查詢進程環境中,很顯然,查詢是基于特定的列來選擇的。
列方式所帶來的重要好處之一就是,由于查詢中的選擇規則是通過列來定義的,因此整個數據庫是自動索引化的。事實上,情況并不像上述的這樣簡單,Sybase IQ有各種方法支持基于列的索引,我們將在下面就此討論。
使用列方法的另一個結果就是,Sybase IQ在壓縮方面比傳統的關系型數據庫更加有效(據Sybase所稱,效果可提高5倍之多)。這個原因,無消說,是由于同一列中的所有數據域有相同的數據類型。因此,每一列都可以為優化的效率與檢索進行壓縮。相比來講,基于行的存儲,各個不同的域擁有各不相同的數據類型,這非常適合于交易進程。在這樣的環境中,不斷變換理想的壓縮算法是不可行的,這意味著任何壓縮都將可能是一種最低通用的規則。
基于列的方法的另一個重要優勢是完全基于所有讀出的數據量。無論何時你從傳統的數據庫中訪問數據,需要讀出完整的每一行,而不管你實際所感興趣的是哪些域。實際上,這可能意味著讀300個字節的數據僅僅檢索20個字符的數據。但是,基于列來讀取數據,你僅僅需要讀出你想要了解的數據。當然,讀取一條單獨的記錄時,性能上的不同可以忽略,但是許多查詢需要進行全表掃描。當讀取數百萬行數據時,性能的不同就會非常顯著。
Sybase認為,Sybase IQ的列存儲天然地比普通的ROLAP方法提供更佳的性能,IQ不需要像多數競爭對手或者Sybase Adaptive Server Enterprise(ASE)一樣支持硬件的并行處理。尤其是,Sybase指出,與數據分區相關的問題就是需要支持硬件的并行機制。顯而易見,不論如何進行分區,分區都會帶來很多問題(更不必說額外的維護了),不過,它打開了性能改進的實質性途徑。然而,Sybase進一步闡述道,這僅僅是對基于行的方法所與生俱來的糟糕性能的一種補償機制。
Sybase有很多事實支持它的論斷,但這并不意味著Sybase避免任何形式的數據分區。然而,不同于水平分區,Sybase IQ實施的是垂直分區,也就是說,分區是按照列而不是按照行進行的。該方法的優勢之一是分區從來不會變得不均衡,這是由于每個表中的每列都有相同數量的域。這大大降低了管理分區的維護需求,同時消除了數據庫的重新組織,而在分區變得不均衡從而開始影響性能的時候,數據庫重新組織是必需進行的。
最后,需要注意的是,Sybase IQ并沒有避免使用OLAP。對于那些希望在聚合層次下以一個相對預先定義的方式進行查詢的用戶來講,OLAP具有明顯的優勢;诖,Sybase 支持OLAP功能屬性如排列、百分比、平均。
數據壓縮
傳統的數據庫引擎不能以一種通用的方式進行數據壓縮,主要是由于存在以下三個問題:
1. 按行存儲的數據存儲方式不利于壓縮。這是因為數據(大多為二進制數據)在以這種方式存儲時重復并不多。我們發現,按行存儲的數據,最多能有5%~10%的壓縮比例。
2. 對于許多2KB和4KB的二進制數據頁來說,為壓縮和解壓縮而增加的開銷太大;
3. 在OLTP 環境中,大量讀取和更新混雜在一起。每一次更新需要進行壓縮操作,而讀取只需解壓縮操作,大多數的數據壓縮算法在壓縮時比解壓縮時慢4倍。這一開銷將明顯降低OLTP 數據庫引擎的事務處理效率而使得數據壓縮的代價昂貴到幾乎不能忍受。
在數據倉庫應用中,數據壓縮可以用小得多的代價換取更大好處。其中包括減少對于存儲量的要求;增大數據吞吐量,這相當于減少查詢響應時間。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/