溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux系統(tǒng):Centos7下搭建ClickHouse列式存儲數(shù)據(jù)庫

發(fā)布時(shí)間:2020-07-25 05:58:36 來源:網(wǎng)絡(luò) 閱讀:360 作者:知了一笑 欄目:系統(tǒng)運(yùn)維

本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里

一、ClickHouse簡介

1、基礎(chǔ)簡介

Yandex開源的數(shù)據(jù)分析的數(shù)據(jù)庫,名字叫做ClickHouse,適合流式或批次入庫的時(shí)序數(shù)據(jù)。ClickHouse不應(yīng)該被用作通用數(shù)據(jù)庫,而是作為超高性能的海量數(shù)據(jù)快速查詢的分布式實(shí)時(shí)處理平臺,在數(shù)據(jù)匯總查詢方面(如GROUP BY),ClickHouse的查詢速度非常快。

下載倉庫:https://repo.yandex.ru/clickhouse
中文文檔:https://clickhouse.yandex/docs/zh/

2、數(shù)據(jù)庫特點(diǎn)

(1)列式數(shù)據(jù)庫

列式數(shù)據(jù)庫是以列相關(guān)存儲架構(gòu)進(jìn)行數(shù)據(jù)存儲的數(shù)據(jù)庫,主要適合于批量數(shù)據(jù)處理和即時(shí)查詢。

(2)數(shù)據(jù)壓縮

在一些列式數(shù)據(jù)庫管理系統(tǒng)中不是用數(shù)據(jù)壓縮。但是, 數(shù)據(jù)壓縮在實(shí)現(xiàn)優(yōu)異的存儲系統(tǒng)中確實(shí)起著關(guān)鍵的作用。

(3)數(shù)據(jù)的磁盤存儲

許多的列式數(shù)據(jù)庫只能在內(nèi)存中工作,這種方式會造成比實(shí)際更多的設(shè)備預(yù)算。ClickHouse被設(shè)計(jì)用于工作在傳統(tǒng)磁盤上的系統(tǒng),它提供每GB更低的存儲成本。

(4)多核心并行處理

大型查詢可以以很自然的方式在ClickHouse中進(jìn)行并行化處理,以此來使用當(dāng)前服務(wù)器上可用的所有資源。

(5)多服務(wù)器分布式處理

在ClickHouse中,數(shù)據(jù)可以保存在不同的shard上,每一個shard都由一組用于容錯的replica組成,查詢可以并行的在所有shard上進(jìn)行處理。

(6)支持SQL和索引

ClickHouse支持基于SQL的查詢語言,該語言大部分情況下是與SQL標(biāo)準(zhǔn)兼容的。支持的查詢包括GROUPBY,ORDERBY,IN,JOIN以及非相關(guān)子查詢。不支持窗口函數(shù)和相關(guān)子查詢。按照主鍵對數(shù)據(jù)進(jìn)行排序,這將幫助ClickHouse以幾十毫秒的低延遲對數(shù)據(jù)進(jìn)行特定值查找或范圍查找。

(7)向量引擎

為了高效的使用CPU,數(shù)據(jù)不僅僅按列存儲,同時(shí)還按向量(列的一部分)進(jìn)行處理。

(8)實(shí)時(shí)的數(shù)據(jù)更新

ClickHouse支持在表中定義主鍵。為了使查詢能夠快速在主鍵中進(jìn)行范圍查找,數(shù)據(jù)總是以增量的方式有序的存儲在MergeTree中。因此,數(shù)據(jù)可以持續(xù)不斷高效的寫入到表中,并且寫入的過程中不會存在任何加鎖的行為。

二、Linux下安裝流程

1、下載倉庫

curl -s 
https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh 
| sudo os=centos dist=7 bash

2、查看安裝包

sudo yum list 'clickhouse*'

3、安裝服務(wù)

sudo yum install -y clickhouse-server clickhouse-client

4、查看安裝列表

sudo yum list installed 'clickhouse*'

控制臺輸出

Installed Packages
clickhouse-client.noarch
clickhouse-common-static.x86_64
clickhouse-server.noarch

5、查看配置

  • cd /etc/clickhouse-server/
  • vim config.xml
數(shù)據(jù)目錄:/var/lib/clickhouse/
臨時(shí)目錄:/var/lib/clickhouse/tmp/
日志目錄:/var/log/clickhouse-server
HTTP端口:8123
TCP 端口:9000

6、配置訪問權(quán)限

config.xml文件中去掉下面配置的注釋。

<listen_host>::</listen_host> 

7、啟動服務(wù)

/etc/rc.d/init.d/clickhouse-server start

8、查看服務(wù)

ps -aux |grep clickhouse

三、基礎(chǔ)操作

1、建表語句

CREATE TABLE cs_user_info (
  `id` UInt64,
  `user_name` String,
  `pass_word` String,
  `phone` String,
  `email` String,
  `create_day` Date DEFAULT CAST(now(),'Date')
) ENGINE = MergeTree(create_day, intHash42(id), 8192)

注意事項(xiàng):官方推薦引擎,MergeTree

Clickhouse 中最強(qiáng)大的表引擎當(dāng)屬M(fèi)ergeTree(合并樹)引擎及該系列(*MergeTree)中的其他引擎。MergeTree引擎系列的基本理念如下。當(dāng)你有巨量數(shù)據(jù)要插入到表中,你要高效地一批批寫入數(shù)據(jù)片段,并希望這些數(shù)據(jù)片段在后臺按照一定規(guī)則合并。相比在插入時(shí)不斷修改(重寫)數(shù)據(jù)進(jìn)存儲,這種策略會高效很多。

2、批量寫入

INSERT INTO cs_user_info 
  (id,user_name,pass_word,phone,email) 
VALUES 
  (1,'cicada','123','13923456789','cicada@com'),
  (2,'smile','234','13922226789','smile@com'),
  (3,'spring','345','13966666789','spring@com');

3、查詢語句

SELECT * FROM cs_user_info ;
SELECT * FROM cs_user_info WHERE user_name='smile' AND pass_word='234';
SELECT * FROM cs_user_info WHERE id IN (1,2);
SELECT * FROM cs_user_info WHERE id=1 OR id=2 OR id=3;

查詢語句和操作MySQL數(shù)據(jù)庫極其相似。

四、源代碼地址

GitHub·地址
https://github.com/cicadasmile/linux-system-base
GitEE·地址
https://gitee.com/cicadasmile/linux-system-base

Linux系統(tǒng):Centos7下搭建ClickHouse列式存儲數(shù)據(jù)庫

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI