ClickHouse 是 Yandex(俄羅斯最大的搜索引擎)開源的一個用於實時數據分析的基於列存儲的數據庫,其處理數據的速度比傳統方法快 100-1000 倍。ClickHouse 的性能超過了目前市場上可比的面向列的 DBMS,每秒鐘每臺服務器每秒處理數億至十億多行和數十千兆字節的數據。html
什麼時候使用 ClickHouse:
用於分析結構良好且不可變的事件或日誌流,建議將每一個此類流放入具備預鏈接維度的單個寬表中。
什麼時候不使用 ClickHouse:
不適合事務性工做負載(OLTP)、高價值的鍵值請求、Blob 或文檔存儲。git
首先咱們瞭解一下 OLAP 場景的特色:github
針對分析類查詢,一般只須要讀取表的一小部分列。在列式數據庫中你能夠只讀取你須要的數據。例如,若是隻須要讀取 100 列中的 5 列,這將幫助你最少減小 20 倍的 I/O 消耗。算法
因爲數據老是打包成批量讀取的,因此壓縮是很是容易的。同時數據按列分別存儲這也更容易壓縮。這進一步下降了 I/O 的體積。因爲 I/O 的下降,這將幫助更多的數據被系統緩存。數據庫
例如,查詢《統計每一個廣告平臺的記錄數量》須要讀取《廣告平臺 ID》這一列,它在未壓縮的狀況下須要 1 個字節進行存儲。若是大部分流量不是來自廣告平臺,那麼這一列至少能夠以十倍的壓縮率被壓縮。當採用快速壓縮算法,它的解壓速度最少在十億字節(未壓縮數據)每秒。換句話說,這個查詢能夠在單個服務器上以每秒大約幾十億行的速度進行處理。這其實是當前實現的速度。緩存
ClickHouse 從 OLAP 場景需求出發,定製開發了一套全新的高效列式存儲引擎服務器
column-oriented 圖片來源見水印相比於行式存儲,列式存儲在分析場景下有着許多優良的特性。網絡
sudo yum install yum-utils sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64 sudo yum install clickhouse-server clickhouse-client
本案例安裝的是單機版本。yum 安裝會自動建立 clickhouse 用戶。
yum 安裝完成以後,配置文件,數據文件日誌目錄設置以下:運維
配置文件目錄:/etc/clickhouse-server/ 數據文件目錄:/var/lib/clickhouse/ 日誌文件目錄:/var/log/clickhouse-server/
clickhouse 相關的各個目錄能夠在配置文件 /etc/clickhouse-serverconfig.xml
中進行修改。異步
啓動
sudo /etc/init.d/clickhouse-server start
鏈接
clickhouse-client -m #默認以 default 用戶登陸
在 /etc/clickhouse-server/users.xml
中能夠設置其餘用戶的訪問權限等。
clickhouse-client [--user=xxx --password=xxx --host=xxx]
localhost :) SELECT :-] C_CITY, :-] S_CITY, :-] toYear(LO_ORDERDATE) AS year, :-] sum(LO_REVENUE) AS revenue :-] FROM lineorder_flat :-] WHERE (C_CITY = 'UNITED KI1' OR C_CITY = 'UNITED KI5') AND (S_CITY = 'UNITED KI1' OR S_CITY = 'UNITED KI5') AND year >= 1992 AND year <= 1997 :-] GROUP BY :-] C_CITY, :-] S_CITY, :-] year :-] ORDER BY :-] year ASC, :-] revenue DESC; SELECT C_CITY, S_CITY, toYear(LO_ORDERDATE) AS year, sum(LO_REVENUE) AS revenue FROM lineorder_flat WHERE ((C_CITY = 'UNITED KI1') OR (C_CITY = 'UNITED KI5')) AND ((S_CITY = 'UNITED KI1') OR (S_CITY = 'UNITED KI5')) AND (year >= 1992) AND (year <= 1997) GROUP BY C_CITY, S_CITY, year ORDER BY year ASC, revenue DESC ┌─C_CITY─────┬─S_CITY─────┬─year─┬────revenue─┐ │ UNITED KI1 │ UNITED KI1 │ 1992 │ 5776096629 │ │ UNITED KI5 │ UNITED KI1 │ 1992 │ 5555883901 │ │ UNITED KI5 │ UNITED KI5 │ 1992 │ 5348705805 │ │ UNITED KI1 │ UNITED KI5 │ 1992 │ 5326870427 │ │ UNITED KI1 │ UNITED KI1 │ 1993 │ 5892974670 │ │ UNITED KI1 │ UNITED KI5 │ 1993 │ 5490859451 │ │ UNITED KI5 │ UNITED KI1 │ 1993 │ 5468354303 │ │ UNITED KI5 │ UNITED KI5 │ 1993 │ 5089909647 │ │ UNITED KI5 │ UNITED KI1 │ 1994 │ 5437315108 │ │ UNITED KI1 │ UNITED KI1 │ 1994 │ 5348775917 │ │ UNITED KI5 │ UNITED KI5 │ 1994 │ 5310936695 │ │ UNITED KI1 │ UNITED KI5 │ 1994 │ 5237461110 │ │ UNITED KI1 │ UNITED KI1 │ 1995 │ 5737551920 │ │ UNITED KI5 │ UNITED KI5 │ 1995 │ 5657584590 │ │ UNITED KI5 │ UNITED KI1 │ 1995 │ 5260093556 │ │ UNITED KI1 │ UNITED KI5 │ 1995 │ 5213763257 │ │ UNITED KI5 │ UNITED KI1 │ 1996 │ 5522325005 │ │ UNITED KI1 │ UNITED KI1 │ 1996 │ 5451244409 │ │ UNITED KI5 │ UNITED KI5 │ 1996 │ 5231759057 │ │ UNITED KI1 │ UNITED KI5 │ 1996 │ 5203962897 │ │ UNITED KI1 │ UNITED KI1 │ 1997 │ 5340760807 │ │ UNITED KI5 │ UNITED KI1 │ 1997 │ 5295685214 │ │ UNITED KI1 │ UNITED KI5 │ 1997 │ 5188428156 │ │ UNITED KI5 │ UNITED KI5 │ 1997 │ 5024634475 │ └────────────┴────────────┴──────┴────────────┘ 24 rows in set. Elapsed: 1.723 sec. Processed 546.67 million rows, 4.46 GB (317.28 million rows/s., 2.59 GB/s.)
掃描 1.7 秒處理 546w 的數據量,每秒處理 317w 行數據,速度是至關快了。
沒有銀彈,各類數據存儲類型仍是要結合具體的場景使用。
圖片來自 新浪 高鵬的 ppt 目前大量使用 ClickHouse 的互聯網公司:
1. 今日頭條內部用 ClickHouse 來作用戶行爲分析,內部一共幾千個 ClickHouse 節點,單集羣最大 1200 節點,總數據量幾十 PB,日增原始數據 300TB 左右。
2. 騰訊內部用 ClickHouse 作遊戲數據分析,而且爲之創建了一整套監控運維體系。
3. 攜程內部從 18 年 7 月份開始接入試用,目前 80% 的業務都跑在 ClickHouse 上。天天數據增量十多億,近百萬次查詢請求。
4. 快手內部也在使用 ClickHouse,存儲總量大約 10PB, 天天新增 200TB, 90% 查詢小於 3S。
5. 在國外,Yandex 內部有數百節點用於作用戶點擊行爲分析,CloudFlare、Spotify 等頭部公司也在使用。固然還有一些沒有關注到的公司也在大量使用,有興趣的朋友能夠積極嘗試。
本文是淺出的介紹了 Clickhouse 的是什麼,有哪些新特性。須要深刻學習仍是要看官方文檔,紙上來得終覺淺,絕知此事要躬行。
關於 ClickHouse 的技術內容,大家還有什麼想知道的嗎?趕忙留言告訴小編吧!