chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

PB級(jí)分析型數(shù)據(jù)庫(kù)ClickHouse的應(yīng)用場(chǎng)景和特性等分享

數(shù)據(jù)分析與開發(fā) ? 來源:51CTO技術(shù)棧 ? 作者:姜國(guó)強(qiáng) ? 2021-03-30 10:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在百花齊放的交互式分析領(lǐng)域,ClickHouse 絕對(duì)是后起之秀,它雖然年輕,卻有非常大的發(fā)展空間。本文將分享 PB 級(jí)分析型數(shù)據(jù)庫(kù) ClickHouse 的應(yīng)用場(chǎng)景、整體架構(gòu)、眾多核心特性等,幫助理解 ClickHouse 如何實(shí)現(xiàn)極致性能的存儲(chǔ)引擎,希望與大家一起交流。

一、交互式分析之 ClickHouse

1. 交互式分析簡(jiǎn)介

交互式分析,也稱 OLAP(Online Analytical Processing),它賦予用戶對(duì)海量數(shù)據(jù)進(jìn)行多維度、交互式的統(tǒng)計(jì)分析能力,以充分利用數(shù)據(jù)的價(jià)值進(jìn)行量化運(yùn)營(yíng)、輔助決策等,幫助用戶提高生產(chǎn)效率。

交互式分析主要應(yīng)用于統(tǒng)計(jì)報(bào)表、即席查詢(Ad Hoc)等領(lǐng)域,前者查詢模式較固定,后者即興進(jìn)行探索分析。代表場(chǎng)景例如:移動(dòng)互聯(lián)網(wǎng)中 PV、UV、活躍度等典型實(shí)時(shí)報(bào)表;互聯(lián)網(wǎng)內(nèi)容領(lǐng)域中人群洞察、關(guān)聯(lián)分析等即席查詢。

交互式分析是數(shù)據(jù)分析的一種重要方式,與離線分析、流式分析、檢索分析一起,共同組成完整的數(shù)據(jù)分析解決方案,在互聯(lián)網(wǎng)、物聯(lián)網(wǎng)快速發(fā)展的背景下,從不同維度滿足用戶對(duì)海量數(shù)據(jù)的全方位分析需求。 相比專注于事務(wù)處理的傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù),交互式分析解決了 PB 級(jí)數(shù)據(jù)分析帶來的性能、擴(kuò)展性問題。 相比離線分析長(zhǎng)達(dá) T + 1 的時(shí)效性、流式分析較為固定的分析模式、檢索分析受限的分析性能,交互式分析的分鐘級(jí)時(shí)效性、靈活多維度的分析能力、超高性能的掃描分析性能,可以大幅度提高數(shù)據(jù)分析的效率,拓展數(shù)據(jù)分析的應(yīng)用范圍。

c74c0c40-8e33-11eb-8b86-12bb97331649.png

從數(shù)據(jù)訪問特性角度來看,交互式分析場(chǎng)景具有如下典型特點(diǎn):

大多數(shù)訪問是讀請(qǐng)求。

寫入通常為追加寫,較少更新、刪除操作。

讀寫不關(guān)注事務(wù)、強(qiáng)一致等特性。

查詢通常會(huì)訪問大量的行,但僅部分列是必須的。

查詢結(jié)果通常明顯小于訪問的原始數(shù)據(jù),且具有可理解的統(tǒng)計(jì)意義。

2. 百花齊放下的 ClickHouse

近十年,交互式分析領(lǐng)域經(jīng)歷了百花齊放式的發(fā)展,大量解決方案爆發(fā)式涌現(xiàn),尚未有產(chǎn)品達(dá)到類似 Oracle / MySQL 在關(guān)系型數(shù)據(jù)庫(kù)領(lǐng)域中絕對(duì)領(lǐng)先的狀態(tài)。 業(yè)界提出的開源或閉源的交互式解決方案,主要從大數(shù)據(jù)、NoSQL 兩個(gè)不同的方向進(jìn)行演進(jìn),以期望提供用戶最好的交互式分析體驗(yàn)。下圖所示是不同維度下的代表性解決方案,供大家參考了解:

c9952f68-8e33-11eb-8b86-12bb97331649.png

