秒懂列式數(shù)據(jù)庫和行式數(shù)據(jù)庫
來源:未知 時(shí)間:2022-53-29 瀏覽次數(shù):280次
行式數(shù)據(jù)庫(Row-Based)數(shù)據(jù)按行存儲(chǔ),常見的行式數(shù)據(jù)庫有Mysql,DB2,Oracle,Sql-server等;列數(shù)據(jù)庫(Column-Based)數(shù)據(jù)存儲(chǔ)方式按列存儲(chǔ),常見的列數(shù)據(jù)庫有Hbase,Hive,Clickhouse,Sybase 等。
行存儲(chǔ)是將整行放入連續(xù)的物理位置,就像傳統(tǒng)的記錄存儲(chǔ)或文件存儲(chǔ)方式,列存儲(chǔ)是按列將連續(xù)的某幾列數(shù)據(jù)放入連續(xù)的物理存儲(chǔ)單元中,兩種存儲(chǔ)方法如下圖所示。

行存儲(chǔ)的特點(diǎn)
-
數(shù)據(jù)是按行存儲(chǔ)的
-
沒有索引的查詢會(huì)消耗大量的IO資源
-
建立索引和視圖需要耗費(fèi)大量的時(shí)間和系統(tǒng)資源
-
面對(duì)高并發(fā)的查詢,數(shù)據(jù)庫必須被大量膨脹才能滿足性能需求
列存儲(chǔ)特點(diǎn)
-
數(shù)據(jù)按列存儲(chǔ)—每一列單獨(dú)存放
-
數(shù)據(jù)即是索引,無須另建索引
-
只訪問查詢所涉及到的列(與行數(shù)據(jù)庫不同)--節(jié)省IO開支
-
可以高效壓縮
-
查詢的并發(fā)處理性能高
實(shí)操看列式數(shù)據(jù)庫性能優(yōu)點(diǎn)
姓名(name) |
年齡(age) |
住址(addr) |
生日(bt) |
證件號(hào)(num) |
錄入時(shí)間(intime) |
張三 |
22 |
北京海淀 |
20000101 |
xxx |
20220201 |
李四 |
21 |
北京海淀 |
20011112 |
xxx |
20220201 |
王五 |
19 |
|
20031112 |
xxx |
20220201 |
查詢年滿20歲人員姓名住址(表名為person)select name,addr from person where age>20
列式存儲(chǔ)讀取3列
姓名(name) |
年齡(age) |
住址(addr) |
生日(bt) |
證件號(hào)(num) |
錄入時(shí)間(intime) |
張三 |
22 |
北京海淀 |
20000101 |
xxx |
20220201 |
李四 |
21 |
北京海淀 |
20011112 |
xxx |
20220201 |
王五 |
19 |
北京海淀 |
20031112 |
xxx |
20220201 |
行式存儲(chǔ)讀取所有列
姓名(name) |
年齡(age) |
住址(addr) |
生日(bt) |
證件號(hào)(num) |
錄入時(shí)間(intime) |
張三 |
22 |
北京海淀 |
20000101 |
xxx |
20220201 |
李四 |
21 |
北京海淀 |
20011112 |
xxx |
20220201 |
王五 |
19 |
|
20031112 |
xxx |
20220201 |
應(yīng)用場(chǎng)景
行存儲(chǔ)數(shù)據(jù)庫適用在OLTP(
on-line transaction processing)場(chǎng)景即聯(lián)機(jī)事務(wù)處理,而列數(shù)據(jù)庫適合適用在大數(shù)據(jù)分析OLAP(on-line Analytical processing)聯(lián)機(jī)分析處理,當(dāng)然不管是列數(shù)據(jù)庫還是行數(shù)據(jù)庫起功能或能力都不是萬能的,只是給DBA多提供了一個(gè)可選方案,具體項(xiàng)目執(zhí)行需要架構(gòu)師根據(jù)項(xiàng)目實(shí)際情況選擇最合適的方案。