簡單介紹一下Clickhouse及其引擎

一、ClickHouse 的優缺點


一、ClickHouse 的優點 ?

1. 極致的查詢性能

  • 列式存儲:只讀取查詢涉及的列,大幅減少 IO。
  • 數據壓縮:常見壓縮率 5~10 倍,減少存儲和帶寬消耗。
  • 向量化執行:按批次(block)處理數據,充分利用 CPU SIMD 指令。
  • 并行查詢:單機多核 + 集群分布式并行。

👉 結果:在 TB~PB 級數據量上,秒級甚至毫秒級返回復雜聚合查詢。


2. 實時寫入 + 即時可查

  • 支持高并發寫入(百萬級/秒),數據寫入后幾乎立即可查詢。
  • 比 Hive、Presto 這類 批處理查詢引擎 要快得多。

👉 適合 實時數據分析、監控、日志查詢


3. 分區、索引、分布式能力

  • 主鍵索引 (Sparse Index):按分區范圍做稀疏索引,快速定位數據。
  • 數據分區/分片 (Sharding & Partitioning):支持海量數據水平擴展。
  • 副本 (Replication):保證高可用和容災。

👉 可以支撐 大規模集群部署


4. 豐富的數據引擎

  • MergeTree 系列:主力 OLAP 存儲。
  • 外部數據源引擎:MySQL、Kafka、HDFS、S3、Postgres、MongoDB 等。
  • Buffer、MaterializedView:支持實時 ETL。

👉 在 冷熱數據分層、與大數據生態結合 方面很靈活。


5. 開源 + 活躍生態

  • Apache 2.0 協議,社區活躍。
  • 已在 Yandex、騰訊、美團、字節跳動等大規模落地。
  • 生態中有 Kafka、Spark、Flink、Airflow 等連接器。

6. 運維成本相對較低

  • 單機就能跑得很好,部署門檻低。
  • 不依賴 Hadoop 生態(相比 Hive/Presto)。
  • 對比 Druid、Kylin,運維復雜度更低。

二、ClickHouse 的缺點 ??

1. 不適合事務場景

  • 沒有完整的 ACID 事務,僅支持有限的 原子性操作 (Atomic engine)
  • 不適合 OLTP(銀行轉賬、電商訂單等強一致性場景)。

👉 它是 OLAP 系統,定位是分析,而不是事務處理。


2. 寫入刪除機制有限

  • 刪除 (DELETE/UPDATE) 操作本質上是 標記刪除,數據會在后臺合并時真正清理。
  • 寫入是 批量塊 (block),小量頻繁寫入效率較差。

👉 適合 append-only 的場景(日志、監控),不適合頻繁更新。


3. 學習曲線

  • 引擎種類多(MergeTree 系列、Log、Buffer…),新手需要理解其差異。
  • SQL 方言與標準 SQL 有些差別,比如 LIMIT BYSAMPLEFINAL 等。

4. 資源消耗

  • 極致性能是通過 CPU、內存換取的

    • 查詢時常常消耗大量內存。
    • 并發查詢太多時可能出現 OOM。
  • 高性能存儲介質(SSD/NVMe)更適合 ClickHouse,否則性能會打折扣。


5. 生態相對不如傳統數據庫

  • BI 工具支持在增強,但相比 MySQL/Postgres 還是稍弱。
  • 機器學習、流處理生態,需要依賴 Spark/Flink 來補充。

6. 集群管理復雜性

  • 雖然單機簡單,但大規模集群下:

    • 表分片、副本、分布式查詢路由,需要良好設計。
    • 運維經驗不足時容易遇到 數據傾斜、分片不均衡 的問題。

三、總結表格

方面優點缺點
性能秒級/毫秒級查詢,列存+壓縮+向量化高并發查詢時內存占用大
寫入高吞吐實時寫入不適合頻繁更新/刪除,小批量寫入低效
事務支持原子表缺乏完整 ACID,不能做 OLTP
架構分布式、分片、副本、高可用集群管理復雜
生態外部引擎豐富,社區活躍BI/ML 生態不如 MySQL/PG 豐富
運維單機簡單,依賴少大規模集群需要專業經驗

