大數據 - ClickHouse

来源:https://www.cnblogs.com/vipsoft/archive/2023/01/05/17011986.html
-Advertisement-
Play Games

https://clickhouse.com/ 概念 ClickHouse 是俄羅斯的 Yandex 於 2016 年開源的列式存儲資料庫(DBMS),使用 C++語言編寫,主要用於線上分析處理查詢(OLAP),能夠使用 SQL 查詢實時生成分析數據報告。 OLAP:一次寫入,多次讀取 ClickH ...


https://clickhouse.com/

概念

ClickHouse 是俄羅斯的 Yandex 於 2016 年開源的列式存儲資料庫(DBMS),使用 C++語言編寫,主要用於線上分析處理查詢(OLAP),能夠使用 SQL 查詢實時生成分析數據報告。
OLAP:一次寫入,多次讀取

ClickHouse憑藉著其出色的分析查詢性能,尤其是在日誌處理上的優勢,非常有效的解決了關係型資料庫在海量數據場景下的分析查詢短板問題

ClickHouse 的特點

Id Name Age
1 張三 18
2 李四 22
3 王五 34

採用行式存儲時,數據在磁碟上的組織結構為:

1 張三 18 2 李四 22 3 王五 34
好處是想查某個人所有的屬性時,可以通過一次磁碟查找加順序讀取就可以。但是當想查所有人的年齡時,需要不停的查找,或者全表掃描才行,遍歷的很多數據都是不需要的。

採用列式存儲時,數據在磁碟上的組織結構為:

1 2 3 張三 李四 王五 18 22 34
這時想查所有人的年齡只需把年齡那一列拿出來就可以了 ➢ **列式儲存的好處:** - 方便聚合,對於列的聚合,計數,求和等統計操作原因優於行式存儲。 - 由於某一列的數據類型都是相同的,針對於數據存儲更容易進行數據壓縮,每一列選擇更優的數據壓縮演算法,大大提高了數據的壓縮比重。 - 由於數據壓縮比更好,一方面節省了磁碟空間,另一方面對於 cache 也有了更大的發揮空間。

DBMS 的功能
幾乎覆蓋了標準 SQL 的大部分語法,包括 DDL 和 DML,以及配套的各種函數,用戶管理及許可權管理,數據的備份與恢復。

多樣化引擎
ClickHouse 和 MySQL 類似,把表級的存儲引擎插件化,根據表的不同需求可以設定
不同的存儲引擎。目前包括合併樹、日誌、介面和其他四大類 20 多種引擎。

高吞吐寫入能力
ClickHouse 採用類 LSM Tree 的結構,數據寫入後定期在後臺 Compaction。通過類 LSM tree 的結構,ClickHouse 在數據導入時全部是順序 append 寫,寫入後數據段不可更改,在後臺 compaction 時也是多個段 merge sort 後順序寫回磁碟。順序寫的特性,充分利用了磁碟的吞吐能力,即便在 HDD 上也有著優異的寫入性能。
官方公開 benchmark 測試顯示能夠達到 50MB-200MB/s 的寫入吞吐能力,按照每行 100Byte 估算,大約相當於 50W-200W 條/s 的寫入速度。

數據分區與線程級並行
ClickHouse 將數據劃分為多個 partition,每個 partition 再進一步劃分為多個 index granularity(索引粒度),然後通過多個 CPU 核心分別處理其中的一部分來實現並行數據處理。在這種設計下,單條 Query 就能利用整機所有 CPU。極致的並行處理能力,極大的降低了查詢延時。
所以,ClickHouse 即使對於大量數據的查詢也能夠化整為零平行處理。但是有一個弊端就是對於單條查詢使用多 cpu,就不利於同時併發多條查詢。所以對於高 QPS(Queries Per Second 每秒查詢率) 的查詢業務,ClickHouse 並不是強項

性能對比
單表查詢
image
關聯查詢
image
結論: ClickHouse 像很多 OLAP 資料庫一樣,單表查詢速度由於關聯查詢,而且ClickHouse 的兩者差距更為明顯。

安裝

https://clickhouse.com/docs/en/install/

[root@VipSoft clickhouse]# pwd
/opt/clickhouse
# 下載安裝程式
[root@VipSoft clickhouse]# curl https://clickhouse.com/ | sh
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2473    0  2473    0     0   1514      0 --:--:--  0:00:01 --:--:--  1515

Will download https://builds.clickhouse.com/master/amd64/clickhouse into clickhouse

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  502M  100  502M    0     0  5262k      0  0:01:37  0:01:37 --:--:-- 6022k

Successfully downloaded the ClickHouse binary, you can run it as:
    ./clickhouse

You can also install it:
    sudo ./clickhouse install
# 設置許可權
[root@VipSoft clickhouse]# chmod -R 775 ./
[root@VipSoft clickhouse]# ll
total 4447904
-rwxrwxr-x 1 root root 2147479552 Dec 30 13:46 clickhouse
[root@VipSoft clickhouse]# ./clickhouse install
Copying ClickHouse binary to /usr/bin/clickhouse.new
Renaming /usr/bin/clickhouse.new to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-server to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-client to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-local to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-benchmark to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-copier to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-obfuscator to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-git-import to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-compressor to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-format to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-extract-from-config to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-keeper to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-keeper-converter to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-disks to /usr/bin/clickhouse.
Creating clickhouse group if it does not exist.
 groupadd -r clickhouse
