ClickHouse使用Docker部署

OLTP和OLAP介紹

基本業務量到達分庫分表量級,則離不開數據大屏、推薦系統、畫像系統等搭建,需要搭建以上系統,則離不開海量數據進行存儲-分析-統計。
而海量數據下 TB、PB級別數據存儲,靠Mysql進行存儲-分析-統計無疑是災難。所以就需要用到使用OLAP數據處理技術。

什么是OLTP

全稱 OnLine Transaction Processing,聯機事務處理系統, 就是對數據的增刪改查等操作。
存儲的是業務數據,來記錄某類業務事件的發生,比如下單、支付、注冊、等等。
典型代表有Mysql、 Oracle等數據庫,對應的網站、系統應用后端數據庫。
針對事務進行操作,對響應時間要求高,面向前臺應用的,應用比較簡單,數據量相對較少,是GB級別的。
面向群體:業務人員

當數據積累到一定的程度,需要對過去發生的事情做一個總結分析時,就需要把過去一段時間內產生的數據拿出來進行統計分析,從中獲取想要的信息,為公司做決策提供支持,這個就是做OLAP了。

什么是OLAP

OnLine Analytical Processing,聯機分析處理系統。

存儲的是歷史數據,對應的風控平臺、BI平臺、數據可視化等系統。

OLAP是數據倉庫系統的主要應用,支持復雜的分析操作,側重決策,并且提供直觀易懂的查詢結果。

典型代表有 Hive、ClickHouse。

針對基于查詢的分析系統,基礎數據來源于生產系統中的操作數據,數據量非常大,常規是TB級別的。

面向群體:分析決策人員。

數據庫里面行存儲和列式存儲

什么是行存儲

傳統的OLTP關系型數據庫都是行存儲。

一行中的數據在存儲介質中以連續存儲形式存在。

適合隨機的增刪改查操作 或者 在行中選取所有屬性的查詢操作,結合索引提升性能。

缺點

查詢的全部記錄的某幾個字段,但由于這些字段在各行數據單元中,而整個行特別大(字段特別多),程序必須不斷讀取每一條的行記錄取對應的字段,使得讀取效率大大降低。
例子:找某個訂單的話,就很方便,訂單的全部信息都能獲取; 但找全部訂單總金額就需要遍歷多個數據。

order_idtotal_amount
110
220
330

什么是列式存儲

存儲結構化數據時,在底層的存儲介質上,數據是以列的方式來組織的。
存儲完若干條記錄的首個字段后,再存儲這些記錄的第二個字段,然后再第三個字段、第四個字段...
查詢時只有涉及到的列會被讀取,而不需要全表掃描,可以顯著減少IO消耗,并降低查詢響應時間。
例子:查詢全部成交額,只需要把訂單金額拿出來即可。

123
102030

總結

描述的是底層存儲介質上,數據的組織形式,哪種組織對應哪種業務需求。
列存儲在聚合、統計等操作性能會優于行存儲。
列存儲將多行記錄的列連續存儲在一起,一列接著一列。
列式存儲是同個數據類型,會進行數據壓縮率更高,更省空間。
列存儲數據更新成本較高,一般適合讀多寫少的場景,適合 OLAP 分析型系統。

列式存儲ClickHouse介紹和應用場景說明

ClickHouse的由來和應用場景

俄羅斯Yandex在2016年開源,使用C++編寫的列式存儲數據庫,近幾年在OLAP領域大范圍應用。

官網:

https://clickhouse.com

GitHub:

https://github.com/ClickHouse/ClickHouse

?阿里云的ClickHouse 文檔:

https://www.aliyun.com/product/clickhouse

分析型數據庫管理系統基準測試

https://benchmark.clickhouse.com/#system=+lik|yL|gQ&type=-&machine=-ca2|gle|6ax|ae-|6ale|3al|gel&cluster_size=-&opensource=-&tuned=+n&metric=hot&queries=-

特點和應用場景