📌 一句話總結

ClickHouse = 高性能 OLAP 引擎,適合日志分析、指標監控、用戶行為分析、大數據實時查詢;
不適合 事務處理、頻繁更新刪除、強一致性場景


二、存儲引擎 (Table Engines)


1. 核心概念

在 ClickHouse 里,表引擎 (Table Engine) 決定了表的數據如何存儲、分布、復制、合并以及如何被查詢。

  • 有些引擎是 存儲型(比如 MergeTree),真的把數據落盤。
  • 有些是 視圖型(比如 View),不存儲數據,只做查詢映射。
  • 有些是 外部數據源型(比如 MySQLKafkaHDFS),數據存在別處。

2. 主流存儲引擎類別

(A) MergeTree 系列(最常用、最強大)

這是 ClickHouse 的核心存儲引擎族,支持 索引、分區、TTL、壓縮、并行查詢 等特性。
常見子類:

  • MergeTree:基礎版本。
  • ReplacingMergeTree:支持用指定列替換重復數據。
  • SummingMergeTree:自動對相同 key 的數據做聚合(求和)。
  • AggregatingMergeTree:支持存儲預聚合數據(配合 AggregateFunction)。
  • CollapsingMergeTree:支持“折疊”正負標記的數據(常用于 CDC、日志)。
  • VersionedCollapsingMergeTree:帶版本號的折疊,解決數據順序問題。
  • GraphiteMergeTree:專門為 Graphite 監控數據設計(支持 rollup)。

👉 特點:適合絕大多數 OLAP 場景,是 ClickHouse 的主力。


(B) 日志型引擎(簡單輕量)

不做復雜的合并和索引,性能和功能有限,適合小表、臨時表。

  • Log:簡單的日志表。
  • StripeLog:數據按列分 stripe 存儲。
  • TinyLog:最簡單的存儲形式,寫入文件,幾乎沒有額外功能。

👉 常見于測試、小規模表。


? 內存型引擎

  • Memory:數據全在內存里,重啟會丟失,適合臨時計算。

(D) 外部數據源 / 文件系統引擎

  • File:讀寫本地文件(支持 CSV、TSV、Parquet、ORC 等)。
  • HDFS:讀寫 HDFS 文件。
  • S3:讀寫 AWS S3 或兼容的對象存儲。
  • URL:直接通過 HTTP/HTTPS 訪問遠程文件。
  • MySQL:把 MySQL 表映射為 ClickHouse 表。
  • PostgreSQL:訪問 PostgreSQL 數據。
  • ODBC / JDBC:通過 ODBC/JDBC 訪問外部數據庫。
  • Kafka:從 Kafka 消費數據。
  • RabbitMQ:從 RabbitMQ 讀寫數據。
  • MongoDB:訪問 MongoDB 數據。

👉 適合做 外部數據源接入、ETL、實時數據攝取


(E) 分布式 / 集群引擎

  • Distributed:把表分布到多個 ClickHouse 節點,支持分布式查詢。
  • Dictionary:存儲字典數據(常用于維表 join)。

(F) 特殊用途引擎

  • Null:丟棄所有寫入,查詢時返回空結果(類似 /dev/null)。
  • View:普通視圖,不存儲數據。
  • MaterializedView:物化視圖,存儲查詢結果。
  • LiveView:實時視圖,支持訂閱數據變化。
  • Join:專門存儲用于 JOIN 的數據。
  • Set:存儲一個集合,用于 IN 查詢。
  • Buffer:數據先寫入內存緩沖區,再異步落到目標表。
  • Merge:將多個表合并為一個邏輯表。
  • Dictionary:存儲字典型數據(維表)。

3. 總結

ClickHouse 的引擎大致可以分為幾類:

類別代表引擎主要用途
核心存儲MergeTree 系列高性能 OLAP,分區、索引、壓縮
輕量存儲Log、TinyLog、StripeLog小表、臨時表
內存Memory臨時計算
外部數據File、HDFS、S3、MySQL、Kafka數據交換、ETL、實時導入
分布式Distributed集群查詢
特殊用途Null、View、MaterializedView、Join、Buffer特殊場景

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

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

相關文章

【卷積神經網絡詳解與實例】8——經典CNN之VGG

1 開發背景 VGGNet是牛津大學視覺幾何組(Visual Geometry Group)提出的模型,該模型在2014ImageNet圖像分類與定位挑戰賽 ILSVRC-2014中取得在分類任務第二,定位任務第一的優異成績。其核心貢獻在于系統性地探索了網絡深度對性能的影響,并證明…

【分享】中小學教材課本 PDF 資源獲取指南

很多人都不知道,其實官方提供的中小學教材課本 PDF 文檔是完全免費且正版的,無需使用掃描版,清晰度和質量都非常高。 這些資源就藏在國家中小學智慧教育平臺(basic.smartedu.cn)上。這個平臺涵蓋了從小學到高中的各個…

js趣味游戲 貪吃蛇

以下是關于JavaScript趣味游戲的系統性整理,涵蓋經典案例、開發工具、教程資源及創意方向,助您快速掌握JS游戲開發的核心邏輯:一、經典JS趣味游戲案例貪吃蛇(Snake Game)核心機制:鍵盤控制蛇的移動方向&…

【Redis#11】Redis 在 C++ 客戶端下的安裝使用流程(一條龍服務)

一、安裝使用 --Ubuntu 下啟用 1. 前置依賴 - hiredis hiredis 是一個用 C 語言實現的 Redis 客戶端庫,redis-plus-plus 庫基于 hiredis 實現。在開始之前,請確保已安裝 libhiredis-dev,可以通過以下命令安裝: sudo apt install l…

kibana+elasticsearch console查詢示例

kibana console查詢入口如下 http://localhost:5601/app/dev_tools#/console/shell 1 整體查詢 獲取index為newbook的所有數據 GET newbook/_search 2 通用查詢 獲取index為newbook的數據中,bookname包含“西游”的所有數據。 GET newbook/_search { "query&q…

軟考系統架構設計師之軟件風格篇

一、軟件架構風格-數據流風格 數據-》第1步處理-》數據-》第2步處理-》數據-》第N步處理 【分步處理】 優點: 1、松耦合【高內聚-低耦合】 2、良好的重用性/可維護性; 3、可擴展性【標準接口適配】 4、良好的隱蔽性; 5、支持并行。 缺點 1、交互性較差; 2、復雜性較…

初始QML

由于項目原因,最近要進行qml相關開發,我之前也沒有搞過qml,因此開一個qml系列的專欄,記錄自己關于qml的相關學習新建第一個qml工程按如下圖所示方法新建一個最簡單的qml工程:編譯運行可以看到是一個標題為“hello word…

Coze源碼分析-資源庫-創建知識庫-基礎設施/存儲/安全

6. 基礎設施層 基礎設施層為知識庫創建功能提供底層技術支撐,包括數據存儲、緩存、消息隊列、文檔處理、向量化等核心服務。 6.1 數據存儲服務 6.1.1 MySQL數據庫 文件位置: backend/infra/rdb/mysql.go // MySQLConfig MySQL配置 type MySQLConfig struct {Host …

【iOS】設計模式復習

目錄 觀察者模式 通知機制 基本使用 注冊觀察者 創建一個通知 發送通知 通知與多線程 使用異步發送通知 NSNotificationQueue通知隊列 在子線程中運行觀察者函數 實現原理 named表 nameless表 wildcard表 添加觀察者 發送通知 移除通知? KVO機制 基本使用 …

RK3568 NPU :RKNN-ToolKit2環境搭建

1. 安裝Miniconda3 下載 Linux 64 位 Miniconda 最新版安裝腳本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh安裝 Miniconda bash Miniconda3-latest-Linux-x86_64.sh -u安裝完成后會自動設置環境變量。打開新的終端,發現用戶名前…

Ubuntu 24.04 Server 版系統安裝及配置