其中,ClickHouse 作為一款 PB 級(jí)的交互式分析數(shù)據(jù)庫(kù),最初是由號(hào)稱 “ 俄羅斯 Google ” 的 Yandex 公司開發(fā),主要作為世界第二大 Web 流量分析平臺(tái) Yandex.Metrica(類 Google Analytic、友盟統(tǒng)計(jì))的核心存儲(chǔ),為 Web 站點(diǎn)、移動(dòng) App 實(shí)時(shí)在線的生成流量統(tǒng)計(jì)報(bào)表。 自 2016 年開源以來,ClickHouse 憑借其數(shù)倍于業(yè)界頂尖分析型數(shù)據(jù)庫(kù)的極致性能,成為交互式分析領(lǐng)域的后起之秀,發(fā)展速度非常快,Github 上獲得 12.4K Star,DB-Engines 排名近一年上升 26 位,并獲得思科、Splunk、騰訊、阿里等頂級(jí)企業(yè)的采用[1]。下面是 ClickHouse 及其他開源 OLAP 產(chǎn)品的發(fā)展趨勢(shì)統(tǒng)計(jì):

cb2b3aa2-8e33-11eb-8b86-12bb97331649.png

性能是衡量 OLAP 數(shù)據(jù)庫(kù)的關(guān)鍵指標(biāo),我們可以通過 ClickHouse 官方測(cè)試結(jié)果[2] 感受下 ClickHouse 的極致性能,其中綠色代表性能最佳,紅色代表性能較差,紅色越深代表性能越弱。 從測(cè)試結(jié)果看,ClickHouse 幾乎在所有場(chǎng)景下性能都最佳,并且從所有查詢整體看,ClickHouse 領(lǐng)先圖靈獎(jiǎng)得主 Michael Stonebraker 所創(chuàng)建的 Vertica 達(dá) 6 倍,領(lǐng)先 Greenplum 達(dá)到 18 倍。

cbc018f2-8e33-11eb-8b86-12bb97331649.png

更多測(cè)試結(jié)果可參考 OLAP 系統(tǒng)第三方評(píng)測(cè)[3] ,盡管該測(cè)試使用了無(wú)索引的表引擎(或稱表類型),ClickHouse 仍然在單表模式下體現(xiàn)了強(qiáng)勁的領(lǐng)先優(yōu)勢(shì)。

二、ClickHouse 架構(gòu)

1. 集群架構(gòu)

ClickHouse 采用典型的分組式的分布式架構(gòu),具體集群架構(gòu)如下圖所示:

ccdd0ace-8e33-11eb-8b86-12bb97331649.png

Shard :集群內(nèi)劃分為多個(gè)分片或分組(Shard 0 … Shard N),通過 Shard 的線性擴(kuò)展能力,支持海量數(shù)據(jù)的分布式存儲(chǔ)計(jì)算。

Node :每個(gè) Shard 內(nèi)包含一定數(shù)量的節(jié)點(diǎn)(Node,即進(jìn)程),同一 Shard 內(nèi)的節(jié)點(diǎn)互為副本,保障數(shù)據(jù)可靠。ClickHouse 中副本數(shù)可按需建設(shè),且邏輯上不同 Shard 內(nèi)的副本數(shù)可不同。

ZooKeeper Service :集群所有節(jié)點(diǎn)對(duì)等,節(jié)點(diǎn)間通過 ZooKeeper 服務(wù)進(jìn)行分布式協(xié)調(diào)。

2. 數(shù)據(jù)模型

ClickHouse 采用經(jīng)典的表格存儲(chǔ)模型,屬于結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)系統(tǒng)。我們分別從面向用戶的邏輯數(shù)據(jù)模型和面向底層存儲(chǔ)的物理數(shù)據(jù)模型進(jìn)行介紹。

(1)邏輯數(shù)據(jù)模型

從用戶使用角度看,ClickHouse 的邏輯數(shù)據(jù)模型與關(guān)系型數(shù)據(jù)庫(kù)有一定的相似:一個(gè)集群包含多個(gè)數(shù)據(jù)庫(kù),一個(gè)數(shù)據(jù)庫(kù)包含多張表,表用于實(shí)際存儲(chǔ)數(shù)據(jù)。 與傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)不同的是,ClickHouse 是分布式系統(tǒng),如何創(chuàng)建分布式表呢?ClickHouse 的設(shè)計(jì)是:先在每個(gè) Shard 每個(gè)節(jié)點(diǎn)上創(chuàng)建本地表(即 Shard 的副本),本地表只在對(duì)應(yīng)節(jié)點(diǎn)內(nèi)可見;然后再創(chuàng)建分布式表,映射到前面創(chuàng)建的本地表。這樣用戶在訪問分布式表時(shí),ClickHouse 會(huì)自動(dòng)根據(jù)集群架構(gòu)信息,把請(qǐng)求轉(zhuǎn)發(fā)給對(duì)應(yīng)的本地表。創(chuàng)建分布式表的具體樣例如下:

