自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

OLAP 的技術(shù)研發(fā)與思考--ClickHouse 2023 總結(jié)和 2024 展望

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
ClickHouse 是一個(gè)用于聯(lián)機(jī)分析(OLAP)的列式數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS),主要用于線上分析處理。本文會(huì)介紹 ClickHouse 2024 核心新功能和產(chǎn)品研發(fā)方向。

一、ClickHouse 簡(jiǎn)介

1、ClickHouse 是什么?

圖片

  • 開(kāi)源

ClickHouse 是一款開(kāi)源產(chǎn)品,自 2016 年首次開(kāi)源至今已經(jīng) 7 年時(shí)間;在這期間,有幸得到了全球 1300 余名開(kāi)發(fā)者的貢獻(xiàn);自開(kāi)源以來(lái),ClickHouse 已發(fā)布 500 多個(gè)版本。

  • 列式數(shù)據(jù)庫(kù)

ClickHouse 的核心是以 C++ 和 assembly 編寫(xiě)的列式數(shù)據(jù)庫(kù),并在此基礎(chǔ)上進(jìn)行性能優(yōu)化,在聚合、排序、索引、后臺(tái)合并等方面均有出色的表現(xiàn),因此獲得了“世界上最快的數(shù)據(jù)庫(kù)”的稱號(hào)。

  • 分布式架構(gòu)

ClickHouse 是一個(gè)高可用性的分布式系統(tǒng),既可以部署在單個(gè)節(jié)點(diǎn)上,也可以將不同的節(jié)點(diǎn)部署到同一數(shù)據(jù)中心,甚至可以將節(jié)點(diǎn)分散部署到多個(gè)不同的數(shù)據(jù)中心。

在擴(kuò)展性方面,作為一種 Multi-master 分布式系統(tǒng),既支持垂直擴(kuò)展,也支持水平擴(kuò)展;即便個(gè)別服務(wù)器出現(xiàn)故障,系統(tǒng)依然可以繼續(xù)運(yùn)行,不影響整體的服務(wù)體驗(yàn)。

  • OLAP 數(shù)倉(cāng)

ClickHouse 是一種 OLAP 數(shù)據(jù)庫(kù),主要為處理不可變數(shù)據(jù)以及超大規(guī)模查詢而創(chuàng)建,支持?jǐn)?shù)百 PB 數(shù)據(jù)量的即時(shí)查詢服務(wù),同時(shí)也支持 BI 工具。

2、ClickHouse 的優(yōu)勢(shì)

圖片

  • 輕量級(jí)快速查詢

ClickHouse 在大規(guī)模數(shù)據(jù)分析和查詢方面表現(xiàn)良好,聚合和計(jì)算速度都非???,如上圖右側(cè)截圖所示,ClickHouse 的表現(xiàn)顯著超越 Pinot、Redshift、Elasticsearch、Druid 等其他競(jìng)爭(zhēng)對(duì)手。

  • 資源利用最大化

ClickHouse 采用行業(yè)領(lǐng)先的數(shù)據(jù)壓縮技術(shù),存儲(chǔ)效率提高數(shù)十倍至百倍。

  • 方便上手,容易使用

ClickHouse 支持多種不同 Table Function,支持各種數(shù)據(jù)來(lái)源(例如 S3、Delta Lake、Iceberg、Hudi 等)的自助式數(shù)據(jù)引入,同時(shí)支持標(biāo)準(zhǔn) SQL 語(yǔ)法查詢,因此易于上手。

3、ClickHouse 的發(fā)展歷程

圖片

ClickHouse 最初于 2009 年基于互聯(lián)網(wǎng)規(guī)模分析需求而創(chuàng)建;在 2016 年 6 月,ClickHouse 以 Apache 2.0 許可證發(fā)布第一個(gè)版本;從右圖可以看出,自 2016 年起,ClickHouse 經(jīng)歷了飛速的發(fā)展,其增長(zhǎng)速度遠(yuǎn)超其他同類型項(xiàng)目。到 2021 年,ClickHouse Inc 成立,公司致力于投資開(kāi)源產(chǎn)品,實(shí)現(xiàn)技術(shù)的不斷優(yōu)化。公司去年推出云服務(wù),支持開(kāi)源軟件(OSS)的開(kāi)發(fā),并構(gòu)建托管的云 SaaS 產(chǎn)品;這樣,ClickHouse 不僅是一個(gè)開(kāi)源產(chǎn)品,同時(shí)也提供了云服務(wù)選項(xiàng)。

