簡介
其設計與執行進程優先考慮查詢性能,其次是完成批量數據更新的速度。而傳統關係型資料庫引擎的設計既考慮線上的事務進程又考慮數據倉庫(而事實上,往往更多的關注事務進程)。
列存儲
IQ以列存儲數據,而不是行——這與其他所有關係型資料庫引擎廣泛使用的存儲方法方向相反。在其他關係型資料庫核心中,資料庫的一張表典型的表示為一條資料庫頁鏈,每一數據頁中有一行或多行數據記錄。在數據倉庫套用中,從查詢性能的觀點出發,這種存儲方式是所有可能的數據存儲方式中最不可取的。在IQ中,每張表是一組相互獨立的頁鏈的集合,每一頁鏈代表表中的一列。所以有100 列的表將有100 條相互獨立的頁鏈,每一列都有一條頁鏈與之對應,而不是象其他資料庫引擎,一張表對應一條頁鏈。列存儲所固有的優越性在於:大多數數據倉庫套用的查詢只關心表中所有列的一個很小的子集,從而可以以很少的磁碟I/O得到查詢結果。現在考慮這樣一個例子,假設我們要得到所有生日在七月份的客戶的名字和電子郵件地址。
在一個典型的OLTP資料庫引擎中,查詢最佳化器將根據返回行的百分比(如1/12,在本例中,假設各月的生日都基本平均)來決定是否值得在該列上使用索引。因此,典型的資料庫引擎對該查詢可能會做全表的掃描。為了對掃描的成本做一估算,我們假設每個客戶的行記錄為3200個位元組,共有1000萬個條記錄。因此,表掃描必須讀取320億個位元組的數據。
IQ資料庫引擎可以唯讀取查詢所需的列。在本例中,有三個相關的列:全名、電子郵件地址和出生日期。假設全名為25個位元組,電子郵件地址為25個位元組,出生日期為4個位元組(日期以二進制做內部編碼)。那么IQ 只需要讀取5400萬個位元組的數據——大約減少了59倍!
數據壓縮
傳統的資料庫引擎不能以一種通用的方式進行數據壓縮,主要是由於存在以下三個問題:
1. 第一個問題是其按行存儲的數據存儲方式不利於壓縮。這是因為數據(大多為二進制數據)在以這種方式存儲時重複並不多。我們發現,按行存儲的數據,最多能有5-10%的壓縮比例;
2. 第二個問題是對於許多的2K 和4K 的二進制數據的頁來說,為壓縮和解壓縮而增加的開銷太大;
3. 第三個問題是在OLTP 環境中,大量讀取和更新混雜在一起。每一次更新需要進行壓縮操作,而讀取只需解壓縮操作,大多數的數據壓縮算法在壓縮時比解壓縮時慢4 倍。這一開銷將明顯降低OLTP 資料庫引擎的事務處理效率而使得數據壓縮的代價昂貴到幾乎不能忍受。
在數據倉庫套用中,數據壓縮可以用小得多的代價換取更大好處。其中包括減少對於存儲量的要求;增大數據吞吐量,這相當於減少查詢回響時間。
Sybase IQ使用了數據壓縮。這是由於數據按列存儲,相鄰的欄位值具有相同的數據類型,其二進制值的範圍通常也要小得多,所以壓縮更容易,壓縮比更高。Sybase IQ 對列存儲的數據通常能得到大於50%的壓縮。更大的壓縮比例,加上大頁面I/O,使得Sybase IQ 在獲得優良的查詢性能的同時,減少了對存儲空間的需求。
優勢
描述了IQ獨特的技術特徵所帶來的一些關鍵的套用效果。
查詢效果—瞬間回響
IQ通過列存儲、革命性的點陣圖索引方法以及智慧型的動態訪問技術實現了快速的查詢回響速度,比傳統的資料庫查詢速度提高10-1000倍。這主要表現在如下幾個方面:
減少磁碟I/O
Sybase IQ通過獨特的列存儲,索引與壓縮技術,大大減少了查詢中的磁碟I/O次數,其傑出的磁碟I/O效果帶來了更快速的查詢反應,更高的吞吐量和更低的成本。 並行列處理IQ支持列向量的並行處理,這樣,在查詢中,大量的列向量將被並行掃描,從而達到顯著降低回響時間的目的。 智慧型最佳化IQ允許在每個列上建立多個索引,IQ查詢最佳化器在不同的使用情況下為查詢選擇不同的索引。 提高Cache 命中率大多數傳統的關係型資料庫執行決策支持類型的查詢時會進行表掃描。表掃描使Cache 命中率降低。列存儲方式使Cache命中率大大提高,查詢回響加快。
IQ 並行結構對多用戶查詢的性能影響
大多數傳統資料庫採用的並行表掃描方法在一個大型SMP上只有一個用戶的情況下,效果是最好的,但在多用戶查詢環境中的性能會大打折扣。原因是現在的大多數SMP 系統只能同時支持一至兩個大型的並行表掃描,如果掃描數量增加,不是CPU 資源不夠,就是耗盡了I/O 匯流排的頻寬。每一個表的掃描同時也使資料庫緩衝完全失效,因為大多數大型數據倉庫套用的表掃描都遠大於物理緩衝區的存儲能力。IQ獨特的並行結構可以在大量的並發查詢情況下提供優秀的查詢性能。
存儲效果—節約存儲成本
智慧型壓縮技術,與精巧的索引結構和列存儲結合,IQ比其他資料庫引擎擁有更好的存儲效果。這將獲得更低的存儲成本與更高的查詢性能(因為系統僅需很少的磁碟I/O讀取或寫入任何給定的資料庫塊)。
在傳統的資料庫中,為提高查詢性能所建的索引占用的磁碟空間往往需要比數據本身需要的磁碟空間多出3-10倍。而Sybase IQ 存儲數據所占用的磁碟空間通常只是原數據檔案的40%-60%,是傳統資料庫所占用空間的幾分之一。
數據載入—更高效率
數據載入,包括向一個現有的數據倉庫中增加數據,其載入效率大大高於傳統的資料庫。這是因為IQ的列存儲、列並行處理與索引技術,為快速批量數據載入時提供了強大的技術保證。
如果在數據載入時考慮索引的增量式載入,大多數傳統的關係型資料庫在數據的增量式載入方面都存在嚴重的問題。這就是說,如果你一次裝入了100GB 的原始數據並在其上創建了索引,再在此基礎上增加100MB 或幾個GB 的數據都會非常非常慢,以至於如果先刪除所有的索引,再裝入增加的數據,然後重新對整個資料庫創建索引反而會快一點。
Sybase IQ 在裝入第二個100MB 或100GB 的時候的速度幾乎與裝入第一批數據一樣快。這就給最終用戶帶來的更大的靈活性。Sybase IQ 使得索引的開銷大大降低,並提供了一個新的開發環境,在這樣的開發環境中,索引的使用可以比過去任何時候更充分。
可擴展性
Sybase IQ的設計允許數據倉庫從基礎開始擴展,從很小擴展到非常巨大的規模。這一點已經完全被驗證,(詳細情況請參考全球最大的數據倉庫——企業數據倉庫參考架構一節)以及基準測試報告。
可擴展性對Sybase IQ而言,舉重若輕,你可以從一個小型的數據倉庫開始,擴展到大型的數據倉庫。也可以從大型開始擴展到超大型的數據倉庫。
大幅降低總擁有成本
正如上面所述,Sybase IQ大大節約了數據存儲成本,而且通過其強大的可擴展性為企業提供了靈活的選擇。
另外,IQ比傳統的資料庫更容易維護,不需要經常的人工調優,簡單的擴展實現,快速的部署時間等等都大幅降低了企業開發數據倉庫的總擁有成本。