Linux系统:Centos7下搭建ClickHouse列式存储数据库
本文源碼:GitHub·點(diǎn)這里 || GitEE·點(diǎn)這里
一、ClickHouse簡介
1、基礎(chǔ)簡介
Yandex開源的數(shù)據(jù)分析的數(shù)據(jù)庫,名字叫做ClickHouse,適合流式或批次入庫的時序數(shù)據(jù)。ClickHouse不應(yīng)該被用作通用數(shù)據(jù)庫,而是作為超高性能的海量數(shù)據(jù)快速查詢的分布式實時處理平臺,在數(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ù)處理和即時查詢。
(2)數(shù)據(jù)壓縮
在一些列式數(shù)據(jù)庫管理系統(tǒng)中不是用數(shù)據(jù)壓縮。但是, 數(shù)據(jù)壓縮在實現(xiàn)優(yōu)異的存儲系統(tǒng)中確實起著關(guān)鍵的作用。
(3)數(shù)據(jù)的磁盤存儲
許多的列式數(shù)據(jù)庫只能在內(nèi)存中工作,這種方式會造成比實際更多的設(shè)備預(yù)算。ClickHouse被設(shè)計用于工作在傳統(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ù)不僅僅按列存儲,同時還按向量(列的一部分)進(jìn)行處理。
(8)實時的數(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 bash2、查看安裝包
sudo yum list 'clickhouse*'3、安裝服務(wù)
sudo yum install -y clickhouse-server clickhouse-client4、查看安裝列表
sudo yum list installed 'clickhouse*'控制臺輸出
Installed Packages clickhouse-client.noarch clickhouse-common-static.x86_64 clickhouse-server.noarch5、查看配置
- cd /etc/clickhouse-server/
- vim config.xml
6、配置訪問權(quán)限
config.xml文件中去掉下面配置的注釋。
<listen_host>::</listen_host>7、啟動服務(wù)
/etc/rc.d/init.d/clickhouse-server start8、查看服務(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, intHash32(id), 8192)注意事項:官方推薦引擎,MergeTree
Clickhouse 中最強(qiáng)大的表引擎當(dāng)屬M(fèi)ergeTree(合并樹)引擎及該系列(*MergeTree)中的其他引擎。MergeTree引擎系列的基本理念如下。當(dāng)你有巨量數(shù)據(jù)要插入到表中,你要高效地一批批寫入數(shù)據(jù)片段,并希望這些數(shù)據(jù)片段在后臺按照一定規(guī)則合并。相比在插入時不斷修改(重寫)數(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總結(jié)
以上是生活随笔為你收集整理的Linux系统:Centos7下搭建ClickHouse列式存储数据库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Jbpm 流程节点
- 下一篇: 动态表单及动态建表实现原理