4、兩種 ClickHouse 運(yùn)營(yíng)模式

ClickHouse 有兩種運(yùn)營(yíng)模式:ClickHouse 自建和 ClickHouse Cloud,用戶可根據(jù)不同的場(chǎng)景選擇適當(dāng)?shù)哪J健?/span>

圖片


(1)ClickHouse 自建

ClickHouse 自建是最初的設(shè)計(jì)理念:用戶直接下載開(kāi)源軟件并部署到環(huán)境中;數(shù)據(jù)可以直接存儲(chǔ)在節(jié)點(diǎn)上,這是一種簡(jiǎn)潔高效的模式,數(shù)據(jù)和資源(如內(nèi)存、CPU 和磁盤)都直接歸屬于子節(jié)點(diǎn)。

然而這種存儲(chǔ)方式也有其缺點(diǎn):

  • 容易出現(xiàn)節(jié)點(diǎn)丟失的情況;
  • 新增節(jié)點(diǎn),會(huì)因數(shù)據(jù)的復(fù)制而耗費(fèi)較長(zhǎng)時(shí)間;
  • 節(jié)點(diǎn)擴(kuò)展或節(jié)點(diǎn)維護(hù)等操作會(huì)遇到限制。

(2)ClickHouse Cloud

ClickHouse Cloud 是另外一種架構(gòu),該架構(gòu)使用的是對(duì)象存儲(chǔ)而不是本地硬盤存儲(chǔ),從而實(shí)現(xiàn)存算分離。使用這樣的架構(gòu)模式,計(jì)算資源可以維持在穩(wěn)定狀態(tài),這樣可以輕松替換出現(xiàn)問(wèn)題的節(jié)點(diǎn),同時(shí)可以快速實(shí)現(xiàn)擴(kuò)容或縮容;目前 ClickHouse 支持自動(dòng)擴(kuò)容或縮容,對(duì)于無(wú)服務(wù)器產(chǎn)品來(lái)說(shuō),大大提高了維護(hù)的便捷性,降低了維護(hù)成本。

5、ClickHouse 企業(yè)版在阿里云重磅上線

圖片

作為全球云戰(zhàn)略的關(guān)鍵組成部分,我們今年 3 月份宣布與阿里云達(dá)成合作,將 ClickHouse 引入中國(guó)市場(chǎng)。在運(yùn)營(yíng)模式上,阿里云版本與原始 ClickHouse 有諸多相似之處,兩者均采用存算分離架構(gòu),并支持自動(dòng)擴(kuò)容和縮容。

圖片

這里就產(chǎn)生了一個(gè)疑問(wèn):開(kāi)源和云端服務(wù)是否存在矛盾?答案顯然是不會(huì)存在矛盾。開(kāi)源技術(shù)是云產(chǎn)品的核心,如果沒(méi)有強(qiáng)大且持續(xù)發(fā)展的開(kāi)源技術(shù)支持,云產(chǎn)品往往很難取得成功;據(jù)了解,超過(guò)半數(shù)的云客戶都有使用過(guò)開(kāi)源產(chǎn)品的經(jīng)驗(yàn);另一方面,當(dāng)產(chǎn)品取得了一定的成功,會(huì)將收益資源回饋給開(kāi)源社區(qū),用于支持和發(fā)展開(kāi)源產(chǎn)品。因此,開(kāi)源產(chǎn)品和云產(chǎn)品之間相互扶持、相互促進(jìn)、共同發(fā)展,最終實(shí)現(xiàn)雙贏,共同推動(dòng)創(chuàng)業(yè)生態(tài)的繁榮。

6、ClickHouse 的使用場(chǎng)景

圖片

Uber 使用 ClickHouse 服務(wù)作為日志觀測(cè)平臺(tái),日寫(xiě)入量高達(dá)數(shù)十 PB。

二、ClickHouse 開(kāi)源產(chǎn)品的產(chǎn)品新特性

1、ClickHouse 開(kāi)源產(chǎn)品特性簡(jiǎn)介

圖片