Ubuntu 24.04 Server 版安裝及配置 文章目錄Ubuntu 24.04 Server 版安裝及配置一、獲取安裝文件二、虛擬機配置三、安裝界面四、配置網絡五、擴容根分區 一、獲取安裝文件二、虛擬機配置三、安裝界面 選擇English(US)問是否升級內核配置鍵盤手動配置ipv4…

Java 事務失效場景全解析

在 Java 開發中,事務管理是保證數據一致性的核心機制,尤其是在 Spring 框架中,Transactional注解的使用極大簡化了事務配置。然而,在實際開發中,事務常常會因為一些細節問題而失效,導致數據異常。本文將詳細…

【Coze搞錢實戰】14. 抖音直播間自動回復機器人實戰教程:三小時搭建智能客服,互動率提升150%(保姆級無代碼指南)

摘要:抖音直播間高頻問題重復回復、觀眾互動不及時是運營痛點。本文針對新手和進階用戶,提供無代碼的自動回復機器人搭建方案:新手1小時完成基礎配置(Coze+抖音對接),進階用戶通過促銷倒計時、粉絲分層、熱點借勢三大策略提升互動率150%。方案基于某女裝直播間實測數據(…

云計算核心知識梳理

云計算作為新一代信息技術的核心,其體系涵蓋特點、定義、技術演進及分類等多個維度,以下是對相關知識的系統整合與解讀。 一、云計算的核心特點 / 優勢 云計算的優勢圍繞資源利用效率、服務靈活性和管理便捷性展開,具體可拆解為五大核心特性: 按需自助服務:用戶無需人工干…

安卓13_ROM修改定制化-----安卓 13 系統 ROM 定制化與低版本系統的核心區別

安卓系統憑借其全球領先的市場占有率,開放特性為廠商和開發者提供了深度定制的空間,形成了豐富的ROM生態圈。從最初的安卓1.0到最新的安卓15,系統在功能、性能和安全方面不斷迭代升級,同時也為ROM定制帶來了新的機遇與挑戰。特別是從安卓11開始,谷歌對系統架構和安全機制進…

【Java后端】Spring Boot 2.7.x 和 Swagger 3.0.x (springfox 3.x) 的兼容性問題

springfox 在 Spring Boot 2.6 開始就有很多兼容性 bug(主要是 Spring MVC PathPatternParser 的引入),導致在 Spring Boot 2.6/2.7 里經常出現 無法啟動 / 無法訪問 swagger-ui.html 的情況。🔎 問題原因Spring Boot 2.6 開始默認…

Vue3+ts使用oidc-client-ts

配置 OIDC 客戶端 在項目中創建 authOptions 對象,定義 OIDC 認證所需的配置項: export const authOptions {authority: https://xxxxxxxxx/UserCenter, // 認證服務器 URLclient_id: xxxx, // 客戶端 IDredirect_uri: http://localhost:3000/callbac…

從 “數據中轉站“ 到 “邊緣智能中樞“:區域網關的技術突圍與開發范式重構

在物聯網架構中,區域網關長期被視為 "邊緣與云端的橋梁"—— 負責協議轉換、數據轉發、設備接入等基礎功能。但隨著邊緣計算興起與 AI 模型輕量化,區域網關正經歷從 "被動轉發" 到 "主動決策" 的范式躍遷。 本文將從開發視角拆解區域網關的三大…

Django全棧班v1.04 Python基礎語法 20250913 早上

print 函數基本用法 print函數會自加換行符,一個print,會打印一行輸出。 print("第一行") print("第二行") print("第三行")輸出結果:print 輸出多個值 一個print可以同時輸出多個值,這多個值會在一…

面試鴨Java八股之Kafka

Kafka是什么?它的主要應用場景有哪些? Kafka是一種分布式流事件處理平臺,最初由 LinkedIn 開發,現在是 Apache 基金會的一部分。它的核心功能主要包括消息隊列、流處理和數據集成。Kafka以高吞吐量、低延遲、可擴展和高容錯性著稱。 Kafka…