# 首先,創(chuàng)建本地表CREATE TABLE table_local ON CLUSTER cluster_test( OrderKey UInt32, # 列定義 OrderDate Date, Quantity UInt8, TotalPrice UInt32, ……)ENGINE = MergeTree() # 表引擎PARTITION BY toYYYYMM(OrderDate) # 分區(qū)方式ORDER BY (OrderDate, OrderKey); # 排序方式SETTINGS index_granularity = 8192; # 數(shù)據(jù)塊大小 # 然后,創(chuàng)建分布式表CREATE TABLE table_distribute ON CLUSTER cluster_test AS table_localENGINE = Distributed(cluster_test, default, table_local, rand()) # 關(guān)系映射引擎 其中部分關(guān)鍵概念介紹如下,分區(qū)、數(shù)據(jù)塊、排序等概念會(huì)在物理存儲(chǔ)模型部分展開介紹:

MergeTree :ClickHouse 中使用非常多的表引擎,底層采用 LSM Tree 架構(gòu),寫入生成的小文件會(huì)持續(xù) Merge。

Distributed :ClickHouse 中的關(guān)系映射引擎,它把分布式表映射到指定集群、數(shù)據(jù)庫(kù)下對(duì)應(yīng)的本地表上。

更直觀的,ClickHouse 中的邏輯數(shù)據(jù)模型如下:

cd9163d4-8e33-11eb-8b86-12bb97331649.png

(2)物理存儲(chǔ)模型

接下來,我們來介紹每個(gè)分片副本內(nèi)部的物理存儲(chǔ)模型,具體如下:

數(shù)據(jù)分區(qū):每個(gè)分片副本的內(nèi)部,數(shù)據(jù)按照 PARTITION BY 列進(jìn)行分區(qū),分區(qū)以目錄的方式管理,本文樣例中表按照時(shí)間進(jìn)行分區(qū)。

列式存儲(chǔ):每個(gè)數(shù)據(jù)分區(qū)內(nèi)部,采用列式存儲(chǔ),每個(gè)列涉及兩個(gè)文件,分別是存儲(chǔ)數(shù)據(jù)的 .bin 文件和存儲(chǔ)偏移等索引信息的 .mrk2 文件。

數(shù)據(jù)排序:每個(gè)數(shù)據(jù)分區(qū)內(nèi)部,所有列的數(shù)據(jù)是按照 ORDER BY 列進(jìn)行排序的??梢岳斫鉃椋簩?duì)于生成這個(gè)分區(qū)的原始記錄行,先按 ORDER BY 列進(jìn)行排序,然后再按列拆分存儲(chǔ)。

數(shù)據(jù)分塊:每個(gè)列的數(shù)據(jù)文件中,實(shí)際是分塊存儲(chǔ)的,方便數(shù)據(jù)壓縮及查詢裁剪,每個(gè)塊中的記錄數(shù)不超過 index_granularity,默認(rèn) 8192。

主鍵索引:主鍵默認(rèn)與 ORDER BY 列一致,或?yàn)?ORDER BY 列的前綴。由于整個(gè)分區(qū)內(nèi)部是有序的,且切割為數(shù)據(jù)塊存儲(chǔ),ClickHouse 抽取每個(gè)數(shù)據(jù)塊第一行的主鍵,生成一份稀疏的排序索引,可在查詢時(shí)結(jié)合過濾條件快速裁剪數(shù)據(jù)塊。

ce7de4d4-8e33-11eb-8b86-12bb97331649.png

三、ClickHouse核心特性

ClickHouse 為什么會(huì)有如此高的性能,獲得如此快速的發(fā)展速度?下面我們來從 ClickHouse 的核心特性角度來進(jìn)一步介紹。

1. 列存儲(chǔ)

ClickHouse 采用列存儲(chǔ),這對(duì)于分析型請(qǐng)求非常高效。一個(gè)典型且真實(shí)的情況是:如果我們需要分析的數(shù)據(jù)有 50 列,而每次分析僅讀取其中的 5 列,那么通過列存儲(chǔ),我們僅需讀取必要的列數(shù)據(jù),相比于普通行存,可減少 10 倍左右的讀取、解壓、處理等開銷,對(duì)性能會(huì)有質(zhì)的影響。

這是分析場(chǎng)景下,列存儲(chǔ)數(shù)據(jù)庫(kù)相比行存儲(chǔ)數(shù)據(jù)庫(kù)的重要優(yōu)勢(shì)。這里引用 ClickHouse 官方一個(gè)生動(dòng)形象的動(dòng)畫,方便大家理解:

行存儲(chǔ):從存儲(chǔ)系統(tǒng)讀取所有滿足條件的行數(shù)據(jù),然后在內(nèi)存中過濾出需要的字段,速度較慢:

cfe15680-8e33-11eb-8b86-12bb97331649.gif

列存儲(chǔ):僅從存儲(chǔ)系統(tǒng)中讀取必要的列數(shù)據(jù),無(wú)用列不讀取,速度非??欤?/p>

2. 向量化執(zhí)行

在支持列存的基礎(chǔ)上,ClickHouse 實(shí)現(xiàn)了一套面向向量化處理 的計(jì)算引擎,大量的處理操作都是向量化執(zhí)行的。 相比于傳統(tǒng)火山模型中的逐行處理模式,向量化執(zhí)行引擎采用批量處理模式,可以大幅減少函數(shù)調(diào)用開銷,降低指令、數(shù)據(jù)的 Cache Miss,提升 CPU 利用效率。并且 ClickHouse 可利用 SIMD 指令進(jìn)一步加速執(zhí)行效率。這部分是 ClickHouse 優(yōu)于大量同類 OLAP 產(chǎn)品的重要因素。 以商品訂單數(shù)據(jù)為例,查詢某個(gè)訂單總價(jià)格的處理過程,由傳統(tǒng)的按行遍歷處理的過程,轉(zhuǎn)換為按 Block 處理的過程,具體如下圖:

da95136e-8e33-11eb-8b86-12bb97331649.png

3. 編碼壓縮

由于 ClickHouse 采用列存儲(chǔ),相同列的數(shù)據(jù)連續(xù)存儲(chǔ),且底層數(shù)據(jù)在存儲(chǔ)時(shí)是經(jīng)過排序的,這樣數(shù)據(jù)的局部規(guī)律性非常強(qiáng),有利于獲得更高的數(shù)據(jù)壓縮比。 此外,ClickHouse 除了支持 LZ4、ZSTD 等通用壓縮算法外,還支持 Delta、DoubleDelta、Gorilla 等專用編碼算法[4],用于進(jìn)一步提高數(shù)據(jù)壓縮比。 其中 DoubleDelta、Gorilla 是 Facebook 專為時(shí)間序數(shù)據(jù)而設(shè)計(jì)的編碼算法,理論上在列存儲(chǔ)環(huán)境下,可接近專用時(shí)序存儲(chǔ)的壓縮比,詳細(xì)可參考 Gorilla 論文[5]。

dbeb16be-8e33-11eb-8b86-12bb97331649.png

在實(shí)際場(chǎng)景下,ClickHouse 通??梢赃_(dá)到 10 : 1 的壓縮比,大幅降低存儲(chǔ)成本。同時(shí),超高的壓縮比又可以降低存儲(chǔ)讀取開銷、提升系統(tǒng)緩存能力,從而提高查詢性能。

4. 多索引

列存用于裁剪不必要的字段讀取,而索引則用于裁剪不必要的記錄讀取。ClickHouse 支持豐富的索引,從而在查詢時(shí)盡可能的裁剪不必要的記錄讀取,提高查詢性能。 ClickHouse 中最基礎(chǔ)的索引是主鍵索引。前面我們?cè)谖锢泶鎯?chǔ)模型中介紹,ClickHouse 的底層數(shù)據(jù)按建表時(shí)指定的 ORDER BY 列進(jìn)行排序,并按 index_granularity 參數(shù)切分成數(shù)據(jù)塊,然后抽取每個(gè)數(shù)據(jù)塊的第一行形成一份稀疏的排序索引。 用戶在查詢時(shí),如果查詢條件包含主鍵列,則可以基于稀疏索引進(jìn)行快速的裁剪。這里通過下面的樣例數(shù)據(jù)及對(duì)應(yīng)的主鍵索引進(jìn)行說明:

dd602656-8e33-11eb-8b86-12bb97331649.png

樣例中的主鍵列為 CounterID、Date,這里按每 7 個(gè)值作為一個(gè)數(shù)據(jù)塊,抽取生成了主鍵索引 Marks 部分。當(dāng)用戶查詢 CounterID equal ‘h’ 的數(shù)據(jù)時(shí),根據(jù)索引信息,只需要讀取 Mark number 為 6 和 7 的兩個(gè)數(shù)據(jù)塊。 ClickHouse 支持更多其他的索引類型,不同索引用于不同場(chǎng)景下的查詢裁剪,具體匯總?cè)缦拢敿?xì)的介紹參考 ClickHouse 官方文檔[6]:

de228020-8e33-11eb-8b86-12bb97331649.png