在介紹 ClickHouse 開(kāi)源產(chǎn)品的產(chǎn)品新特性之前,首先要特別感謝所有對(duì) ClickHouse 作出貢獻(xiàn)的開(kāi)發(fā)者;在最近的日常版本中,新增 20 多位貢獻(xiàn)者,這些開(kāi)發(fā)者在 23.9 版本中首次提交了代碼。各位讀者如果有興趣,歡迎參與開(kāi)源版本的開(kāi)發(fā)過(guò)程,或者加入社區(qū)了解最新進(jìn)展。

圖片

ClickHouse 致力于處理大數(shù)據(jù),因此更快速地導(dǎo)入數(shù)據(jù)是我們的首要任務(wù)。在這方面發(fā)生了許多事情,一個(gè)典型的例子就是異步插入。這是一種批量插入的方式,可以高效地提高 I/O 和吞吐量。此外,我們還引入了去重插入的功能。有時(shí)用戶發(fā)出插入請(qǐng)求,但結(jié)果沒(méi)有返回,原因有很多種,也許是服務(wù)器宕機(jī)了,也許是網(wǎng)絡(luò)問(wèn)題,用戶很難辨別原因,也很難知道插入操作是否成功。而去重功能,會(huì)在服務(wù)器端維護(hù)最近請(qǐng)求的緩存,這樣當(dāng)發(fā)出重復(fù)的插入請(qǐng)求時(shí),如果這段數(shù)據(jù)已經(jīng)插入過(guò),則什么都不會(huì)發(fā)生;如果尚未插入,則繼續(xù)進(jìn)行;這樣可以確保不會(huì)重復(fù)插入數(shù)據(jù)。這是一個(gè)非常酷的功能。

當(dāng)然,整合也是 ClickHouse 非常重要的一部分。我將在演示的后半部分花更多時(shí)間談?wù)撜希貏e是關(guān)注數(shù)據(jù)湖的整合。

今年我們加入了 Hudi、Delta Lake、Iceberg 等不同的數(shù)據(jù)湖格式,當(dāng)然我們正在將這些整合到 ClickHouse 中。同時(shí),我們也在優(yōu)化 Parquet 的讀取性能,稍后會(huì)詳細(xì)介紹。

我們還非常關(guān)注半結(jié)構(gòu)化數(shù)據(jù)。當(dāng)然,已經(jīng)支持 ClickHouse 從 JSON 數(shù)據(jù)讀取一段時(shí)間了。在最新的版本中,我們?yōu)?JSON 引入了模式推斷,這樣只需查看一些對(duì)象并了解模式,就可以輕松進(jìn)行編組和解組。未來(lái)我們將繼續(xù)投資于 JSON 對(duì)象的支持,我們的目標(biāo)是使 JSON 在 ClickHouse 內(nèi)部成為本機(jī)的第一類類型,這樣使用 JSON 對(duì)象將會(huì)更加輕松。

2、Parquet Reading 速度提升

圖片

針對(duì) Parquet 讀取性能的提升,在 23.4 版本,實(shí)現(xiàn)了從 S3/URL 讀取數(shù)據(jù),速度提升 100 倍;在 23.6 版本,分區(qū)查詢速度提高了 2 倍,對(duì)于單個(gè)文檔查詢提高了 4 倍。之所以得到這樣顯著的提升,是因?yàn)橄到y(tǒng)只讀取相關(guān)的列,并根據(jù)范圍(range)跳過(guò)不必要的 block,并且以并行的方式進(jìn)行執(zhí)行。

3、MySQL 兼容性支持

圖片

常見(jiàn)的第三方 BI 工具大多只支持少數(shù)熱門的數(shù)據(jù)庫(kù);為了更好地實(shí)現(xiàn) BI 工具集成,我們改進(jìn)了與 MySQL Wire Protocol 和 SQL 的兼容性,使第三方工具能夠與 ClickHouse 無(wú)縫交互。我們?cè)谶@方面會(huì)繼續(xù)與更多的廠商合作,推出更多 BI 工具。

4、SSH 密鑰驗(yàn)證

圖片

