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). 

外部連結

編輯