一、前言
現在數據庫的種類也是特別的多,大致的類別包括:
- 關系型數據庫( MySQL、Oracle、PostgreSQL)。
- 非關系型數據庫(redis、MongoDB、Cassandra、Neo4j)。
- 全文搜索引擎和分布式文檔存儲系統(Elasticsearch )。
- 列式數據庫(ClickHouse)。
每種都在各自的領域表現出色,但當涉及到大規模數據分析和復雜查詢時,ClickHouse 出現在了舞臺上。
ClickHouse 使用列式存儲,這意味著它可以高效地執行聚合、過濾和排序操作。
「面試經常問到大寬表查詢聚合怎么辦,這不是解決方案來了嘛?。 ?/p>
今天我們就一起來深入了解一下ClickHouse !看的人多的話,下期出實戰哈!
二、ClickHouse簡介
ClickHouse
是一款由俄羅斯搜索引擎公司 Yandex 開發的開源列式數據庫管理系統(DBMS)。發布于2016年,是使用 C++ 編程語言開發的。它的設計目標是用于高性能的大規模數據分析和查詢,類似SQL語法降低開發和學習成本。
「ClickHouse 是用于實時應用程序和分析的速度最快、資源效率最高的開源數據庫。」
「Github的start數量已經:30.6k」
官網地址:https://clickhouse.com/
三、OLAP
簡介
說起列式數據庫,就不得不說OLAP,列式型數據庫天然適合OLAP場景,下面我們一起了解一下什么是OLAP!
OLAP(聯機分析處理)是一種強大的數據處理分析方法,特別適用于需要深入探索大量多維數據的應用場景,如業務智能、數據倉庫、銷售分析、財務報告等。OLAP 技術允許用戶從不同的角度、維度和層次來查看和分析數據,以發現潛在的關聯、趨勢和模式,從而更好地做出決策。
場景特性
- 表很“寬”,這意味著它們包含大量列。
- 數據集很大,處理單個查詢時查詢需要高吞吐量(每臺服務器每秒高達數十億行)。
- 列值相當?。簲底趾投套址ɡ?,每個 URL 60 字節)。
- 查詢提取大量行,但只提取一小部分列。
- 對于簡單查詢,允許 50 毫秒左右的延遲。
- 每個查詢有一張大表;除了一張大表外,所有表都很小。
- 查詢結果明顯小于源數據。換句話說,數據經過過濾或聚合,因此結果適合單個服務器的 RAM。
- 查詢相對較少(通常每臺服務器每秒數百個查詢或更少)。
- 插入發生在相當大的批次(> 1000 行)中,而不是單行。
- 事務不是必須的。
為什么適合OLAP
面向列的數據庫更適合 OLAP 場景:它們處理大多數查詢的速度至少快 100 倍。下面詳細解釋了原因,但事實更容易直觀地展示:
制作了一個動態圖片能夠直觀的看到比行式數據庫效率高很多!
四、業務場景
我們單獨講業務場景的話有點單調,我們一般喜歡拿它和Elasticsearch 進行比較!
ClickHouse 和 Elasticsearch 都是用于數據存儲和查詢的強大工具,但它們在業務場景和使用方面有一些不同之處。
以下是 ClickHouse 和 Elasticsearch 的業務場景對比:
「ClickHouse:」
- 數據倉庫和大規模數據分析:ClickHouse 是一個出色的大規模數據分析工具,特別適用于存儲和查詢歷史數據。它支持復雜的 SQL 查詢,可以執行聚合、過濾、排序等操作,是構建數據倉庫的理想選擇。
- 時序數據分析:ClickHouse 的列式存儲結構和高性能使其非常適合處理時序數據,如傳感器數據、監控數據、日志數據等。
- 報表生成:如果你需要生成復雜的報表和分析結果,ClickHouse 可以提供高性能的數據檢索和處理能力。
- 數據壓縮和存儲優化:ClickHouse 使用快速壓縮算法,可以大幅減小存儲空間占用,降低硬件成本。
- 復雜查詢:ClickHouse 支持復雜的查詢和聚合操作,適用于需要深入分析數據的場景。
「Elasticsearch:」
- 全文搜索和文本分析:Elasticsearch 是一個出色的全文搜索引擎,專注于文本數據的高級搜索、分析和相關性排序。它通常用于構建搜索引擎、日志分析和全文搜索應用。
- 實時數據分析:Elasticsearch 支持實時數據分析,可以實時監控、查詢和可視化數據。它在監控、日志分析和實時數據倉庫等場景中表現出色。
- 數據探索:Elasticsearch 提供了靈活的數據探索能力,用戶可以通過自由組合查詢條件來探索數據。
- 非結構化數據:Elasticsearch 適用于非結構化或半結構化數據,如日志、社交媒體數據、文檔等。
- 數據可視化:結合 Kibana 工具,Elasticsearch 可以用于創建交互式數據可視化儀表板。
- 高并發查詢:相對于ClickHouse 更適合高并發下的查詢。
五、拓展
當然我們也有列式存儲,字節在 ClickHouse 架構基礎上進行了升級,于 2020 年在內部啟動了 ByConity 項目,并于 2023 年 1 月發布 Beta 版本,5月底正式對外開源。
ByConity官網地址:https://byconity.github.io/zh-cn/。
ByConity 是字節跳動開源的云原生數據倉庫,它采用計算-存儲分離的架構,支持多個關鍵功能特性,如「計算存儲分離、彈性擴縮容、租戶資源隔離和數據讀寫的強一致性」等。
通過利用主流的 OLAP 引擎優化,如「列存儲、向量化執行、MPP 執行、查詢優化」等,ByConity 可以提供「優異的讀寫性能」。
ByConity
字節也在內部準備從ClickHouse 全面切換為ByConity。
我們本次了解一下ClickHouse,后面再深入學習一下ByConity!
五、總結
綜上所述,ClickHouse 更適用于大規模數據分析、數據倉庫、復雜查詢、大寬表聚合、報表等場景,而 Elasticsearch 更適用于全文搜索、實時數據分析、日志分析和數據探索等場景。
大家根據自己的業務具體使用那個即可!