91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

火山引擎:ClickHouse增強(qiáng)計(jì)劃之“多表關(guān)聯(lián)查詢”

jf_ro2CN3Fa ? 來(lái)源:芋道源碼 ? 作者:芋道源碼 ? 2022-10-10 17:00 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

相信大家都對(duì)大名鼎鼎的ClickHouse有一定的了解了,它強(qiáng)大的數(shù)據(jù)分析性能讓人印象深刻。但在字節(jié)大量生產(chǎn)使用中,發(fā)現(xiàn)了ClickHouse依然存在了一定的限制。例如:

? 缺少完整的upsert和delete操作

? 多表關(guān)聯(lián)查詢能力弱

? 集群規(guī)模較大時(shí)可用性下降(對(duì)字節(jié)尤其如此)

? 沒(méi)有資源隔離能力

因此,我們決定將ClickHouse能力進(jìn)行全方位加強(qiáng),打造一款更強(qiáng)大的數(shù)據(jù)分析平臺(tái)。后面我們將從五個(gè)方面來(lái)和大家分享,此前為大家介紹了字節(jié)是如何為ClickHouse補(bǔ)全更新刪除能力的,本篇將詳細(xì)介紹我們是如何加強(qiáng)ClickHouse多表關(guān)聯(lián)查詢能力。

大寬表的局限

數(shù)據(jù)分析的發(fā)展歷程,可以看作是不斷追求分析效率和分析靈活的過(guò)程。分析效率是非常重要的,但是并不是需要無(wú)限提升的。1秒返回結(jié)果和1分鐘返回結(jié)果的體驗(yàn)是天壤之別,但是0.1秒返回結(jié)果和1秒返回結(jié)果的差距就沒(méi)那么大了。因此,在滿足了一定時(shí)效的情況下,分析的靈活性就顯得額外重要了。

起初,數(shù)據(jù)分析都采用了固定報(bào)表的形式,格式更新頻率低,依賴定制化的開(kāi)發(fā),查詢邏輯是寫(xiě)死的。對(duì)于業(yè)務(wù)和數(shù)據(jù)需求相對(duì)穩(wěn)定、不會(huì)頻繁變化的場(chǎng)景來(lái)說(shuō)固定報(bào)表確實(shí)就足夠了,但是以如今的視角來(lái)看,完全固定的查詢邏輯不能充分發(fā)揮數(shù)據(jù)的價(jià)值,只有通過(guò)靈活的數(shù)據(jù)分析,才能幫助業(yè)務(wù)人員化被動(dòng)為主動(dòng),探索各數(shù)據(jù)間的相關(guān)關(guān)系,快速找到問(wèn)題背后的原因,極大地提升工作效率。。

后面,基于預(yù)計(jì)算思想的cube建模方案被提出。通過(guò)將數(shù)據(jù)ETL加工后存儲(chǔ)在cube中,保證領(lǐng)導(dǎo)和業(yè)務(wù)人員能夠快速得到分析結(jié)果基礎(chǔ)上,獲得了一定的分析靈活性。不過(guò)由于維度固定,以及數(shù)據(jù)聚合后基本無(wú)法查詢明細(xì)數(shù)據(jù),依然無(wú)法滿足Adhoc這類即席查詢的場(chǎng)景需求。

近些年,以ClickHouse為代表的具備強(qiáng)大單表性能的查詢引擎,帶來(lái)了大寬表分析的風(fēng)潮。所謂的大寬表,就是在數(shù)據(jù)加工的過(guò)程中,將多張表通過(guò)一些關(guān)聯(lián)字段打平成一張寬表,通過(guò)一張表對(duì)外提供分析能力?;贑lickHouse單表性能支撐的大寬表模式,既能提升分析時(shí)效性又能提高數(shù)據(jù)查詢和分析操作的靈活性,是目前非常流行的一種模式。

然而大寬表依然有它的局限性,具體有:

? 生成每一張大寬表都需要數(shù)據(jù)開(kāi)發(fā)人員不小的工作量,而且生成過(guò)程也需要一定的時(shí)間

? 生成寬表會(huì)產(chǎn)生大量的數(shù)據(jù)冗余

剛才有提到,數(shù)據(jù)分析的發(fā)展歷程可以看作是不斷追求分析效率和分析靈活的過(guò)程,那么大寬表的下一個(gè)階段呢?如果ClickHouse的多表關(guān)聯(lián)查詢能力足夠強(qiáng),是不是連“將數(shù)據(jù)打平成寬表”這個(gè)步驟也可以省略,只需要維護(hù)好對(duì)外服務(wù)的接口,任何業(yè)務(wù)人員的需求都現(xiàn)場(chǎng)直接關(guān)聯(lián)查詢就可以了呢?

ByteHouse是如何強(qiáng)化多表關(guān)聯(lián)查詢能力的?

ClickHouse 的執(zhí)行模式相對(duì)比較簡(jiǎn)單,其基本查詢模式分為 2 個(gè)階段:

902ab146-4857-11ed-a3b6-dac502259ad0.png

ByteHouse 進(jìn)行多表關(guān)聯(lián)的復(fù)雜查詢時(shí),采用分 Stage 的方式,替換目前 ClickHouse的2階段執(zhí)行方式。將一個(gè)復(fù)雜的 Query 按照數(shù)據(jù)交換情況切分成多個(gè) Stage,Stage 和 Stage 之間通過(guò) exchange 完成數(shù)據(jù)的交換,單個(gè) Stage 內(nèi)不存在數(shù)據(jù)交換。Stage 間的數(shù)據(jù)交換主要有以下三種形式:

? 按照單(多)個(gè) key 進(jìn)行 Shuffle

? 由 1 個(gè)或者多個(gè)節(jié)點(diǎn)匯聚到一個(gè)節(jié)點(diǎn) (我們稱為 gather)

? 同一份數(shù)據(jù)復(fù)制到多個(gè)節(jié)點(diǎn)(也稱為 broadcast 或者說(shuō)廣播)

單個(gè) Stage 執(zhí)行會(huì)繼續(xù)復(fù)用 ClickHouse 的底層的執(zhí)行方式。

按照不同的功能切分不同的模塊,設(shè)計(jì)目標(biāo)如下:

各個(gè)模塊約定好接口,盡量減少彼此的依賴和耦合。一旦某個(gè)模塊有變動(dòng)不會(huì)影響別的模塊,例如 Stage 生成邏輯的調(diào)整不影響調(diào)度的邏輯。

模塊采用插件的架構(gòu),允許模塊根據(jù)配置靈活支持不同的策略。

根據(jù)數(shù)據(jù)的規(guī)模和分布,ByteHouse支持了多種關(guān)聯(lián)查詢的實(shí)現(xiàn),目前已經(jīng)支持的有:

Shuffle Join,最通用的 Join

Broadcast Join,針對(duì)大表 Join 小表的場(chǎng)景,通過(guò)把右表廣播到左表的所有 worker 節(jié)點(diǎn)來(lái)減少左表的傳輸

Colocate Join,針對(duì)左右表按照 Join key 保持相通分布的場(chǎng)景,減少左右表數(shù)據(jù)傳輸

Join 算子通常是 OLAP 引擎中最耗時(shí)的算子。如果想優(yōu)化 Join 算子,可以有兩種思路,一方面可以提升 Join 算子的性能,例如更好的 Hash Table 實(shí)現(xiàn)和 Hash 算法,以及更好的并行。另一方面可以盡可能減少參與 Join 計(jì)算的數(shù)據(jù)。

Runtime Filter 在一些場(chǎng)景特別是事實(shí)表 join 維度表的星型模型場(chǎng)景下會(huì)有比較大的效果。因?yàn)檫@種情況下通常事實(shí)表規(guī)模比較大,而大部分過(guò)濾條件都在維度表上,事實(shí)表可能要全量 join 維度表。Runtime Filter 的作用是通過(guò)在 Join 的 probe 端(就是左表)提前過(guò)濾掉那些不會(huì)命中 Join 的輸入數(shù)據(jù)來(lái)大幅減少 Join 中的數(shù)據(jù)傳輸和計(jì)算,從而減少整體的執(zhí)行時(shí)間。以下圖為例,

9044200e-4857-11ed-a3b6-dac502259ad0.png

改善后的效果

以SSB 100G測(cè)試集為例,不把數(shù)據(jù)打成大寬表的情況下,分別使用 ClickHouse 22.2.3.1版本和ByteHouse 2.0.1版本,在相同硬件環(huán)境下進(jìn)行測(cè)試。(無(wú)數(shù)據(jù)表示無(wú)法返回結(jié)果或超過(guò)60s)

90ce4702-4857-11ed-a3b6-dac502259ad0.png

可以看到大多數(shù)測(cè)試中,ClickHouse都會(huì)發(fā)生報(bào)錯(cuò)無(wú)法返回結(jié)果的情況,而B(niǎo)yteHouse能夠穩(wěn)定的在1s內(nèi)跑出結(jié)果。

只看SSB的多表測(cè)試有些抽象,下面從兩個(gè)具體的case來(lái)看一下優(yōu)化后的效果:。

Case1:Hash Join 右表為大表

經(jīng)過(guò)優(yōu)化后,query 執(zhí)行時(shí)間從17.210s降低至1.749s。

lineorder 是一張大表,通過(guò) shuffle 可以將大表數(shù)據(jù)按照 join key shuffle 到每個(gè) worker 節(jié)點(diǎn),減少了右表構(gòu)建的壓力。

SELECT
sum(LO_REVENUE)-sum(LO_SUPPLYCOST)ASprofit
FROM
customer
INNERJOIN
(
SELECT
LO_REVENUE,
LO_SUPPLYCOST,
LO_CUSTKEY
from
lineorder
WHEREtoYear(LO_ORDERDATE)=1997andtoMonth(LO_ORDERDATE)=1
)aslineorder
ONLO_CUSTKEY=C_CUSTKEY
WHEREC_REGION='AMERICA'

Case 2:5張表 Join(未開(kāi)啟runtime filter)

經(jīng)優(yōu)化后,query 執(zhí)行時(shí)間從8.583s降低至4.464s。

所有的右表可同時(shí)開(kāi)始數(shù)據(jù)讀取和構(gòu)建。為了和現(xiàn)有模式做對(duì)比,ByteHouse這里并沒(méi)有開(kāi)啟 runtime filter,開(kāi)啟 runtime filter 后效果會(huì)更快。

SELECT
D_YEAR,
S_CITY,
P_BRAND,
sum(LO_REVENUE)-sum(LO_SUPPLYCOST)ASprofit
FROMssb1000.lineorder
INNERJOIN
(
SELECTC_CUSTKEY
FROMssb1000.customer
WHEREC_REGION='AMERICA'
)AScustomerONLO_CUSTKEY=C_CUSTKEY
INNERJOIN
(
SELECT
D_DATEKEY,
D_YEAR
FROMdate
WHERE(D_YEAR=1997)OR(D_YEAR=1998)
)ASdatesONLO_ORDERDATE=toDate(D_DATEKEY)
INNERJOIN
(
SELECT
S_SUPPKEY,
S_CITY
FROMssb1000.supplier
WHERES_NATION='UNITEDSTATES'
)ASsupplierONLO_SUPPKEY=S_SUPPKEY
INNERJOIN
(
SELECT
P_PARTKEY,
P_BRAND
FROMssb1000.part
WHEREP_CATEGORY='MFGR#14'
)ASpartONLO_PARTKEY=P_PARTKEY
GROUPBY
D_YEAR,
S_CITY,
P_BRAND
ORDERBY
D_YEARASC,
S_CITYASC,
P_BRANDASC
SETTINGSenable_distributed_stages=1,exchange_source_pipeline_threads=32

經(jīng)過(guò)多表關(guān)聯(lián)查詢能力的增強(qiáng),ByteHouse能夠更加全面的支撐各類業(yè)務(wù),用戶可以根據(jù)場(chǎng)景選擇是否將數(shù)據(jù)打成大寬表,均能獲得非常良好的分析體驗(yàn)。

之所以ByteHouse在多表關(guān)聯(lián)場(chǎng)景表現(xiàn)如此出色,其中一大原因就是因?yàn)樽止?jié)自研了查詢優(yōu)化器,彌補(bǔ)了社區(qū)ClickHouse的一大不足。查詢優(yōu)化器都能帶來(lái)哪些體驗(yàn)上的優(yōu)化?字節(jié)是如何實(shí)現(xiàn)查詢優(yōu)化器的?我們會(huì)在下一期為大家詳細(xì)介紹。

