ClickHouse

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Clickhouse
File:Clickhouse.png
開發者ClickHouse Inc 及 ClickHouse開源社區
首次發佈2016年6月15日,​10年前​(2016-06-15
目前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    原始碼庫
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    程式語言C++
    引擎
      Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
      作業系統Linux, macOS
      許可協定Apache License 2.0
      網站clickhouse.yandex

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

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

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

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

      歷史[編輯]

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

      • 可用報表的列表必須是預先確定的,而且無法生成自訂報表。
      • 聚合之後,數據量可能會增加。當數據由大量鍵進行聚合或使用具有高基數的鍵(如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 的主要功能是:[11]

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

      限制[編輯]

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

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

      使用場景[編輯]

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

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

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

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

      基準測試結果[編輯]

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

      商業實現[編輯]

      • Altinity
      • ClickHouse Inc
      • Firebolt
      • ByteHouse

      參考文獻[編輯]

      1. ^ Usage Statistics and Market Share of Traffic Analysis Tools for Websites, November 2016. w3techs.com. [2016-11-10]. (原始內容存檔於2014-01-21). 
      2. ^ Datanyze. Analytics Market Share Report | Competitor Analysis | Google Analytics, Google Universal Analytics, Yandex Metrica. Datanyze. [2016-11-10]. (原始內容存檔於2016-10-21) (en-US). 
      3. ^ Wappalyzer. Analytics. wappalyzer.com. 2011-12-30 [2016-11-10]. (原始內容存檔於2017-05-12). 
      4. ^ Analytics - SEOMON.com. seomon.com. [2016-11-10]. (原始內容存檔於2016-10-12). 
      5. ^ ClickHouse: High-Performance Distributed DBMS for Analytics | Percona Live Amsterdam - Open Source Database Conference 2016. www.percona.com. [2016-11-10]. (原始內容存檔於2016-10-21). 
      6. ^ 6.0 6.1 Яндекс открывает ClickHouse. [2016-11-10]. (原始內容存檔於2016-10-21). 
      7. ^ Здоровье Маркета: как мы превращаем логи в графики, Дмитрий Андреев (Яндекс) — События Яндекса. events.yandex.ru. [2016-11-10]. (原始內容存檔於2017-08-30). 
      8. ^ Yandex — Yandex Launches Search Tool for LHC Events at CERN. Yandex. [2016-11-10]. (原始內容存檔於2016-10-20). 
      9. ^ Сравнение аналитических in-memory баз данных. [2016-11-10]. (原始內容存檔於2016-10-21). 
      10. ^ Эволюция структур данных в Яндекс.Метрике. [2016-11-10]. (原始內容存檔於2016-12-28). 
      11. ^ 11.0 11.1 ClickHouse Guide. clickhouse.yandex. [2016-11-10]. (原始內容存檔於2016-11-11). 
      12. ^ 12.0 12.1 Performance comparison of analytical DBMS. clickhouse.yandex. [2016-11-10]. (原始內容存檔於2016-10-20). 
      13. ^ smi2/phpClickHouse. GitHub. [2016-11-10]. (原始內容存檔於2019-09-24). 
      14. ^ apla/node-clickhouse. GitHub. [2016-11-10]. (原始內容存檔於2019-09-24). 
      15. ^ elcamlost/perl-DBD-ClickHouse. GitHub. [2016-11-10]. (原始內容存檔於2018-06-12). 
      16. ^ archan937/clickhouse. GitHub. [2016-11-10]. (原始內容存檔於2018-06-12). 
      17. ^ hannesmuehleisen/clickhouse-r. GitHub. [2016-11-10]. (原始內容存檔於2019-09-24). 
      18. ^ yandex/clickhouse-jdbc. GitHub. [2016-11-10]. (原始內容存檔於2019-09-24). 

      外部連結[編輯]