初識ClickHouse——安裝與入門

前言:

久聞 ClickHouse 大名,一直沒有去詳細瞭解。近期看了下 ClickHouse 相關文檔,決定安裝體驗下。想了解 ClickHouse 的小夥伴可以一起跟着學習哦。本篇文章主要介紹 ClickHouse 安裝方法及基礎知識。

1. ClickHouse 簡介

ClickHouse 是一個用於聯機分析 (OLAP) 的列式數據庫管理系統 (DBMS). 由俄羅斯搜索引擎巨頭 Yandex 開源. 主要用於數據分析領域, 目前國內社區火熱, 各個大廠紛紛跟進大規模用於 OLAP 領域。

一起來看下 ClickHouse 官網怎麼介紹它的一些特性:

  • 快速:ClickHouse會充分利用所有可用的硬件,以儘可能快地處理每個查詢。單個查詢的峯值處理性能超過每秒 2 TB(解壓縮後,僅使用的列)。在分佈式設置中,讀取是在健康副本之間自動平衡的,以避免增加延遲。
  • 容錯:ClickHouse支持多主機異步複製,並且可以跨多個數據中心進行部署。所有節點都相等,這可以避免出現單點故障。單個節點或整個數據中心的停機時間不會影響系統的讀寫可用性。
  • 可伸縮:ClickHouse可以在垂直和水平方向上很好地縮放。 ClickHouse易於調整以在具有數百或數千個節點的羣集上或在單個服務器上,甚至在小型虛擬機上執行。當前,每個單節點安裝的數據量超過數萬億行或數百兆兆字節。
  • 易用:ClickHouse簡單易用,開箱即用。它簡化了所有數據處理:將所有結構化數據吸收到系統中,並且立即可用於構建報告。 SQL允許表達期望的結果,而無需涉及某些DBMS中可以找到的任何自定義非標準API。

2. ClickHouse 安裝教程

ClickHouse 可以在任何具有 x86_64 ,AArch64 或 PowerPC64LE CPU 架構的 Linux ,FreeBSD 或 Mac OS X 上運行。貌似不能在 Windows 系統下安裝,不過 ClickHouse 同樣支持 Docker 部署,Windows 系統可以在 Docker 下安裝 ClickHouse 。

根據官方文檔推薦:Debian 或 Ubuntu 系統可以使用官方預編譯的 deb 軟件包來安裝,CentOS 、RedHat 等Linux發行版可以使用官方預編譯的 rpm 包 來安裝,如果您的操作系統不支持安裝 deb 或 rpm 包,也可以使用 tgz 軟件包或直接源碼編譯安裝。下面我們以 CentOS 系統爲例,以 rpm 方式來安裝下 ClickHouse。

# 查看系統版本
[root@localhost ~]# more /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 

# 檢測當前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

# 添加官方存儲庫
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

# 啓動clickhouse
sudo /etc/init.d/clickhouse-server start

# 進入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 簡單操作

ClickHouse 支持有限的 SQL 操作,SQL 語法和傳統的關係型數據庫有相似之處。下面簡單介紹下 ClickHouse 基礎語法:

# 1.創建數據庫
# 語法:
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.創建表
# 語法:
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是最簡單的表的引擎,用於將數據存儲在磁盤上。常用於小表。

# 3.插入數據
# 示例:
[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 語法和關係型數據庫有相似之處,但還是要摒棄已有的思維來學習 ClickHouse 。特別是數據類型、表引擎及其他特性,這些都是陌生的,學習下來還是有難度的。

參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章