ByteHouse已經(jīng)全面對(duì)外服務(wù),并且提供各種版本以滿足不同類型用戶的需求。在ByteHouse官網(wǎng)上提交試用信息即可免費(fèi)試用!

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

    關(guān)注

    90

    文章

    3716

    瀏覽量

    97184
  • 引擎
    +關(guān)注

    關(guān)注

    1

    文章

    368

    瀏覽量

    23452
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4968

    瀏覽量

    73960
  • 數(shù)據(jù)分析
    +關(guān)注

    關(guān)注

    2

    文章

    1516

    瀏覽量

    36215
  • Join
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    3537

原文標(biāo)題:火山引擎:ClickHouse增強(qiáng)計(jì)劃之“多表關(guān)聯(lián)查詢”

文章出處:【微信號(hào):芋道源碼,微信公眾號(hào):芋道源碼】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    聚合查詢與分組查詢

    Django模型層之多表操作(五)聚合查詢與分組查詢
    發(fā)表于 09-19 11:21

    多表查詢和子查詢

    多表查詢查詢
    發(fā)表于 03-06 16:14

    Centos7下如何搭建ClickHouse列式存儲(chǔ)數(shù)據(jù)庫(kù)

    查詢。不支持窗口函數(shù)和相關(guān)子查詢。按照主鍵對(duì)數(shù)據(jù)進(jìn)行排序,這將幫助ClickHouse以幾十毫秒的低延遲對(duì)數(shù)據(jù)進(jìn)行特定值查找或范圍查找。(7)向量引擎為了高效的使用CPU,數(shù)據(jù)不僅僅
    發(fā)表于 01-05 18:03

    基于多表的動(dòng)態(tài)查詢模塊設(shè)計(jì)與實(shí)現(xiàn)

    查詢是信息管理系統(tǒng)中使用涉及用戶最多使用最頻繁的功能。為了提高用戶查詢的靈活性與查詢效率,設(shè)計(jì)了基于多表的動(dòng)態(tài)查詢模塊,使得用戶可以自己選擇
    發(fā)表于 04-20 10:13 ?25次下載
    基于<b class='flag-5'>多表</b>的動(dòng)態(tài)<b class='flag-5'>查詢</b>模塊設(shè)計(jì)與實(shí)現(xiàn)

    火山引擎視頻云科技原力峰會(huì)于2月25日順利召開(kāi)

    2月25日,火山引擎視頻云科技原力峰會(huì)順利召開(kāi)。 火山引擎視頻云是如何發(fā)展起來(lái)的?火山引擎要做什
    的頭像 發(fā)表于 03-02 14:30 ?1590次閱讀
    <b class='flag-5'>火山</b><b class='flag-5'>引擎</b>視頻云科技原力峰會(huì)于2月25日順利召開(kāi)

    火山引擎ClickHouse增強(qiáng)計(jì)劃“Upsert”

    性能下降嚴(yán)重,ReplacingMergeTree采用的是寫(xiě)優(yōu)先的設(shè)計(jì)邏輯,這導(dǎo)致讀性能損失嚴(yán)重。表現(xiàn)是在進(jìn)行查詢時(shí)性能較ClickHouse其他引擎的性能下降嚴(yán)重,涉及ReplacingMergeTree的
    的頭像 發(fā)表于 09-22 14:26 ?2454次閱讀

    ClickHouse增強(qiáng)計(jì)劃“資源隔離”

    ClickHouse的資源管控能力不夠完善,在 insert、select 并發(fā)高的場(chǎng)景下會(huì)導(dǎo)致執(zhí)行失敗,影響用戶體驗(yàn)。這是因?yàn)樯鐓^(qū)版ClickHouse目前僅提供依據(jù)不同用戶的最大內(nèi)存控制,在超過(guò)閾值時(shí)會(huì)殺死執(zhí)行的 query。
    的頭像 發(fā)表于 11-07 10:25 ?1555次閱讀

    如何使用原生ClickHouse函數(shù)和表引擎在兩個(gè)數(shù)據(jù)庫(kù)之間遷移數(shù)據(jù)

    展示如何使用 Postgres 表引擎將分析查詢的結(jié)果從 ClickHouse 推回 Postgres。當(dāng)用戶需要在終端用戶應(yīng)用程序中顯示匯總數(shù)據(jù),但又
    的頭像 發(fā)表于 05-26 11:38 ?1592次閱讀
    如何使用原生<b class='flag-5'>ClickHouse</b>函數(shù)和表<b class='flag-5'>引擎</b>在兩個(gè)數(shù)據(jù)庫(kù)之間遷移數(shù)據(jù)

    英特爾助力火山引擎 推動(dòng)數(shù)據(jù)飛輪加速運(yùn)轉(zhuǎn)

    驅(qū)動(dòng)的新范 會(huì)上,火山引擎提出了數(shù)據(jù)驅(qū)動(dòng)的新范式——數(shù)據(jù)飛輪。針對(duì)以往企業(yè)“有數(shù)據(jù),但不驅(qū)動(dòng)”的問(wèn)題,數(shù)據(jù)飛輪以數(shù)據(jù)消費(fèi)為核心,使企業(yè)數(shù)據(jù)流充分融入業(yè)務(wù)流,增強(qiáng)業(yè)務(wù)發(fā)展動(dòng)力。 如今,大模型技術(shù)的發(fā)展,將為數(shù)據(jù)飛輪帶來(lái)新的升級(jí)。通
    的頭像 發(fā)表于 10-13 21:10 ?1554次閱讀
    英特爾助力<b class='flag-5'>火山</b><b class='flag-5'>引擎</b> 推動(dòng)數(shù)據(jù)飛輪加速運(yùn)轉(zhuǎn)

    sql關(guān)聯(lián)查詢中的主表和從表

    SQL關(guān)聯(lián)查詢是數(shù)據(jù)庫(kù)中非常重要的一項(xiàng)操作,用于聯(lián)合多個(gè)表中的數(shù)據(jù),并根據(jù)指定的條件進(jìn)行篩選和整合,從而得到更加豐富和準(zhǔn)確的結(jié)果集。在關(guān)聯(lián)查詢中,主表和從表起著不同的作用,通過(guò)合理的關(guān)聯(lián)方式和條件
    的頭像 發(fā)表于 11-23 11:41 ?2312次閱讀

    ClickHouse內(nèi)幕(3)基于索引的查詢優(yōu)化

    ClickHouse索引采用唯一聚簇索引的方式,即Part內(nèi)數(shù)據(jù)按照order by keys有序,在整個(gè)查詢計(jì)劃中,如果算子能夠有效利用輸入數(shù)據(jù)的有序性,對(duì)算子的執(zhí)行性能將有巨大的提升。本文討論
    的頭像 發(fā)表于 06-11 10:46 ?1778次閱讀
    <b class='flag-5'>ClickHouse</b>內(nèi)幕(3)基于索引的<b class='flag-5'>查詢</b>優(yōu)化

    火山引擎推出豆包·視頻生成模型

    在近期舉辦的2024火山引擎AI創(chuàng)新巡展上,火山引擎總裁譚待隆重推出了豆包·視頻生成模型,這一舉措標(biāo)志著火山
    的頭像 發(fā)表于 09-25 14:11 ?1024次閱讀

    中科創(chuàng)達(dá)與火山引擎達(dá)成深度合作

    近日,中科創(chuàng)達(dá)與火山引擎在成都盛美利亞酒店隆重舉行深度合作簽署儀式。火山引擎汽車行業(yè)總經(jīng)理?xiàng)盍?、中科?chuàng)達(dá)執(zhí)行總裁常衡生見(jiàn)證簽約,火山
    的頭像 發(fā)表于 11-04 14:34 ?1147次閱讀

    什么是AI查詢引擎

    AI 查詢引擎可高效處理、存儲(chǔ)和檢索大量數(shù)據(jù),以增強(qiáng)生成式 AI 模型的輸入。
    的頭像 發(fā)表于 01-10 10:00 ?2774次閱讀

    賽思×字節(jié)跳動(dòng) 高精度同步時(shí)鐘助力火山引擎打造“云上新宇宙”

    摘要: 賽思同步時(shí)鐘將對(duì)火山引擎長(zhǎng)三角算力中心進(jìn)行從基礎(chǔ)設(shè)施到業(yè)務(wù)引擎的全方位賦能,助力字節(jié)跳動(dòng)旗下火山引擎打造“云上新宇宙”。
    的頭像 發(fā)表于 03-28 09:11 ?879次閱讀
    賽思×字節(jié)跳動(dòng)  高精度同步時(shí)鐘助力<b class='flag-5'>火山</b><b class='flag-5'>引擎</b>打造“云上新宇宙”