5. 物化視圖(Cube/Rollup)

OLAP 分析領(lǐng)域有兩個(gè)典型的方向:一是 ROLAP,通過列存、索引等各類技術(shù)手段,提升查詢時(shí)性能。 另一是 MOLAP,通過預(yù)計(jì)算提前生成聚合后的結(jié)果數(shù)據(jù),降低查詢讀取的數(shù)據(jù)量,屬于計(jì)算換性能方式。 前者更為靈活,但需要的技術(shù)棧相對(duì)復(fù)雜;后者實(shí)現(xiàn)相對(duì)簡(jiǎn)單,但要達(dá)到的極致性能,需要生成所有常見查詢對(duì)應(yīng)的物化視圖,消耗大量計(jì)算、存儲(chǔ)資源。物化視圖的原理如下圖所示,可以在不同維度上對(duì)原始數(shù)據(jù)進(jìn)行預(yù)計(jì)算匯總:

df62f0a0-8e33-11eb-8b86-12bb97331649.png

ClickHouse 一定程度上做了兩者的結(jié)合,在盡可能采用 ROLAP 方式提高性能的同時(shí),支持一定的 MOLAP 能力,具體實(shí)現(xiàn)方式為 MergeTree系列表引擎[7] 和 MATERIALIZED VIEW[8]。 事實(shí)上,Yandex.Metrica 的存儲(chǔ)系統(tǒng)也經(jīng)歷過使用純粹 MOLAP 方案的發(fā)展過程,具體參考 ClickHouse的發(fā)展歷史[9]。 用戶在使用時(shí),可優(yōu)先按照 ROLAP 思路進(jìn)行調(diào)優(yōu),例如主鍵選擇、索引優(yōu)化、編碼壓縮等。當(dāng)希望性能更高時(shí),可考慮結(jié)合 MOLAP 方式,針對(duì)高頻查詢模式,建立少量的物化視圖,消耗可接受的計(jì)算、存儲(chǔ)資源,進(jìn)一步換取查詢性能。

6. 其他特性

除了前面所述,ClickHouse 還有非常多其他特性,抽取列舉如下,更多詳細(xì)內(nèi)容可參考 ClickHouse官方文檔[10]。

SQL 方言:在常用場(chǎng)景下,兼容 ANSI SQL,并支持 JDBC、ODBC 等豐富接口。

權(quán)限管控:支持 Role-Based 權(quán)限控制,與關(guān)系型數(shù)據(jù)庫(kù)使用體驗(yàn)類似。

多機(jī)多核并行計(jì)算:ClickHouse 會(huì)充分利用集群中的多節(jié)點(diǎn)、多線程進(jìn)行并行計(jì)算,提高性能。

近似查詢:支持近似查詢算法、數(shù)據(jù)抽樣等近似查詢方案,加速查詢性能。

Colocated Join:數(shù)據(jù)打散規(guī)則一致的多表進(jìn)行 Join 時(shí),支持本地化的 Colocated Join,提升查詢性能。 ……

四、ClickHouse 的不足

前面介紹了大量 ClickHouse 的核心特性,方便讀者了解 ClickHouse 高性能、快速發(fā)展的背后原因。當(dāng)然,ClickHouse 作為后起之秀,遠(yuǎn)沒有達(dá)到盡善盡美,還有不少需要待完善的方面,典型代表如下:

1. 分布式管控

