ClickHouse 是什么

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

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

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

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

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

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

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

I/O 方面:

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

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

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

CPU 方面:

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

網(wǎng)友評論