初識(shí)ClickHouse——安裝與入門
前言:?
久聞 ClickHouse 大名,一直沒有去詳細(xì)了解。近期看了下 ClickHouse 相關(guān)文檔,決定安裝體驗(yàn)下。想了解 ClickHouse 的小伙伴可以一起跟著學(xué)習(xí)哦。本篇文章主要介紹 ClickHouse 安裝方法及基礎(chǔ)知識(shí)。
? 1. ClickHouse 簡(jiǎn)介
ClickHouse 是一個(gè)用于聯(lián)機(jī)分析 (OLAP) 的列式數(shù)據(jù)庫管理系統(tǒng) (DBMS). 由俄羅斯搜索引擎巨頭 Yandex 開源. 主要用于數(shù)據(jù)分析領(lǐng)域, 目前國(guó)內(nèi)社區(qū)火熱, 各個(gè)大廠紛紛跟進(jìn)大規(guī)模用于 OLAP 領(lǐng)域。
一起來看下 ClickHouse 官網(wǎng)怎么介紹它的一些特性:
快速:ClickHouse會(huì)充分利用所有可用的硬件,以盡可能快地處理每個(gè)查詢。單個(gè)查詢的峰值處理性能超過每秒 2 TB(解壓縮后,僅使用的列)。在分布式設(shè)置中,讀取是在健康副本之間自動(dòng)平衡的,以避免增加延遲。
容錯(cuò):ClickHouse支持多主機(jī)異步復(fù)制,并且可以跨多個(gè)數(shù)據(jù)中心進(jìn)行部署。所有節(jié)點(diǎn)都相等,這可以避免出現(xiàn)單點(diǎn)故障。單個(gè)節(jié)點(diǎn)或整個(gè)數(shù)據(jù)中心的停機(jī)時(shí)間不會(huì)影響系統(tǒng)的讀寫可用性。
可伸縮:ClickHouse可以在垂直和水平方向上很好地縮放。ClickHouse易于調(diào)整以在具有數(shù)百或數(shù)千個(gè)節(jié)點(diǎn)的群集上或在單個(gè)服務(wù)器上,甚至在小型虛擬機(jī)上執(zhí)行。當(dāng)前,每個(gè)單節(jié)點(diǎn)安裝的數(shù)據(jù)量超過數(shù)萬億行或數(shù)百兆兆字節(jié)。
易用:ClickHouse簡(jiǎn)單易用,開箱即用。它簡(jiǎn)化了所有數(shù)據(jù)處理:將所有結(jié)構(gòu)化數(shù)據(jù)吸收到系統(tǒng)中,并且立即可用于構(gòu)建報(bào)告。SQL允許表達(dá)期望的結(jié)果,而無需涉及某些DBMS中可以找到的任何自定義非標(biāo)準(zhǔn)API。
? 2. ClickHouse 安裝教程
ClickHouse 可以在任何具有 x86_64 ,AArch64 或 PowerPC64LE CPU 架構(gòu)的 Linux ,F(xiàn)reeBSD 或 Mac OS X 上運(yùn)行。貌似不能在 Windows 系統(tǒng)下安裝,不過 ClickHouse 同樣支持 Docker 部署,Windows 系統(tǒng)可以在 Docker 下安裝 ClickHouse 。
根據(jù)官方文檔推薦:Debian 或 Ubuntu 系統(tǒng)可以使用官方預(yù)編譯的 deb 軟件包來安裝,CentOS 、RedHat 等Linux發(fā)行版可以使用官方預(yù)編譯的 rpm 包 來安裝,如果您的操作系統(tǒng)不支持安裝 deb 或 rpm 包,也可以使用 tgz 軟件包或直接源碼編譯安裝。下面我們以 CentOS 系統(tǒng)為例,以 rpm 方式來安裝下 ClickHouse。
#?查看系統(tǒng)版本
[root@localhost?~]#?more?/etc/redhat-release?
CentOS?Linux?release?7.6.1810?(Core)?
#?檢測(cè)當(dāng)前CPU是否支持SSE?4.2
[root@localhost?~]#?grep?-q?sse4_2?/proc/cpuinfo?&&?echo?"SSE?4.2?supported"?||?echo?"SSE?4.2?not?supported"
SSE?4.2?supported
#?添加官方存儲(chǔ)庫
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
#?安裝clickhouse
sudo?yum?install?clickhouse-server?clickhouse-client
#?啟動(dòng)clickhouse
sudo?/etc/init.d/clickhouse-server?start
#?進(jìn)入clickhouse客戶端
root@localhost?~]#?clickhouse-client
ClickHouse?client?version?20.12.5.14?(official?build).
Connecting?to?localhost:9000?as?user?default.
Connected?to?ClickHouse?server?version?20.12.5?revision?54442.
localhost?:)?select?1;
SELECT?1
Query?id:?42f5e589-2f81-44e2-9fb8-de45e682acfc
┌─1─┐
│?1?│
└───┘
1?rows?in?set.?Elapsed:?0.002?sec.?
localhost?:)?select?now();
SELECT?now()
Query?id:?c4c867a9-ae0e-4d6c-bb19-057e96cf6624
┌───────────────now()─┐
│?2021-01-13?10:19:14?│
└─────────────────────┘
1?rows?in?set.?Elapsed:?0.004?sec.?? 3. ClickHouse 簡(jiǎn)單操作
ClickHouse 支持有限的 SQL 操作,SQL 語法和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫有相似之處。下面簡(jiǎn)單介紹下 ClickHouse 基礎(chǔ)語法:
#?1.創(chuàng)建數(shù)據(jù)庫
#?語法:
CREATE?DATABASE?[IF?NOT?EXISTS]?db_name?[ON?CLUSTER?cluster]?[ENGINE?=?engine(...)]
#?示例:
[root@localhost?~]#?clickhouse-client?????
ClickHouse?client?version?20.12.5.14?(official?build).
Connecting?to?localhost:9000?as?user?default.
Connected?to?ClickHouse?server?version?20.12.5?revision?54442.
localhost?:)?create?database?test;
CREATE?DATABASE?test
Query?id:?c17cbf32-ab8c-45a0-8ebb-a7b0bdb88efe
Ok.
0?rows?in?set.?Elapsed:?0.015?sec.?
localhost?:)?use?test;
USE?test
Query?id:?4eeadf20-e8bc-4b84-a953-71cf16e133b6
Ok.
0?rows?in?set.?Elapsed:?0.001?sec.
#?2.創(chuàng)建表
#?語法:
CREATE?TABLE?[IF?NOT?EXISTS]?[db.]table_name?[ON?CLUSTER?cluster]
(
????name1?[type1]?[DEFAULT|MATERIALIZED|ALIAS?expr1]?[compression_codec]?[TTL?expr1],
????name2?[type2]?[DEFAULT|MATERIALIZED|ALIAS?expr2]?[compression_codec]?[TTL?expr2],
????...
)?ENGINE?=?engine
#?示例:
root@localhost?~]#?clickhouse-client
ClickHouse?client?version?20.12.5.14?(official?build).
Connecting?to?localhost:9000?as?user?default.
Connected?to?ClickHouse?server?version?20.12.5?revision?54442.
localhost?:)?use?test;
USE?test
Query?id:?37248a4f-36ec-4ed3-a08a-c345db228c98
Ok.
0?rows?in?set.?Elapsed:?0.001?sec.?
localhost?:)?create?table?t1?(id?Int32,name?String)?engine=TinyLog;
CREATE?TABLE?t1
(
????`id`?Int32,
????`name`?String
)
ENGINE?=?TinyLog
Query?id:?8296c170-72fa-4852-8447-ab548fa3b7b8
Ok.
0?rows?in?set.?Elapsed:?0.230?sec.?
localhost?:)?show?tables;
SHOW?TABLES
Query?id:?7da8d2d5-e4ed-45f1-b96c-4d23924512ba
┌─name─┐
│?t1???│
└──────┘
1?rows?in?set.?Elapsed:?0.007?sec.?
# TinyLog是最簡(jiǎn)單的表的引擎,用于將數(shù)據(jù)存儲(chǔ)在磁盤上。常用于小表。
#?3.插入數(shù)據(jù)
#?示例:
[root@localhost?~]#?clickhouse-client
ClickHouse?client?version?20.12.5.14?(official?build).
Connecting?to?localhost:9000?as?user?default.
Connected?to?ClickHouse?server?version?20.12.5?revision?54442.
localhost?:)?use?test;
USE?test
Query?id:?71a1de2a-17fe-4a0b-b9b6-7e934016892e
Ok.
0?rows?in?set.?Elapsed:?0.001?sec.?
localhost?:)?insert?into?t1?(id,?name)?values?(1,?'abc'),?(2,?'bbbb'),(3,'sdfg');
INSERT?INTO?t1?(id,?name)?VALUES
Query?id:?d4982851-8b52-4158-949f-fa94cd7d8ff3
Ok.
3?rows?in?set.?Elapsed:?0.002?sec.?
localhost?:)?select?*?from?t1;
SELECT?*
FROM?t1
Query?id:?b73f366c-702e-4bda-b519-cb087754bbad
┌─id─┬─name─┐
│??1?│?abc??│
│??2?│?bbbb?│
│??3?│?sdfg?│
└────┴──────┘
3?rows?in?set.?Elapsed:?0.002?sec.?雖然 SQL 語法和關(guān)系型數(shù)據(jù)庫有相似之處,但還是要摒棄已有的思維來學(xué)習(xí) ClickHouse 。特別是數(shù)據(jù)類型、表引擎及其他特性,這些都是陌生的,學(xué)習(xí)下來還是有難度的。
參考:?
https://clickhouse.tech/docs/zh/
https://www.cnblogs.com/zhoujinyi/p/12625655.html
推薦閱讀
(點(diǎn)擊標(biāo)題可跳轉(zhuǎn)閱讀)
