資料庫之 列式與行式資料庫區別

2021-08-13 15:25:56 字數 1369 閱讀 9760

定義

列式儲存(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,非常適合於在資料倉儲領域發揮作用,比如資料分析 海量儲存和商業智慧型 涉及不經常更新的資料。由於設計上的不同,列式資料庫在並行查詢處理和壓縮上更有優勢。而且資料是以列為單元儲存,完全不用考慮資料建模或者...