分布式系統(tǒng)通常包含 3 個(gè)重要組成部分:存儲(chǔ)引擎、計(jì)算引擎、分布式管控層。ClickHouse 有一個(gè)非常突出的高性能存儲(chǔ)引擎,但在分布式管控層顯得較為薄弱,使得運(yùn)營(yíng)、使用成本偏高。主要體現(xiàn)在: (1)分布式表 ClickHouse 對(duì)分布式表的抽象并不完整,在多數(shù)分布式系統(tǒng)中,用戶僅感知集群和表,對(duì)分片和副本的管理透明,而在 ClickHouse 中,用戶需要自己去管理分片、副本,例如前面介紹的建表過程:用戶需要先創(chuàng)建本地表(分片的副本),然后再創(chuàng)建分布式表,并完成分布式表到本地表的映射。 (2)彈性伸縮 ClickHouse 集群自身雖然可以方便的水平增加節(jié)點(diǎn),但并不支持自動(dòng)的數(shù)據(jù)均衡。例如,當(dāng)包含 6 個(gè)節(jié)點(diǎn)的線上生產(chǎn)集群因存儲(chǔ) 或 計(jì)算壓力大,需要進(jìn)行擴(kuò)容時(shí),我們可以方便的擴(kuò)容到 10 個(gè)節(jié)點(diǎn),但是數(shù)據(jù)并不會(huì)自動(dòng)均衡,需要用戶給已有表增加分片 或者 重新建表,再把寫入壓力重新在整個(gè)集群內(nèi)打散,而存儲(chǔ)壓力的均衡則依賴于歷史數(shù)據(jù)過期。ClickHouse在彈性伸縮方面的不足,大幅增加了業(yè)務(wù)在進(jìn)行水平伸縮時(shí)運(yùn)營(yíng)壓力。 基于 ClickHouse 的當(dāng)前架構(gòu),實(shí)現(xiàn)自動(dòng)均衡相對(duì)復(fù)雜,導(dǎo)致相關(guān)問題的根因在于 ClickHouse 分組式的分布式架構(gòu):同一分片的主從副本綁定在一組節(jié)點(diǎn)上,更直接的說,分片間數(shù)據(jù)打散是按照節(jié)點(diǎn)進(jìn)行的,自動(dòng)均衡過程不能簡(jiǎn)單的搬遷分片到新節(jié)點(diǎn),會(huì)導(dǎo)致路由信息錯(cuò)誤。而創(chuàng)建新表并在集群中進(jìn)行全量數(shù)據(jù)重新打散的方式,操作開銷過高。

e11c2efc-8e33-11eb-8b86-12bb97331649.png

(3)故障恢復(fù) 與彈性伸縮類似,在節(jié)點(diǎn)故障的情況下,ClickHouse 并不會(huì)利用其它機(jī)器補(bǔ)齊缺失的副本數(shù)據(jù)。需要用戶先補(bǔ)齊節(jié)點(diǎn)后,然后系統(tǒng)再自動(dòng)在副本間進(jìn)行數(shù)據(jù)同步。

2. 計(jì)算引擎

雖然 ClickHouse 在單表性能方面表現(xiàn)非常出色,但是在復(fù)雜場(chǎng)景仍有不足,缺乏成熟的 MPP 計(jì)算引擎 和 執(zhí)行優(yōu)化器,例如:多表關(guān)聯(lián)查詢、復(fù)雜嵌套子查詢等場(chǎng)景下查詢性能一般,需要人工優(yōu)化;缺乏 UDF 等能力,在復(fù)雜需求下擴(kuò)展能力較弱等。這也和 OLAP 系統(tǒng)第三方評(píng)測(cè) 的結(jié)果相符。這對(duì)于性能如此出眾的存儲(chǔ)引擎來說,非??上А?/p>

3. 實(shí)時(shí)寫入

ClickHouse 采用類 LSM Tree 架構(gòu),并且建議用戶通過批量方式進(jìn)行寫入,每個(gè)批次不少于 1000 行 或 每秒鐘不超過一個(gè)批次,從而提高集群寫入性能,實(shí)際測(cè)試情況下,32 vCPU & 128G 內(nèi)存的情況下,單節(jié)點(diǎn)寫性能可達(dá) 50 MB/s ~ 200 MB/s,對(duì)應(yīng) 5w ~ 20w TPS。 但 ClickHouse 并不適合實(shí)時(shí)寫入,原因在于 ClickHouse 并非典型的 LSM Tree 架構(gòu),它沒有實(shí)現(xiàn) Memory Table 結(jié)構(gòu),每批次寫入直接落盤作為一棵 Tree(如果單批次過大,會(huì)拆分為多棵 Tree),每條記錄實(shí)時(shí)寫入會(huì)導(dǎo)致底層大量的小文件,影響查詢性能。 這使得 ClickHouse 不適合有實(shí)時(shí)寫入需求的業(yè)務(wù),通常需要在業(yè)務(wù)和 ClickHouse 之間引入一層數(shù)據(jù)緩存層,實(shí)現(xiàn)批量寫入。

五、結(jié)語(yǔ)

本文重點(diǎn)分享了 ClickHouse 的整體架構(gòu)及眾多核心特性,分析了 ClickHouse 如何實(shí)現(xiàn)極致性能的存儲(chǔ)引擎,從而成為 OLAP 領(lǐng)域的后起之秀。 ClickHouse 仍然年輕,雖然在某些方面存在不足,但極致性能的存儲(chǔ)引擎,使得 ClickHouse 成為一個(gè)非常優(yōu)秀的存儲(chǔ)底座。 后續(xù)我們會(huì)在不斷拓展業(yè)務(wù)的同時(shí),優(yōu)先從分布式管控層和計(jì)算引擎層著手,持續(xù)優(yōu)化 ClickHouse 的易用性、性能,打造業(yè)界領(lǐng)先的 OLAP 分析數(shù)據(jù)庫(kù)。同時(shí),我們會(huì)持續(xù)輸出內(nèi)核優(yōu)化、最佳實(shí)踐等經(jīng)驗(yàn),歡迎更多技術(shù)愛好者們一起探索、交流。

