1. 程式人生 > 其它 >【實時數倉】Day05-ClickHouse

【實時數倉】Day05-ClickHouse

一、ClickHouse入門

1、介紹

是一個開源的列式儲存資料庫(DBMS)

使用C++編寫

用於線上分析查詢(OLAP)

能夠使用SQL查詢實時生成分析資料報告

2、特點

(1)列式儲存

比較:

行式儲存適用於查詢某條記錄的資訊

列式儲存適用於查詢所有人的資訊

好處:

聚合、計數、求和等統計操作優

同列資料型別易選擇更優的壓縮演算法,提高了壓縮比重

節省儲存空間並利於快取

(2)DBMS的功能

標準SQL大部分語法,DDM、DML、函式、使用者管理、許可權管理、資料備份與恢復

(3)引擎多樣化

根據需求可以選擇不同的引擎,例如合併樹、日誌、介面和其他四大類共二十多種引擎。

(4)高吞吐寫入能力

採用類似LSM Tree的結構,資料寫入後語在後臺壓縮

匯入時資料append寫,壓縮時也是順序寫回磁碟

順序寫充分利用了磁碟吞吐能力

能夠達到相當於 50W-200W 條/s 的寫入速度

(5)資料分割槽與執行緒級並行

劃分為多個partition,partition又被分為多個index索引粒度,多個核心各處理一部分實現並行處理

單條查詢就能充分利用所有CPU

但不適合多條查詢,不適用於高qps的查詢業務

二、ClickHouse的安裝

1、準備工作

關閉防火牆

取消開啟檔案數限制

同步操作

安裝依賴

取消SELINUX(偽檔案系統,是一個許可權白名單原則)

2、單機安裝

建立目錄

同步安裝檔案

安裝所有的rpm檔案:sudo rpm -ivh *.rpm |sudo rpm -qa|grep clickhouse

修改配置檔案中的listen_host,讓其他伺服器訪問,並分發配置檔案

啟動server:systemctl start clickhouse-server

關閉開機自啟:systemctl disable clickhouse-server

client連線:clickhouse-client -m

三、資料型別

1、整型

Int8、16、32、64

UInt8、16、32、64

場景:個數、數量、id

2、浮點型

Float32、64

計算時會引起四捨五入誤差

場景:資料值小、不涉及統計運算、精度要求不高

3、布林型

無專門型別,可以使用UInt8,取值為0/1

4、Decimal型別

可以保持精度的有符號浮點數

Decimal32(s)、64、128

s表示小數位數

場景:金額、利率等需要保證小數點精度的場景

5、字串

String:任意長度字串

FixString(N):固定長度字串,小於n會在末尾新增空位元組,較少使用

場景:名稱、文字描述

6、列舉型別

Enum8 和 Enum16

Enum8使用'String' = Int8對描述

例如建立一個列舉Enum8('hello' = 1, 'world' = 2) 型別的列

CREATE TABLE t_enum
(
 x Enum8('hello' = 1, 'world' = 2)
)
ENGINE = TinyLog;

只能儲存hello或world

插入元素:INSERT INTO t_enum VALUES ('hello'), ('world'), ('hello');

轉換整形查詢:SELECT CAST(x, 'Int8') FROM t_enum;

場景:對於狀態欄位是一種空間優化+資料約束

會存在維護成本或資料丟失的問題

7、時間型別

Date:年月日  

Datetime:年月日時分秒

Datetime64:年月日時分秒亞秒,如20:50:10.66

8、陣列Array(T)

不推薦多維陣列

建立方式1-使用 array 函式:SELECT array(1, 2) AS x, toTypeName(x) ;

建立方式2-使用方括號:SELECT [1, 2] AS x, toTypeName(x);

四、表引擎

1、表引擎的概念

建立表時顯式宣告,名稱區分大小寫

決定如何儲存表的資料,包括

儲存方式和位置、在哪寫,在哪讀

如何支援哪些查詢

併發資料訪問

索引的使用

是否支援多執行緒

資料複製引數

2、TinyLog

3、Memory

4、MergeTree

5、ReplacingMergeTree

6、SummingMergeTree

五、SQL操作

六、副本

七、分片叢集

本文來自部落格園,作者:哥們要飛,轉載請註明原文連結:https://www.cnblogs.com/liujinhui/p/15783759.html