热门问题
时间线
聊天
视角

列式資料庫

来自维基百科,自由的百科全书

Remove ads

直欄式儲存Column-oriented DBMS)是以欄相關儲存架構進行資料儲存的資料庫,主要適合於批次資料處理和即時查詢。相對應的是列式儲存,資料以列相關的儲存體系架構進行空間分配,主要適合於小批次的資料處理,常用於連線事務型資料處理。

描述

資料庫以列、欄的二維表的形式儲存資料,但是卻以一維字串的方式儲存,如下表:

更多資訊 RowId, EmpId ...

這個簡單的表包括員工編號(EmpId)、姓名欄位(Lastname and Firstname)及工資(Salary).

這個表儲存在電腦的主記憶體(RAM)和儲存(硬碟)中。雖然主記憶體和硬碟在機制上不同,電腦的作業系統是以同樣的方式儲存的。資料庫必須把這個二維表儲存在一系列一維的「位元組」中,由作業系統寫到主記憶體或硬碟中。

直欄式儲存把一欄中的資料值串在一起儲存起來,然後再儲存下一欄的資料,以此類推。

10:001,12:002,11:003,22:004;
Smith:001,Jones:002,Johnson:003,Jones:004;
Joe:001,Mary:002,Cathy:003,Bob:004;
40000:001,50000:002,44000:003,55000:004; 

列式儲存把一列中的資料值串在一起儲存起來,然後再儲存下一列的資料,以此類推。

001:10,Smith,Joe,40000;
002:12,Jones,Mary,50000;
003:11,Johnson,Cathy,44000;
004:22,Jones,Bob,55000;

這只是一個簡化的說法。此外,劃分英語Partition (database)索引、快取機制、視圖、OLAP立方英語OLAP cube,以及諸如預寫式紀錄檔多版本並行控制此類的事務系統,都在現實的應用環境中發揮作用。一般來說,側重於連線事務處理 (OLTP) 的系統更適用列式儲存,而側重於連線分析處理的系統就必須在列式儲存和直欄式儲存中找到適當得平衡。

Remove ads

特點

因為硬碟定址時間相較於電腦上其他部件的執行速度來說不是一般的慢,所以常用相同工作負載下的硬碟訪問效能來比較列式儲存和直欄式儲存。通常,順序讀取資料要比隨機訪問更快[1]。而且,硬碟定址時間的提升比起CPU速度的進步要慢得多 (參看 摩爾定律),在使用硬碟作為儲存媒介的系統上這種情況很可能還會持續一段時間。下面簡單羅列了一些選擇列式儲存還是直欄式儲存的權衡依據。當然,如果能夠把資料全放在主記憶體中,那麼使用主記憶體資料庫效能會更好。

  1. 在只需要根據某幾行來聚合資料的時候,按行的資料組織方式更有效。因為這樣只需要讀取一部分資料,要比讀取全部資料更快。
  2. 當只需要修改某一行值的時候,按行的資料組織方式更有效。因為可以直接找到某行資料並修改,而與列中的其他行無關。
  3. 當需要某列的多行資料的時候,按列的資料組織方式更有效。當列中資料不是太多的情況下一次硬碟定址就可以獲得該列的所有資料。
  4. 在新增列資料的時候,如果各行都有值,那麼按列的資料組織方式會更有效,因為只需要一次硬碟定址就可以寫入整列的全部資料。

在實際應用中,面向列的資料儲存架構,更適用於OLTP-頻繁互動事務的場景。面向行的資料儲存架構,更適用於OLAP-(如資料倉儲)這樣在海量資料(可能達到 terabyte規模)中進行有限複雜查詢的場景。

Remove ads

實現

自由和開源軟體

更多資訊 資料庫名字, 實現語言 ...
Remove ads

平台即服務(PaaS)

專有軟體

專有的直欄式儲存的代表包括:kdb+SAP HANASybase IQ英語SAP IQSAND CDBMS英語SAND CDBMSAster Data Systems英語Aster Data Systems等。

參見

參照

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads