clickhouse使用教程

0x0 背景

近期要做一個數(shù)據(jù)統(tǒng)計功能屯断,公司選擇了clickhouse作為數(shù)據(jù)庫贮喧;下面記錄一下該數(shù)據(jù)庫的特性和使用教程。

0x1 介紹

ClickHouse is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).

clickhouse是一個列式數(shù)據(jù)庫东涡,主要用于數(shù)據(jù)分析隆嗅;
從目前使用看來错忱,特點如下:

  1. 列式存儲查詢效率高
  2. 不支持事務儡率;
  3. 適用于一寫多讀
  4. 支持特殊的修改和刪除語句,sql標準的刪改語句不支持

0x2 安裝教程

1.從官網(wǎng)下載最新的tgz包以清,然后解壓執(zhí)行sh腳本即可儿普,比較簡單:

export LATEST_VERSION=`curl https://api.github.com/repos/ClickHouse/ClickHouse/tags 2>/dev/null | grep -Eo '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n 1`
curl -O https://repo.clickhouse.tech/tgz/clickhouse-common-static-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/clickhouse-common-static-dbg-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/clickhouse-server-$LATEST_VERSION.tgz
curl -O https://repo.clickhouse.tech/tgz/clickhouse-client-$LATEST_VERSION.tgz

tar -xzvf clickhouse-common-static-$LATEST_VERSION.tgz
sudo clickhouse-common-static-$LATEST_VERSION/install/doinst.sh

tar -xzvf clickhouse-common-static-dbg-$LATEST_VERSION.tgz
sudo clickhouse-common-static-dbg-$LATEST_VERSION/install/doinst.sh

tar -xzvf clickhouse-server-$LATEST_VERSION.tgz
sudo clickhouse-server-$LATEST_VERSION/install/doinst.sh
sudo /etc/init.d/clickhouse-server start

tar -xzvf clickhouse-client-$LATEST_VERSION.tgz
sudo clickhouse-client-$LATEST_VERSION/install/doinst.sh

2.啟動clickhouse服務端:

root@ubuntu:/etc/clickhouse-server# clickhouse-server 
Include not found: clickhouse_remote_servers
Include not found: clickhouse_compression
Logging trace to /var/log/clickhouse-server/clickhouse-server.log
Logging errors to /var/log/clickhouse-server/clickhouse-server.err.log
Logging trace to console
2020.04.29 14:26:41.942431 [ 1 ] {} <Trace> Pipe: Pipe capacity is 1.00 MiB
2020.04.29 14:26:41.945559 [ 1 ] {} <Information> : Starting ClickHouse 20.2.1.2183 with revision 54432
2020.04.29 14:26:41.945635 [ 1 ] {} <Information> Application: starting up
2020.04.29 14:26:41.952544 [ 1 ] {} <Debug> Application: Set max number of file descriptors to 1048576 (was 1024).
2020.04.29 14:26:41.952591 [ 1 ] {} <Debug> Application: Initializing DateLUT.
2020.04.29 14:26:41.952600 [ 1 ] {} <Trace> Application: Initialized DateLUT with time zone 'PRC'.
2020.04.29 14:26:41.953286 [ 1 ] {} <Debug> Application: Configuration parameter 'interserver_http_host' doesn't exist or exists and empty. Will use 'localhost' as replica host.
2020.04.29 14:26:41.956136 [ 1 ] {} <Debug> ConfigReloader: Loading config 'users.xml'
Include not found: networks
2020.04.29 14:26:41.957092 [ 1 ] {} <Information> Application: Uncompressed cache size was lowered to 991.13 MiB because the system has low amount of memory
2020.04.29 14:26:41.957443 [ 1 ] {} <Information> Application: Mark cache size was lowered to 991.13 MiB because the system has low amount of memory
......

3.配置允許遠程連接

進入clickhouse配置文件/etc/clickhouse-server/config.xml
<listen_host>::</listen_host>取消注釋;
重啟服務:service clickhouse-server restart

4.啟動clickhouse-client

root@ubuntu:~# clickhouse-client 
ClickHouse client version 20.2.1.2183 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 20.2.1 revision 54432.

localhost :) show databases;

SHOW DATABASES

┌─name────┐
│ default │
│ system  │
│ test    │
└─────────┘

3 rows in set. Elapsed: 0.008 sec. 

localhost :) 

0x3 簡單的demo

create table if not exists test.tb_test
(
    id Int64,
    datetime DateTime,
    content Nullable(String),
    value Nullable(Float64),
    date Date
)
engine = MergeTree                  --使用mergeTree引擎,ch主要引擎
partition by toYYYYMM(datetime)     --按照datetime這個字段的月進行分區(qū)
order by id                         --按照id進行排序
TTL datetime + INTERVAL 3 DAY ;     --三天過期