ClickHouse 近期推出 SSH 密鑰驗(yàn)證,采用公鑰/私鑰組合的方式,將私鑰放在客戶端,公鑰存入 ClickHouse 中;這樣的方案比輸入密碼更快、更簡(jiǎn)單、更安全,能夠有效防止暴力破解、撞庫(kù)攻擊等行為,同時(shí)提高開(kāi)發(fā)者體驗(yàn)。

5、數(shù)據(jù)管理能力方面的擴(kuò)展

  • 輕量級(jí)操作

在輕量級(jí)操作中,ClickHouse 主要關(guān)注數(shù)據(jù)的快速讀取。雖然大部分的數(shù)據(jù)是不可變數(shù)據(jù),但是在有些使用場(chǎng)景還是有大量數(shù)據(jù)刪除和數(shù)據(jù)更新的需求;如果使用傳統(tǒng)的方式來(lái)刪除數(shù)據(jù),會(huì)造成所有 part 重構(gòu),從而耗費(fèi)大量的 I/O 和 CPU;假如使用輕量級(jí)的刪除操作,首先給待刪除的數(shù)據(jù)添加標(biāo)簽,這樣后臺(tái)在數(shù)據(jù)合并時(shí)即可實(shí)現(xiàn)數(shù)據(jù)的徹底刪除,而不影響數(shù)據(jù)的讀取性能。

  • 數(shù)據(jù)庫(kù)事務(wù)

數(shù)據(jù)庫(kù)事務(wù)的支持是用戶期待已久且備受歡迎的功能,實(shí)現(xiàn)了 ACID 屬性的進(jìn)一步優(yōu)化,并支持 ClickHouse 用戶不同的應(yīng)用場(chǎng)景;目前該功能仍在研發(fā)階段,會(huì)盡快推出這個(gè)功能。

  • 查詢緩存

圖片

在開(kāi)發(fā)過(guò)程中,每次查詢操作相對(duì)較為耗時(shí),因此將首次查詢結(jié)果放入緩存,后期重復(fù)查詢可直接讀取查詢結(jié)果,這樣可以大大減少查詢延時(shí),降低資源消耗。

6、更加靈活豐富的數(shù)據(jù)分析能力

  • 分析器

將分析器加入到 ClickHouse 配套服務(wù)中,并將其設(shè)置為默認(rèn)配置,從而增強(qiáng)多關(guān)聯(lián)子句的復(fù)雜查詢性能。

  • 加強(qiáng) JOIN 性能

加強(qiáng) JOIN 操作的優(yōu)化,并支持自動(dòng)選擇 JOIN 方法(如 Merge Join、Grace Hash Join 等)。

  • Inverted Indices / Vector Search

團(tuán)隊(duì)將繼續(xù)開(kāi)發(fā) inverted indices 和 vector search 演算法等新功能,并有望在 2024 年的穩(wěn)定版中推出。

7、向量搜索(Vector Search)

圖片

向量搜索目前尚處于實(shí)驗(yàn)階段,待測(cè)試穩(wěn)定后有望于 2024 年發(fā)布,感興趣的讀者可以訪問(wèn)我們的官方網(wǎng)站了解更多詳細(xì)信息。

圖片

三、問(wèn)答環(huán)節(jié)

Q1:ClickHouse 如何支持文本數(shù)據(jù)(如 JSON 數(shù)據(jù)以及日志數(shù)據(jù)等)這類半結(jié)構(gòu)化數(shù)據(jù)的查詢和過(guò)濾?

A1:ClickHouse 已經(jīng)支持 JSON 一段時(shí)間了,不過(guò)是以 experimental 的功能推出的。前兩個(gè)月 ClickHouse 在 github 上發(fā)布了 RFC,在一定程度上提升了 JSON 的讀取性能;然而目前仍然不是非常滿意,因此后期計(jì)劃重寫(xiě)這部分功能,以實(shí)現(xiàn)對(duì) JSON 更高效的支持。

對(duì)于半結(jié)構(gòu)化數(shù)據(jù)(log text data),目前 ClickHouse 支持通過(guò) stream 方式,使用 LIKE 方法對(duì) log data 實(shí)現(xiàn)查詢和過(guò)濾,不過(guò)查詢相對(duì)較慢;后期計(jì)劃完善這部分功能,提升搜索效率,不過(guò)現(xiàn)在仍處于實(shí)驗(yàn)階段。

