ClickHouse 是什么

ClickHouse 是一個(gè)開(kāi)源的面向聯(lián)機(jī)分析處理(OLAP, On-Line Analytical Processing) 的列式存儲(chǔ)數(shù)據(jù)庫(kù)管理系統(tǒng)。

在一個(gè) "常規(guī)" 的行式數(shù)據(jù)庫(kù)管理系統(tǒng)中,數(shù)據(jù)按下面的順序存儲(chǔ)

id |   name   | age
---|----------|---1  | Zhangsan | 182  | GlonHo   | 203  | Lisi     | 22...| ...      | ...

換言之,所有相關(guān)的值在一個(gè)行里面一個(gè)挨一個(gè)存儲(chǔ)。行式存儲(chǔ)的的數(shù)據(jù)庫(kù)管理系統(tǒng)有:MySQL, Postgres, MS SQL Server 等。

在一個(gè)列式存儲(chǔ)數(shù)據(jù)庫(kù)管理系統(tǒng)中,數(shù)據(jù)存儲(chǔ)的方式如下所示

id: 1 2 3 ...name: Zhangsan GlonHo Lisi ...age: 18 20 22 ...

列式存儲(chǔ)的數(shù)據(jù)庫(kù)管理系統(tǒng)更適合于 OLAP 場(chǎng)景(對(duì)于大多數(shù)查詢,至少有 100 倍的處理速度提升)的原因有:

I/O 方面:

  • 對(duì)于一個(gè)分析的查詢,只需要表中少量的列。在一個(gè)列存儲(chǔ)數(shù)據(jù)庫(kù)管理系統(tǒng)中,可以只讀取所需的數(shù)據(jù)。例如,如果只需要從 100 列中讀取 5 列,那么預(yù)期可以減少 20倍 I/O

  • 列式存儲(chǔ)數(shù)據(jù),更易于壓縮,進(jìn)一步減少 I/O

  • 由于減少了 I/O,系統(tǒng)中可以緩存更多符合要求的數(shù)據(jù)

CPU 方面:

執(zhí)行一個(gè)查詢需要處理大量的行,它有助于調(diào)度所有操作對(duì)整個(gè)向量而不是單獨(dú)的行,或?qū)崿F(xiàn)查詢引擎,這樣幾乎沒(méi)有調(diào)度成本,如果不這么做,對(duì)于任意還過(guò)得去的磁盤(pán)子系統(tǒng),查詢解釋器不可避免地分?jǐn)?CPU。

網(wǎng)友評(píng)論