HBase到底是列式儲存還是行式儲存?

2022-07-07 06:45:13 字數 649 閱讀 8999

邏輯概念上,資料庫表是一種二維的資料結構,具有行和列。但在記憶體、磁碟等物理儲存上,資料一般是需要線性順序組織的。所以為了儲存資料庫表中的資料,有了兩種常見的組織方式:基於行的儲存和基於列的儲存。

基於行的儲存,是將整行資料連續存在一起。在基於行儲存的表中,即使只需要讀取指定列時,也需要先將對應行的資料讀取到記憶體,然後再過濾目標列,這樣會導致過多的磁碟io、記憶體和時間開銷,所以行式儲存比較適用於每次需要訪問完整行的場景。

基於列的儲存,是將列資料連續儲存在一起。因為是將相同型別的資料儲存在了一起,往往壓縮比比較高,從而也會降低磁碟io、記憶體和時間開銷,所以,列式儲存適用於僅在單列或少數列上操作的場景。特別是在大資料時代,資料的列和行都比較多時候,列式儲存優勢會更加明顯。但反過來,列式儲存對於獲取整行的請求效率就沒那麼高了,需要多次io讀取多個列的資料,然後再合併返回。

hbase表資料模型比較特別,也可以簡單理解為有行和列的二維表,只是它的列稱為「列族」,列族下面又可以在資料寫入時指定很多的子列。另外,hbase物理儲存上是將整個列族資料儲存在一起的。所以,如果hbase中的一張表只有乙個列族的話,等於是這個列族包含了這張表的所有列,也就是將表正行的資料連續儲存在了一起,就等於是行式儲存了。再比如,一張表有多個列族,並且每個列族下僅有一列(雖然hbase不建議這麼做),也就是將表的列資料連續儲存在了一起,就等於是列式儲存了。

到底是main還是WinMain

在 裡看到一句 void winapi setlog int itracelevel 一直不明白,知道看到下面的部落格 在vs2008中新建了乙個win32的空工程,準備從0開始,每一行 都自己寫。1 libcmt.lib wincrt0.obj error lnk2019 unresolved e...

到底是寬字元還是多字元?到底是寬位元組還是多位元組?

多位元組 multibyte 寬字元 widechar 非英語系的大部分語言,存在無法用有限的ascii字元表達的問題。由此產生了使用多位元組字元來表示的辦法,比如gb編碼的漢字。但多位元組帶來的乙個顯著不便就是多位元組字元在處理的時候不太方便。比如文字編輯的時候,中英文混排,游標移動 漢字刪除時會...

網頁設計到底是美術?是技術?還是 ?

網頁設計到底是美術?是技術?還是.有人把網頁設計劃分為藝術範疇,可能在美學的角度看的確是這樣的。我不是搞藝術的,作為it人,我們設計出來的網頁應該是什麼樣的呢?我想 絕對不是花裡胡哨的,而是主題明確 畫面簡潔 符合網民習慣的。1 一定要明確主題 有些 太過雜亂,什麼內容都用,力爭 麻雀小而五臟全 的...