Q2:ClickHouse 在原生 MPP 數(shù)據(jù)庫(kù)和 Elastic MPP 數(shù)據(jù)庫(kù)方面做了哪些改進(jìn)?

A2:由于傳統(tǒng)擴(kuò)容效率不高,因此 ClickHouse 創(chuàng)建了 Cloud 模式,以 Serverless 擴(kuò)展,云端推出 Table Engine 使用存算分離結(jié)構(gòu)。對(duì)于原生 MPP 數(shù)據(jù)庫(kù)和 Elastic MPP 數(shù)據(jù)庫(kù)方面尚未作出修改。

Q3:ClickHouse 對(duì)于類似 MySQL 的虛擬列或表達(dá)式列的支持情況如何?

A3:ClickHouse 已經(jīng)支持虛擬列,并且可以使用 MATERIALIZED 子句創(chuàng)建列。它類似于 MySQL 的虛擬列,總是基于另一列進(jìn)行計(jì)算,并且不占用存儲(chǔ)。詳見(jiàn):

https://clickhouse.com/docs/en/sql-reference/statements/create/table#materialized

Q4:關(guān)聯(lián)查詢方面,如何 JOIN 外部的 ElasticSearch 數(shù)據(jù)?

A4:ClickHouse 不支持 ElasticSearch 表引擎。但是,我們支持的表引擎有 MySQL、PostgreSQL、MongoDB、S3、Hive、Hudi、DeltaLake 等。并且可以使用它們進(jìn)行 JOIN。

Q5:ClickHouse 能完全取代 Spark 嗎?

A5:是的,ClickHouse 與 ANSI SQL 兼容,就像 Spark 一樣。

Q6:ClickHouse 能實(shí)現(xiàn)倒排索引嗎?

A6:根據(jù)實(shí)踐經(jīng)驗(yàn),如果不超過(guò)百級(jí)的 QPS,在億級(jí)至百億級(jí)的查詢量,token 數(shù)在千到萬(wàn)的級(jí)別,ClickHouse 一般都能做到亞秒級(jí)響應(yīng)。因此先前很多 ES 的場(chǎng)景現(xiàn)在都轉(zhuǎn)移到了 ClickHouse 中。

Q7:ClickHouse 集群規(guī)模如何?

A7:完整節(jié)點(diǎn)有幾千臺(tái),對(duì)于百億級(jí)別的數(shù)據(jù),使用單集群存儲(chǔ),一般情況使用 1 臺(tái) SSD 存儲(chǔ)就夠用了。

Q8:對(duì)于 BI 場(chǎng)景下的多表關(guān)聯(lián)需求,JOIN 性能的目標(biāo)和預(yù)期大概是什么水平?

A8:具體的目標(biāo)和預(yù)期目前很難量化,我們?cè)?2024 的 plan list 中已經(jīng)將這部分工作設(shè)定為高優(yōu)先級(jí)。

責(zé)任編輯:姜華 來(lái)源: DataFunTalk
相關(guān)推薦

2023-12-12 07:34:54

炎凰數(shù)據(jù)大數(shù)據(jù)分析數(shù)據(jù)庫(kù)開(kāi)發(fā)

2022-07-28 09:39:26

研發(fā)效能業(yè)務(wù)

2022-12-19 11:20:41

行業(yè)4.0物聯(lián)網(wǎng)

2022-05-27 11:46:48

技術(shù)能力思考

2024-12-26 08:06:35

2023-02-06 15:05:06

2024-01-19 09:03:06

ReactTypeScripFlexbox

2023-02-03 10:42:01

2024-11-21 10:05:14

2022-05-25 10:47:01

淘寶開(kāi)發(fā)模式

2017-04-25 08:57:47

云計(jì)算云化私有云

2023-07-27 10:33:24

2011-11-03 14:35:06

2024-04-11 09:29:12

React生態(tài)系統(tǒng)TypeScript

2023-12-15 09:46:19

2022-01-20 11:01:41

量子計(jì)算系統(tǒng)

2021-08-30 11:48:33

開(kāi)發(fā)技術(shù)互聯(lián)網(wǎng)

2024-01-29 08:20:03

物化視圖StarRocksOLAP系統(tǒng)

2025-03-06 09:00:00

前端AI開(kāi)發(fā)

2011-07-28 17:22:57

虛擬化云計(jì)算
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)