ClickHouse是一個用於線上分析處理(OLAP)的開源列式資料庫

Clickhouse
開發者ClickHouse Inc 及 ClickHouse開源社區
首次發佈2016年6月15日,​8年前​(2016-06-15
目前版本
  • 22.3.2.2(2022年3月17日)[1]
  • 24.1.5.6(2024年2月14日;穩定版本)[2]
編輯維基數據連結
原始碼庫 編輯維基數據連結
程式語言C++
作業系統Linux, macOS
許可協定Apache License 2.0
網站clickhouse.yandex

ClickHouse是由俄羅斯IT公司Yandex為Yandex.Metrica網絡分析服務開發的。[3][4][5][6] ClickHouse允許分析即時更新的數據。該系統以高效能為目標。[7]

這個專案是在2016年6月發佈的Apache許可證下的開源軟件[8]

Yandex.Tank負載測試工具使用ClickHouse。[8] Yandex.Market使用ClickHouse來監控網站的可訪問性和KPI。[9] ClickHouse還在CERNLHCb實驗[10]中實現了對100億個事件的元數據進行儲存和處理,每個事件有超過1000個屬性,Tinkoff Bank使用ClickHouse作為專案的數據儲存。[11]

歷史

Yandex.Metrica以前使用一種經典的方法,即以聚合形式儲存原始數據。[12] 這種方法可以幫助減少儲存的數據量。然而,它有幾個局限性和缺點:

  • 可用報表的列表必須是預先確定的,而且無法生成自訂報表。
  • 聚合之後,數據量可能會增加。當數據由大量鍵進行聚合或使用具有高基數的鍵(如URL)時,就會發生這種情況。
  • 對於具有不同聚合的報表,很難支援邏輯一致性。

另一種方法是儲存未聚合的數據。處理原始數據需要高效能的系統,因為所有計算都是即時進行的。為了解決這個問題,需要一個能夠處理整個互聯網規模的分析數據的列式資料庫。Yandex開始開發自己的列式資料庫。 ClickHouse的第一個原型在2009年出現。2014年底,Yandex.Metrica 2.0版發佈。新版本有一個用於建立自訂報告的介面,並使用ClickHouse儲存和處理數據。

ClickHouse Inc.於2021年9月在加州三藩市成立,以持續發展ClickHouse;最初由Index Ventures、Benchmark Capital和Yandex共投資 5000 萬美元。2021年10月Coatue Management、Altimeter Capital等B輪融資2.5億美元,使公司估值達20億美元。直至2023年ClickHouse Inc員工人數為120人。

功能

Clickhouse DBMS 的主要功能是:[13]

  • 真正的列式資料庫。 沒有任何內容與值一起儲存。例如,支援常數長度值,以避免將它們的長度「 number」儲存在值的旁邊。
  • 線性可延伸性。 可以通過添加伺服器來擴充叢集。
  • 容錯性。 系統是一個分片叢集,其中每個分片都是一組副本。ClickHouse使用非同步多主複製。數據寫入任何可用的副本,然後分發給所有剩餘的副本。Zookeeper用於協調行程,但不涉及查詢處理和執行。
  • 能夠儲存和處理數PB的數據。
  • SQL支援。 Clickhouse支援類似SQL的擴充語言,包括陣列和巢狀數據結構、近似函數和URI函數,以及連接外部鍵值儲存的可用性。
  • 高效能。[14]
    • 使用向量計算。數據不僅由列儲存,而且由向量處理(一部分列)。這種方法可以實現高CPU效能。
    • 支援採樣和近似計算。
    • 可以進行並列和分散式查詢處理(包括JOIN)。
  • 數據壓縮。
  • HDD最佳化。 該系統可以處理不適合主記憶體的數據。
  • 用於資料庫(DB)連接的客戶端。 資料庫連接方式包括控制台客戶端、HTTP API,或者各種程式語言的wrapper(可以用的有PythonPHP[15]NodeJS[16]Perl[17]Ruby[18]R[19]語言)。ClickHouse也可以使用JDBC驅動。[20]
  • 詳細的文件。頁面存檔備份,存於互聯網檔案館

限制

Clickhouse有一些可以被視為缺點的特點:

  • 不支援事務
  • 預設情況下,在執行聚合時,查詢中間狀態必須適合單個伺服器上的RAM。但是,在這種情況下,可以將ClickHouse組態為溢位到磁碟上來解決。
  • 缺乏完整的UPDATE/DELETE實現。

使用場景

Clickhouse是為OLAP查詢而設計的。[13]

  • 它可以處理少量包含大量欄位的表。
  • 查詢可以使用從資料庫中提取的大量行,但只用一小部分欄位。
  • 查詢相對較少(通常每台伺服器大約100個RPS)。
  • 對於簡單的查詢,允許大約50毫秒的延遲。
  • 列值相當小,通常由數字和短字串組成(例如每個URL,60位元組)。
  • 處理單個查詢時需要高吞吐量(每台伺服器每秒數十億行)。
  • 查詢結果主要是過濾或聚合的。
  • 數據更新使用簡單的場景(通常只是批次處理,沒有複雜的事務)。

ClickHouse的一個常見情況是伺服器紀錄檔分析。在將常規數據上載到ClickHouse之後(建議將數據每次1000條以上批次插入),就可以通過即時查詢分析事件或監視服務的指標,如錯誤率、響應時間等。

ClickHouse還可以用作內部分析師的內部數據倉庫。ClickHouse可以儲存來自不同系統的數據(比如Hadoop或某些紀錄檔),分析人員可以使用這些數據構建內部指示板,或者為了業務目的執行即時分析。

基準測試結果

根據開發人員進行的基準測試[14] 對於OLAP查詢,ClickHouse的速度比Hive(基於Hadoop技術棧的DBMS)或MySQL(通用RDBMS)快100倍以上。

商業實現

  • Altinity
  • ClickHouse Inc
  • Firebolt

參考文獻

  1. ^ https://github.com/ClickHouse/ClickHouse/releases/tag/v22.3.2.2-lts; 出版日期: 2022年3月17日; 檢索日期: 2022年3月25日.
  2. ^ Release 24.1.5.6. 2024年2月14日 [2024年2月19日]. 
  3. ^ Usage Statistics and Market Share of Traffic Analysis Tools for Websites, November 2016. w3techs.com. [2016-11-10]. (原始內容存檔於2014-01-21). 
  4. ^ Datanyze. Analytics Market Share Report | Competitor Analysis | Google Analytics, Google Universal Analytics, Yandex Metrica. Datanyze. [2016-11-10]. (原始內容存檔於2016-10-21) (美國英語). 
  5. ^ Wappalyzer. Analytics. wappalyzer.com. 2011-12-30 [2016-11-10]. (原始內容存檔於2017-05-12). 
  6. ^ Analytics - SEOMON.com. seomon.com. [2016-11-10]. (原始內容存檔於2016-10-12). 
  7. ^ ClickHouse: High-Performance Distributed DBMS for Analytics | Percona Live Amsterdam - Open Source Database Conference 2016. www.percona.com. [2016-11-10]. (原始內容存檔於2016-10-21). 
  8. ^ 8.0 8.1 Яндекс открывает ClickHouse. [2016-11-10]. (原始內容存檔於2016-10-21). 
  9. ^ Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса. events.yandex.ru. [2016-11-10]. (原始內容存檔於2017-08-30). 
  10. ^ Yandex — Yandex Launches Search Tool for LHC Events at CERN. Yandex. [2016-11-10]. (原始內容存檔於2016-10-20). 
  11. ^ Сравнение аналитических in-memory баз данных. [2016-11-10]. (原始內容存檔於2016-10-21). 
  12. ^ Эволюция структур данных в Яндекс.Метрике. [2016-11-10]. (原始內容存檔於2016-12-28). 
  13. ^ 13.0 13.1 ClickHouse Guide. clickhouse.yandex. [2016-11-10]. (原始內容存檔於2016-11-11). 
  14. ^ 14.0 14.1 Performance comparison of analytical DBMS. clickhouse.yandex. [2016-11-10]. (原始內容存檔於2016-10-20). 
  15. ^ smi2/phpClickHouse. GitHub. [2016-11-10]. (原始內容存檔於2019-09-24). 
  16. ^ apla/node-clickhouse. GitHub. [2016-11-10]. (原始內容存檔於2019-09-24). 
  17. ^ elcamlost/perl-DBD-ClickHouse. GitHub. [2016-11-10]. (原始內容存檔於2018-06-12). 
  18. ^ archan937/clickhouse. GitHub. [2016-11-10]. (原始內容存檔於2018-06-12). 
  19. ^ hannesmuehleisen/clickhouse-r. GitHub. [2016-11-10]. (原始內容存檔於2019-09-24). 
  20. ^ yandex/clickhouse-jdbc. GitHub. [2016-11-10]. (原始內容存檔於2019-09-24). 

外部連結