原文標(biāo)題:交互式分析領(lǐng)域,為何 ClickHouse 能夠殺出重圍?

文章出處:【微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:交互式分析領(lǐng)域,為何 ClickHouse 能夠殺出重圍?

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    藍(lán)牙網(wǎng)關(guān)是什么?都有哪些功能?應(yīng)用場(chǎng)景有哪些?

    點(diǎn),更構(gòu)建起“設(shè)備互聯(lián)-數(shù)據(jù)流轉(zhuǎn)-智能管控”的完整鏈路,成為物聯(lián)網(wǎng)生態(tài)中不可或缺的核心組件。本文將系統(tǒng)解析藍(lán)牙網(wǎng)關(guān)的核心價(jià)值、技術(shù)架構(gòu)、應(yīng)用場(chǎng)景、現(xiàn)存挑戰(zhàn)及未來趨勢(shì),為讀者呈現(xiàn)這一關(guān)鍵技術(shù)的全貌
    發(fā)表于 12-11 15:21

    PLC數(shù)據(jù)保存到MySQL數(shù)據(jù)庫(kù)解決方案

    。將這些數(shù)據(jù)可靠、高效地保存到數(shù)據(jù)庫(kù),能夠?yàn)槠髽I(yè)搭建數(shù)據(jù)平臺(tái),支撐后續(xù)的數(shù)據(jù)分析、報(bào)表生成以及決策支持等應(yīng)用。 在實(shí)際應(yīng)用場(chǎng)景中,面對(duì)到多源
    的頭像 發(fā)表于 09-30 16:50 ?1594次閱讀
    PLC<b class='flag-5'>數(shù)據(jù)</b>保存到MySQL<b class='flag-5'>數(shù)據(jù)庫(kù)</b>解決方案

    Leadway微波產(chǎn)品有哪些應(yīng)用場(chǎng)景?

    。Leadway微波產(chǎn)品的應(yīng)用場(chǎng)景如下:5G/6G通信測(cè)試毫米波基站與終端設(shè)備測(cè)試:Leadway的測(cè)試級(jí)柔性/鎧裝毫米波線纜(DC-110GHz)支持高頻段信號(hào)傳輸與校準(zhǔn),確保通信質(zhì)量。其低插損特性
    發(fā)表于 09-26 09:14

    數(shù)據(jù)庫(kù)性能瓶頸分析與SQL優(yōu)化實(shí)戰(zhàn)案例

    作為一名在一線摸爬滾打8年的運(yùn)維工程師,我見過太多因?yàn)?b class='flag-5'>數(shù)據(jù)庫(kù)性能問題而半夜被叫醒的場(chǎng)景。今天分享幾個(gè)真實(shí)的優(yōu)化案例,希望能幫你避開這些坑。
    的頭像 發(fā)表于 08-27 14:31 ?595次閱讀

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle數(shù)據(jù)庫(kù)故障的數(shù)據(jù)恢復(fù)案例

    Oracle數(shù)據(jù)庫(kù)故障: 某公司一臺(tái)服務(wù)器上部署Oracle數(shù)據(jù)庫(kù)。服務(wù)器意外斷電導(dǎo)致數(shù)據(jù)庫(kù)報(bào)錯(cuò),報(bào)錯(cuò)內(nèi)容為“system01.dbf需要更多的恢復(fù)來保持一致性”。該Oracle數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 07-24 11:12 ?655次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle<b class='flag-5'>數(shù)據(jù)庫(kù)</b>故障的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    企業(yè)級(jí)MySQL數(shù)據(jù)庫(kù)管理指南

    在當(dāng)今數(shù)字化時(shí)代,MySQL作為全球最受歡迎的開源關(guān)系數(shù)據(jù)庫(kù),承載著企業(yè)核心業(yè)務(wù)數(shù)據(jù)的存儲(chǔ)與處理。作為數(shù)據(jù)庫(kù)管理員(DBA),掌握MySQL的企業(yè)
    的頭像 發(fā)表于 07-09 09:50 ?736次閱讀

    milvus向量數(shù)據(jù)庫(kù)的主要特性和應(yīng)用場(chǎng)景

    Milvus 是一個(gè)開源的向量數(shù)據(jù)庫(kù),專門為處理和分析大規(guī)模向量數(shù)據(jù)而設(shè)計(jì)。它適用于需要高效存儲(chǔ)、檢索和管理向量數(shù)據(jù)的應(yīng)用場(chǎng)景,如機(jī)器學(xué)習(xí)、
    的頭像 發(fā)表于 07-04 11:36 ?1087次閱讀
    milvus向量<b class='flag-5'>數(shù)據(jù)庫(kù)</b>的主要<b class='flag-5'>特性</b>和應(yīng)<b class='flag-5'>用場(chǎng)景</b>

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫(kù)文件丟失的數(shù)據(jù)恢復(fù)案例

    MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)操作系統(tǒng)為Windows Server的虛擬機(jī)上部署MongoDB數(shù)據(jù)庫(kù)。 MongoDB數(shù)據(jù)庫(kù)故障: 工作人員在MongoDB服務(wù)仍
    的頭像 發(fā)表于 07-01 11:13 ?647次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—MongoDB<b class='flag-5'>數(shù)據(jù)庫(kù)</b>文件丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫(kù)被加密如何恢復(fù)數(shù)據(jù)

    SQL Server數(shù)據(jù)庫(kù)故障: SQL Server數(shù)據(jù)庫(kù)被加密,無(wú)法使用。 數(shù)據(jù)庫(kù)MDF、LDF、log日志文件名字被篡改。
    的頭像 發(fā)表于 06-25 13:54 ?691次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫(kù)</b>被加密如何恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?

    MySQL數(shù)據(jù)庫(kù)采集網(wǎng)關(guān)是什么?有什么功能?

    場(chǎng)景中發(fā)揮關(guān)鍵作用,以下從核心功能和應(yīng)用場(chǎng)景展開分析: 一、核心功能 協(xié)議轉(zhuǎn)換與數(shù)據(jù)采集 支持多種工業(yè)協(xié)議(如Modbus、OPC UA、BACnet、SNMP等)和通用通信接口(如R
    的頭像 發(fā)表于 05-26 15:20 ?676次閱讀

    SQLSERVER數(shù)據(jù)庫(kù)是什么

    SQL Server 是由微軟公司開發(fā)的一款 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS) ,用于存儲(chǔ)、管理和檢索結(jié)構(gòu)化數(shù)據(jù)。它是企業(yè)級(jí)應(yīng)用中廣泛使用的數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 05-26 09:19 ?1182次閱讀

    MySQL數(shù)據(jù)庫(kù)是什么

    開發(fā)、企業(yè)應(yīng)用和大數(shù)據(jù)場(chǎng)景。以下是其核心特性和應(yīng)用場(chǎng)景的詳細(xì)說明: 核心特性 關(guān)系
    的頭像 發(fā)表于 05-23 09:18 ?1232次閱讀

    HarmonyOS5云服務(wù)技術(shù)分享--云數(shù)據(jù)庫(kù)使用指南

    接觸HarmonyOS開發(fā),還是想優(yōu)化現(xiàn)有的數(shù)據(jù)管理邏輯,這篇指南都會(huì)手把手帶你玩轉(zhuǎn)數(shù)據(jù)的增刪改查,還有那些超實(shí)用的高級(jí)查詢功能! ? ??核心功能與使用場(chǎng)景?? 華為云數(shù)據(jù)庫(kù)(Clo
    發(fā)表于 05-22 18:29

    數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫(kù)文件拷貝后服務(wù)無(wú)法啟動(dòng)的數(shù)據(jù)恢復(fù)

    MongoDB數(shù)據(jù)庫(kù)數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)Windows Server操作系統(tǒng)虛擬機(jī)上部署MongoDB數(shù)據(jù)庫(kù)。 MongoDB數(shù)據(jù)庫(kù)故障: 管理員在未關(guān)閉MongoDB服務(wù)的
    的頭像 發(fā)表于 04-09 11:34 ?876次閱讀
    <b class='flag-5'>數(shù)據(jù)庫(kù)</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)——MongoDB<b class='flag-5'>數(shù)據(jù)庫(kù)</b>文件拷貝后服務(wù)無(wú)法啟動(dòng)的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)

    頻域示波器的技術(shù)原理和應(yīng)用場(chǎng)景

    。 通過觀察信號(hào)的頻譜特性,可以判斷故障是否由頻率相關(guān)的問題引起,從而采取相應(yīng)的修復(fù)措施。 信號(hào)的高級(jí)分析: 在一些高級(jí)應(yīng)用場(chǎng)景中,頻域示波器還可以用于串行信號(hào)的解碼、眼圖分析等。
    發(fā)表于 03-11 14:37