Linux系統:Centos7下搭建ClickHouse列式存儲數據庫

本文源碼:GitHub·點這裏 || GitEE·點這裏linux

1、ClickHouse簡介

一、基礎簡介

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中。所以,數據能夠持續不斷高效的寫入到表中,而且寫入的過程當中不會存在任何加鎖的行爲。

2、Linux下安裝流程

一、下載倉庫

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

五、查看配置

  • cd /etc/clickhouse-server/
  • vim config.xml
數據目錄:/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

3、基礎操做

一、建表語句

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數據庫極其類似。

4、源代碼地址

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

相關文章
相關標籤/搜索