不依賴Hadoop 生態、安裝和維護簡單。
擅長對列的聚合、計數等統計操作性能強勁。
對列存儲和壓縮采用更好的算法,更節省成本。
拓展性強,在生產中經過實戰測試,從單服務器部署到具有數千個節點的集群的線性水平可擴展性。
具有企業級安全功能和故障安全機制,可防止數據因應用程序錯誤和人為錯誤而損壞。
支持主流的大部分SQL語法和函數。
吞吐能力強,官方測試支持,支持多種存儲引擎,滿足多數業務場景。
廣泛應用:互聯網電商、在線教育、金融等領域用,用戶行為數據記錄和分析,搭建數據可視化平臺。

Linux服務器Docker安裝

安裝并運行Docker

yum install docker-io -y

檢查安裝結果

docker info

運行Docker守護進程

systemctl start docker

停止Docker守護進程

systemctl stop docker

重啟Docker守護進程

systemctl restart docker

查看容器

docker ps

停止容器

docker stop 容器id

修改鏡像倉庫,改完重啟docker

vim /etc/docker/daemon.json
{
"debug":true,"experimental":true,
"registry-mirrors":["https://pb5bklzr.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}

查看信息

docker info

Docker部署ClickHouse

鏡像倉庫地址

https://hub.docker.com

安裝命令

docker run -d -e CLICKHOUSE_USER=admin -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=admin --name test_clickhouse --ulimit nofile=262144:262144 \
-p 8123:8123 -p 9000:9000 -p 9009:9009 --privileged=true \
-v /usr/local/clickhouse/log:/var/log/clickhouse-server \
-v /usr/local/clickhouse/data:/var/lib/clickhouse clickhouse/clickhouse-server

默認http端口是8123,tcp端口是9000, 同步端口9009

web可視化界面:http://你的ip:8123/play

命令

查看數據庫:SHOW DATABASES
查看某個庫下面的全部表:SHOW TABLES IN system
系統數據庫是 ClickHouse 存儲有關 ClickHouse 部署的詳細信息的地方
默認數據庫最初為空,用于執行未指定數據庫的命令

數據庫連接工具下載

https://dbeaver.io/download

創建ClickHouse數據庫和表

創建數據庫?

CREATE DATABASE test

創建表

CREATE TABLE clickstream (customer_id String, time_stamp Date, click_event_type String,page_code FixedString(20),  source_id UInt64
) 
ENGINE = MergeTree()
ORDER BY (time_stamp)

說明:
ClickHouse 有自己的數據類型,每個表都必須指定一個Engine引擎屬性來確定要創建的表的類型
引擎決定了數據的存儲方式和存儲位置、支持哪些查詢、對并發的支持。

數據類型說明

String類型替換來自其他數據庫的 VARCHAR、BLOB、CLOB 和其他類似字符串的數據類型。

UInt64是一個 64 位無符號整數。

日期是在 ClickHouse 中存儲日期的幾種方法之一。

如果知道列中所有字符串的精確長度,則使用FixedString( n )數據類型。

插入數據

INSERT INTO clickstream VALUES ('customer1', '2021-10-02', 'add_to_cart', 'home_enter', 568239 ) 

查詢數據

SELECT * FROM clickstream

數據類型和語法說明

數值類型(整形,浮點數,定點數)

整型

固定長度的整型,包括有符號整型或無符號整型 IntX X是位的意思,1Byte字節=8bit位

有符號整型范圍
Int8 — [-128 : 127]

Int16 — [-32768 : 32767]

Int32 — [-2147483648 : 2147483647]

Int64 — [-9223372036854775808 : 9223372036854775807]

Int128 — [-170141183460469231731687303715884105728 : 170141183460469231731687303715884105727]

Int256 — [-57896044618658097711785492504343953926634992332820282019728792003956564819968 : 57896044618658097711785492504343953926634992332820282019728792003956564819967]

無符號整型范圍
UInt8 — [0 : 255]

UInt16 — [0 : 65535]

UInt32 — [0 : 4294967295]

UInt64 — [0 : 18446744073709551615]

UInt128 — [0 : 340282366920938463463374607431768211455]

UInt256 — [0 : 115792089237316195423570985008687907853269984665640564039457584007913129639935]

浮點型(存在精度損失問題)

建議盡可能以整型形式存儲數據
Float32 - mysql里面的float類型
Float64 - mysql里面的double類型

Decimal類型

需要要求更高的精度的數值運算,則需要使用定點數。

一般金額字段、匯率、利率等字段為了保證小數點精度,都使用 Decimal。

Clickhouse提供了Decimal32,Decimal64,Decimal128三種精度的定點數。

用Decimal(P,S)來定義:

P代表精度(Precise),表示總位數(整數部分 + 小數部分)
S代表規模(Scale),表示小數位數
例子:Decimal(10,2) 小數部分2位,整數部分 8位(10-2)

也可以使用Decimal32(S)、Decimal64(S)和Decimal128(S)的方式來表示

字符串類型

UUID

通用唯一標識符(UUID)是由一組32位數的16進制數字所構成,用于標識記錄

61f0c404-5cb3-11e7-907b-a6006ad3dba0

要生成UUID值,ClickHouse提供了 generateuidv4 函數。

如果在插入新記錄時未指定UUID列的值,則UUID值將用零填充

00000000-0000-0000-0000-000000000000

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/95682.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/95682.shtml
英文地址,請注明出處:http://en.pswp.cn/web/95682.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 算數運算練習題

計算數字特征值題目描述 編寫一個程序,接收用戶輸入的兩個整數 a 和 b(a > b > 0),計算并輸出以下結果:a 與 b 的和的平方a 除以 b 的商和余數a 與 b 的平均數(保留 2 位小數)示例請輸入整…

【物種分布模型】R語言物種氣候生態位動態量化與分布特征模擬——氣候生態位動態檢驗、質心轉移可視化、適生區預測等

R語言是一種廣泛用于統計分析和圖形表示的編程語言,強大之處在于可以進行多元數據統計分析,以及豐富的生態環境數據分析的方法,在生態學領域得到廣泛應用。本次教程將通過R語言多個程序包與GIS融合應用,提升物種氣候生態位動態量化…

【算法速成課2 | 題單】背包問題

專欄指路:《算法速成課》 前導: 動態規劃問題中最入門、也最多變的,當屬背包問題。 簡單來說,就是在有限的空間,(花費最小的代價)達成最大的收益。 本文會講一些常見的背包問題(可…

計算機視覺與深度學習 | 深度學習圖像匹配算法在不同紋理復雜度場景下的魯棒性和計算效率評估方法

如何評估深度學習圖像匹配算法在不同紋理復雜度場景下的魯棒性和計算效率? 文章目錄 如何評估深度學習圖像匹配算法在不同紋理復雜度場景下的魯棒性和計算效率? 一、評估框架概述 1.1 核心評估維度 1.2 評估流程 二、紋理復雜度場景分類方法 2.1 紋理特征量化指標 2.2 場景分…

AI 提示詞工程與上下文工程:從入門到深入的系統實踐指南

前言近年來,隨著大語言模型(LLM,Large Language Model)的快速發展,提示詞工程(Prompt Engineering)與上下文工程(Context Engineering)逐漸成為 AI 應用開發中至關重要的…

救火!Linux服務器慢如蝸牛:一套從根源到應用的性能問題診斷全攻略

前言:從“玄學”到“科學” “服務又卡了!” 這是我們每個Linux運維/SRE工程師最不想聽到,卻又最常聽到的一句話。隨之而來的,往往是開發、產品、甚至老板的連環追問。此時,一個經驗不足的工程師可能會立刻登錄服務器&…

BYOFF (Bring Your Own Formatting Function)解析(80)

BYOFF (Bring Your Own Formatting Function)解析(80) 看起來不錯!要注意的是,我們并沒有真正使用任何自定義的特殊標記。其中 “Question”(問題)、“Answer”(答案)、井號(#)以及 EOS 標記,都是分詞器詞匯表中常見的條目。在本節后續內容中,我們將探討自定義特…

秋招|MCU+RTOS技術棧——面試八股文整理3:STM32

目錄 1.單片機啟動流程 2.看門狗 3.最小系統 4.ROM、RAM、Flash 5.EPROM、EEPROM 6.Bootloader與OTA 1.單片機啟動流程 單片機的啟動流程是指從上電或復位開始到應用用戶主程序執行的一系列自動操作過程,不同架構的單片機流程略有差異,但核心邏輯…

在 CentOS 9 上安裝 Docker 的完整指南

1.準備安裝環境(1)禁用防火墻與SELinux[rootlocalhost ~]# systemctl disable --now firewalld.service Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service". Removed "/etc/systemd/system/dbus-org.fedoraproj…

如何實現外語播客的中文同傳?

Bayt播客可以將任何語言的外語播客(英文播客、日文播客、韓文播客等)轉換成中文音頻收聽,實現同聲傳譯。并且還提供中文和原文的雙語字幕。幫助你跨越語言障礙,收聽高質量外語內容 核心功能: 1、所有語言的播客均可轉…

Spring Cloud ------ Gateway

一、什么是網關 經常面試的人肯定知道,在去公司面試時,通常不會直接去面試官那里面試,而是先去前臺進行詢問面試官的所在地,并進行一些相關登記。而網關對于一個微服務項目來說,就類似于一個前臺,打到微服…

Go初級之九:Select 與并發控制

在Go語言中,select語句是處理并發編程的核心工具之一。它讓我們能夠優雅地管理多個通道操作,實現高效的并發控制。 1. Select 語句基礎 1.1 Select 的基本語法 package mainimport ("fmt""time" )func main() {ch1 : make(chan stri…

使用 Acme.sh 獲取和管理免費 SSL 證書

Acme.sh 是一個開源的 Shell 腳本工具,支持從 Let’s Encrypt 等證書頒發機構獲取免費的 SSL/TLS 證書。它支持多種驗證方式,并能自動續期證書,適合個人網站或企業使用。 目標 同時支持,主域名和泛域名 安裝 Acme.sh獲取源碼 git …

docker-compose跨節點部署Elasticsearch 9.X集群

系列文章目錄 提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 例如:第一章 Python 機器學習入門之pandas的使用 提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄 系列文章目錄 前言 一、環境準備 二、遇到的問題與分析 三、配…

【面試場景題】spring應用啟動時出現內存溢出怎么排查

文章目錄一、定位 OOM 類型二、基礎排查:調整 JVM 參數與日志三、堆內存溢出(Heap Space)排查1. 分析堆轉儲文件2. 典型場景與解決四、元空間溢出(Metaspace)排查1. 分析類加載情況2. 典型場景與解決五、直接內存溢出&…

2025年經濟學專業女生必考證書指南:打造差異化競爭力

在數字經濟快速發展的2025年,經濟學專業女生面臨著諸多機遇與挑戰。單純的理論知識已經難以滿足職場需求,企業更看重解決實際問題的能力,特別是將數據轉化為商業洞察的專業技能。各類專業資質認證可以成為系統提升能力的途徑之一,…

【CAN通信】AUTOSAR架構下TC3xx芯片是如何將一幀CAN報文接收上來的

目錄 前言 正文 1.背景介紹 2.CAN報文硬件原理 3.CAN接收軟件實現 3.1. vCan_30_Mcan_Interrupt 3.2. vCan_30_Mcan_RxInterrupt 3.3. vCan_30_Mcan_RxBasicCanHandling 4.總結 前言 在《【CAN通信】AUTOSAR架構下TC3xx芯片是如何將一幀CAN報文發送出去的》一文中我們…

STM32H750 RTC介紹及應用

第十一章 RTC介紹及應用 1. RTC 簡介 RTC(Real-Time Clock,實時時鐘)是 STM32H750VBT6 中用于提供日歷和時鐘功能的低功耗外設,即使主電源關閉,只要 VBAT(備份電源)供電,RTC 仍能持續…

飛網自適應通信:IPv4 與 IPv6 環境下的高效互聯

一、網絡連接的難題與飛網的解決方案 在日常生活中,我們常常會碰到這樣的場景:在家用手機訪問公司電腦里的重要文件,或者遠程連接家里的NAS設備查看照片和視頻。這些操作都需要設備之間建立起安全又穩定的連接。然而,現實中的網絡…

拉格朗日多項式

最近打的幾個比賽沒意思,不是不會就是不會。不過比賽完后看到別人的WP,感覺受益匪淺。先看一個多項式:當輸入Xi時會得到一個Si,要求輸入一定數量的xi 來求[c] 當可以輸入的x個數與c的個數相同時,可以用矩陣直接求解。(…