--修改表中數(shù)據(jù)過期時間掷倔,到期后數(shù)據(jù)會在merge時被刪除
ALTER TABLE test.tb_test
MODIFY TTL datetime + INTERVAL 1 DAY;


--查詢
select * from tb_test order by id;

--刪除分區(qū)眉孩,可用于定時任務刪除舊數(shù)據(jù)
alter table tb_test drop partition '202005';

--插入數(shù)據(jù)
insert into tb_test values (5, '2020-02-29 12:38:37', 'abcde', 12.553, '2020-04-25');

--修改數(shù)據(jù),不推薦使用
alter table tb_test update content = 'hello click' where id=52;

--刪除數(shù)據(jù),不推薦使用
alter table tb_test delete WHERE id=56;

0x4 高級用法

1.求和引擎SummingMergeTree
這種引擎可以自動聚合非主鍵數(shù)字列浪汪,可以用于事件統(tǒng)計

--自動求和聚合表
CREATE TABLE IF NOT EXISTS tb_stat
(
    regionId String,    --門店id
    groupId String,     --統(tǒng)計組id
    in int,             --進客流
    out int,            --出客流
    statDate DateTime   --統(tǒng)計時間
)
ENGINE = SummingMergeTree
partition by (toYYYYMM(statDate), regionId)
ORDER BY (toStartOfHour(statDate), regionId, groupId);

insert into tb_stat values ('1232364', '111',  32, 2,  '2020-03-25 12:56:00');
insert into tb_stat values ('1232364', '111',  34, 44, '2020-03-25 12:21:00');
insert into tb_stat values ('1232364', '111',  54, 12, '2020-03-25 12:20:00');
insert into tb_stat values ('1232364', '222',  45, 11, '2020-03-25 12:13:00');
insert into tb_stat values ('1232364', '222',  32, 33, '2020-03-25 12:44:00');
insert into tb_stat values ('1232364', '222',  12, 23, '2020-03-25 12:22:00');
insert into tb_stat values ('1232364', '333',  54, 54, '2020-03-25 12:11:00');
insert into tb_stat values ('1232364', '333',  22, 74, '2020-03-25 12:55:00');
insert into tb_stat values ('1232364', '333',  12, 15, '2020-03-25 12:34:00');


select toStartOfHour(statDate), regionId, groupId, sum(in), sum(out)
from tb_stat group by toStartOfHour(statDate), regionId, groupId;

數(shù)據(jù)插入后巴柿,大概過1分鐘,在此查詢該表可以發(fā)現(xiàn)死遭,只剩下3調(diào)數(shù)據(jù):

select * from tb_stat;

1232364 111 480 232 2020-03-25 04:56:00
1232364 222 356 268 2020-03-25 04:13:00
1232364 333 352 572 2020-03-25 04:11:00
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末广恢,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呀潭,更是在濱河造成了極大的恐慌钉迷,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钠署,死亡現(xiàn)場離奇詭異糠聪,居然都是意外死亡,警方通過查閱死者的電腦和手機谐鼎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門舰蟆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人该面,你說我怎么就攤上這事夭苗。” “怎么了隔缀?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長傍菇。 經(jīng)常有香客問我猾瘸,道長,這世上最難降的妖魔是什么丢习? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任牵触,我火速辦了婚禮,結(jié)果婚禮上咐低,老公的妹妹穿的比我還像新娘揽思。我一直安慰自己,他們只是感情好见擦,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布钉汗。 她就那樣靜靜地躺著,像睡著了一般鲤屡。 火紅的嫁衣襯著肌膚如雪损痰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天酒来,我揣著相機與錄音卢未,去河邊找鬼。 笑死,一個胖子當著我的面吹牛辽社,可吹牛的內(nèi)容都是我干的伟墙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼滴铅,長吁一口氣:“原來是場噩夢啊……” “哼戳葵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起失息,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤譬淳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后盹兢,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體邻梆,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年绎秒,在試婚紗的時候發(fā)現(xiàn)自己被綠了浦妄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡见芹,死狀恐怖剂娄,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情玄呛,我是刑警寧澤阅懦,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站徘铝,受9級特大地震影響耳胎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惕它,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一怕午、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧淹魄,春花似錦郁惜、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搔体,卻和暖如春恨樟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疚俱。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工劝术, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓养晋,卻偏偏與公主長得像衬吆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子绳泉,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355

推薦閱讀更多精彩內(nèi)容