Creating clickhouse user if it does not exist.
 useradd -r --shell /bin/false --home-dir /nonexistent -g clickhouse clickhouse
Will set ulimits for clickhouse user in /etc/security/limits.d/clickhouse.conf.
Creating config directory /etc/clickhouse-server.
Creating config directory /etc/clickhouse-server/config.d that is used for tweaks of main server configuration.
Creating config directory /etc/clickhouse-server/users.d that is used for tweaks of users configuration.
Data path configuration override is saved to file /etc/clickhouse-server/config.d/data-paths.xml.
Log path configuration override is saved to file /etc/clickhouse-server/config.d/logger.xml.
User directory path configuration override is saved to file /etc/clickhouse-server/config.d/user-directories.xml.
OpenSSL path configuration override is saved to file /etc/clickhouse-server/config.d/openssl.xml.
Creating log directory /var/log/clickhouse-server.
Creating data directory /var/lib/clickhouse.
Creating pid directory /var/run/clickhouse-server.
 chown -R clickhouse:clickhouse '/var/log/clickhouse-server'
 chown -R clickhouse:clickhouse '/var/run/clickhouse-server'
 chown  clickhouse:clickhouse '/var/lib/clickhouse'
Enter password for default user: 【輸入密碼】# 輸入密碼
Password for default user is saved in file /etc/clickhouse-server/users.d/default-password.xml.
Setting capabilities for clickhouse binary. This is optional.
Cannot set 'net_admin' or 'ipc_lock' or 'sys_nice' or 'net_bind_service' capability for clickhouse binary. This is optional. Taskstats accounting will be disabled. To enable taskstats accounting you may add the required capability later manually.
Allow server to accept connections from the network (default is localhost only), [y/N]: y # 允許外面訪問
The choice is saved in file /etc/clickhouse-server/config.d/listen.xml.
 chown -R clickhouse:clickhouse '/etc/clickhouse-server'

ClickHouse has been successfully installed.

Start clickhouse-server with:
 sudo clickhouse start

Start clickhouse-client with:
 clickhouse-client --password
# 啟動服務
[root@VipSoft clickhouse]# clickhouse start
 chown -R clickhouse: '/var/run/clickhouse-server/'
Will run sudo -u 'clickhouse' /usr/bin/clickhouse-server --config-file /etc/clickhouse-server/config.xml --pid-file /var/run/clickhouse-server/clickhouse-server.pid --daemon
Waiting for server to start
Waiting for server to start
Waiting for server to start
Waiting for server to start
Waiting for server to start
Server started

客戶端工具

DBeaver、NineData


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 由於.NET 中是讓垃圾收集器Garbage Collector (簡稱GC)刪除未使用的對象。但是,由於GC只是不時地刪除未使用的對象,因此同時使用的記憶體會增加。更重要的是,對於GC來說,HALCON 的標誌性變數(圖像、區域……)似乎相當“小”,因為它們只包含對(在許多情況下相當大)標誌性對象的 ...
  • 目標:在掃雷中註入一個messagebox彈窗; 方法:打開一個進程(掃雷的進程),申請記憶體,寫入messagebox; 另外啟動一個線程,讓整個代碼跑起來 項目創建 註入代碼 .586 .model flat,stdcall option casemap:none include windows. ...
  • 最近在學習stm32的FSMC,打算整一個LCD的驅動,然後封裝的比正點原子更高層一些,方便後期直接調用 然後在學習的時候碰到了一個小問題,研究了一會之後覺得挺有意思的,所以記下來 //使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=11 A6作為數據命令區分線 ...
  • 背景 客戶收到了SQL專家雲告警郵件,在凌晨2點到3點之間帶有資源等待的會話數暴增,請我們協助分析。 現象 登錄SQL專家雲,進入活動會話的趨勢分析頁面,下鑽到2點鐘一個小時內的數據,看到每分鐘的等待數都在100左右,2點15分時達到200。 轉到活動會話原始數據頁面,看到大量會話都在等待,等待類型 ...
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者:蟹黃瓜子 文章來源:GreatSQL社區投稿 1.Zookeeper概述 Zookeeper對於很多人開始可能都有所耳聞,他的使用場景也很多,可以 ...
  • 摘要: RSGroup是集群隔離方案。 本文分享自華為雲社區《華為FusionInsight MRS HBase的集群隔離——RSGroup》,作者: MissAverage。 一、HBase RSGroup理解 RSGroup是集群隔離方案。 HBase原有的資源隔離:為多個用戶共用同一個HBas ...
  • Sqlserver,Mysql基礎SQL語句 SqlServer 建表 CREATE TABLE [IF NOT EXISTS] 表名 ( 欄位名 列類型 [屬性] , 欄位名 列類型 [屬性] , ....... 欄位名 列類型 [屬性] ) ; CREATE TABLE visits ( vis ...
  • 一:背景 1. 講故事 最近在看 SQL SERVER 2008 查詢性能優化,書中說當一個表創建了聚集索引,那麼表中的行會按照主鍵索引的順序物理排列,這裡有一個關鍵詞叫:物理排列,如果不瞭解底層原理,真的會被忽悠過去,其實仔細想一想不可能實現嚴格的 物理排列 ,那對性能是非常大的損害,本篇我們就從 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...