定義
列式儲存(column-based)是相對於傳統關係型資料庫的行式儲存(row-based)來說的。簡單來說兩者的區別就是如何組織表。
將表放入儲存系統中有兩種方法,而我們絕大部分是採用行儲存的。行儲存法是將各行放入連續的物理位置,這很像傳統的記錄和檔案系統。列儲存法是將資料按照列儲存到資料庫中,與行儲存類似,下圖是兩種儲存方法的圖形化解釋。
應用行式儲存的資料庫系統稱為行式資料庫,同理應用列式儲存的資料庫系統稱為列式資料庫。隨著列式資料庫的發展,傳統的行式資料庫加入了列式儲存的支援,形成具有兩種儲存方式的資料庫系統。
傳統的關係型資料庫,如oracle、db2、mysql、sql server等採用行式儲存法,當然傳統的關係型資料庫也在不斷發展中。隨著oracle 12c推出了in memory元件,使得oracle資料庫具有了雙模式資料存放方式,從而能夠實現對混合型別應用的支援:傳統的以行形式儲存的資料滿足oltp應用;列形式儲存的資料滿足以查詢為主的olap應用。
新興的hbase、hp vertica、emc greenplum等分布式資料庫採用列式儲存,當然這些資料庫也有對行式儲存的支援比如hp vertica。
隨著傳統關係型資料庫與新興的分布式資料庫不斷的發展,列式儲存與行式儲存會不斷融合,資料庫系統會呈現雙模式資料存放方式,這也是商業競爭的需要。
區別
為啥列儲存可以大幅降低系統的i/o呢?
列式儲存的主要優點之一就是可以大幅降低系統的i/o,尤其是在海量資料查詢時,i/o向來是系統的主要瓶頸之一。通過下面這張圖,相信大家能夠徹底明白這一點。
應用場景
在比較了行式資料庫與列式資料庫之後,我們更關心的是如何根據業務場景需要選擇對應的資料庫系統。
行式更適合oltp,比如傳統的基於增刪改查操作的應用。列式更適合olap,非常適合於在資料倉儲領域發揮作用,比如資料分析、海量儲存和商業智慧型;涉及不經常更新的資料。
由於設計上的不同,列式資料庫在並行查詢處理和壓縮上更有優勢。而且資料是以列為單元儲存,完全不用考慮資料建模或者說建模更簡單了。要查詢計算哪些列上的資料,直接讀取列就行。
最後我們需要務實的指出,沒有萬能的資料庫,列式資料庫也並非萬能,只不過給dba提供了更多的選擇,dba需根據自己的應用場景自行選擇。
行式資料庫與列式資料庫
1.行式資料庫與列式資料庫 行式資料庫和列式資料庫的不同在於物理儲存方式的不同 待考證 列式資料庫 是以列相關 儲存 架構進行資料儲存的 資料庫 主要適合與批量 資料處理 和即席查詢 相對應的是行式資料庫,資料以行相關的 儲存 體系架構進行空間分配,主要適合與小批量的 資料處理 常用於聯機 事務 型...
行式資料庫 VS 列式資料庫
1 行式資料庫 2 列式資料庫 1 行式更適合oltp,查詢乙個記錄的所有列。列式更適合olap,非常適合於在資料倉儲領域發揮作用,比如資料分析 海量儲存和商業智慧型 涉及不經常更新的資料。由於設計上的不同,列式資料庫在並行查詢處理和壓縮上更有優勢。而且資料是以列為單元儲存,完全不用考慮資料建模或者...
列式資料庫和行式資料庫
列式資料庫 是以列相關儲存架構進行資料儲存的資料庫,主要適合於批量資料處理和即時查詢。相對應的是行式資料庫,資料以行相關的儲存體系架構進行空間分配,主要適合於小批量的資料處理,常用於聯機 事務型資料處理。優點 缺點 資料庫以行 列的二維表的形式儲存資料,但是卻以一維字串的方式儲存,例如以下的乙個表 ...