本文源碼:GitHub·點這裏 || GitEE·點這裏linux
Yandex開源的數據分析的數據庫,名字叫作ClickHouse,適合流式或批次入庫的時序數據。ClickHouse不該該被用做通用數據庫,而是做爲超高性能的海量數據快速查詢的分佈式實時處理平臺,在數據彙總查詢方面(如GROUP BY),ClickHouse的查詢速度很是快。git
下載倉庫:https://repo.yandex.ru/clickhouse 中文文檔:https://clickhouse.yandex/docs/zh/
(1)列式數據庫github
列式數據庫是以列相關存儲架構進行數據存儲的數據庫,主要適合於批量數據處理和即時查詢。spring
(2)數據壓縮數據庫
在一些列式數據庫管理系統中不是用數據壓縮。可是, 數據壓縮在實現優異的存儲系統中確實起着關鍵的做用。vim
(3)數據的磁盤存儲centos
許多的列式數據庫只能在內存中工做,這種方式會形成比實際更多的設備預算。ClickHouse被設計用於工做在傳統磁盤上的系統,它提供每GB更低的存儲成本。bash
(4)多核心並行處理服務器
大型查詢能夠以很天然的方式在ClickHouse中進行並行化處理,以此來使用當前服務器上可用的全部資源。架構
(5)多服務器分佈式處理
在ClickHouse中,數據能夠保存在不一樣的shard上,每個shard都由一組用於容錯的replica組成,查詢能夠並行的在全部shard上進行處理。
(6)支持SQL和索引
ClickHouse支持基於SQL的查詢語言,該語言大部分狀況下是與SQL標準兼容的。支持的查詢包括GROUPBY,ORDERBY,IN,JOIN以及非相關子查詢。不支持窗口函數和相關子查詢。按照主鍵對數據進行排序,這將幫助ClickHouse以幾十毫秒的低延遲對數據進行特定值查找或範圍查找。
(7)向量引擎
爲了高效的使用CPU,數據不只僅按列存儲,同時還按向量(列的一部分)進行處理。
(8)實時的數據更新
ClickHouse支持在表中定義主鍵。爲了使查詢可以快速在主鍵中進行範圍查找,數據老是以增量的方式有序的存儲在MergeTree中。所以,數據能夠持續不斷高效的寫入到表中,而且寫入的過程當中不會存在任何加鎖的行爲。
一、下載倉庫
curl -s https://packagecloud.io/install/repositories/altinity/clickhouse/script.rpm.sh | sudo os=centos dist=7 bash
二、查看安裝包
sudo yum list 'clickhouse*'
三、安裝服務
sudo yum install -y clickhouse-server clickhouse-client
四、查看安裝列表
sudo yum list installed 'clickhouse*'
控制檯輸出
Installed Packages clickhouse-client.noarch clickhouse-common-static.x86_64 clickhouse-server.noarch
五、查看配置
數據目錄:/var/lib/clickhouse/ 臨時目錄:/var/lib/clickhouse/tmp/ 日誌目錄:/var/log/clickhouse-server HTTP端口:8123 TCP 端口:9000
六、配置訪問權限
config.xml文件中去掉下面配置的註釋。
<listen_host>::</listen_host>
七、啓動服務
/etc/rc.d/init.d/clickhouse-server start
八、查看服務
ps -aux |grep clickhouse
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 中最強大的表引擎當屬MergeTree(合併樹)引擎及該系列(*MergeTree)中的其餘引擎。MergeTree引擎系列的基本理念以下。當你有巨量數據要插入到表中,你要高效地一批批寫入數據片斷,並但願這些數據片斷在後臺按照必定規則合併。相比在插入時不斷修改(重寫)數據進存儲,這種策略會高效不少。
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');
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數據庫極其類似。
GitHub·地址 https://github.com/cicadasmile/linux-system-base GitEE·地址 https://gitee.com/cicadasmile/linux-system-base