99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

火山引擎:ClickHouse增強計劃之“Upsert”

倩倩 ? 來源:芋道源碼 ? 作者:芋道源碼 ? 2022-09-22 14:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

? 缺少完整的upsert和delete操作

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

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

? 沒有資源隔離能力

因此,我們決定將ClickHouse能力進行全方位加強,打造一款更強大的數(shù)據(jù)分析平臺。后面我們將從五個方面來和大家分享,本篇將詳細介紹我們是如何為ClickHouse補全更新刪除能力的。

實時人群圈選場景遇到的難題

在電商業(yè)務中,人群圈選是非常常見的一個場景。字節(jié)原有的離線圈選的方案是以T+1的方式更新數(shù)據(jù),而不是實時更新,這很影響業(yè)務側(cè)的體驗?,F(xiàn)在希望能夠基于實時標簽,在數(shù)據(jù)管理平臺中構(gòu)建實時人群圈選的能力。整體數(shù)據(jù)鏈路如下:

3b2cc968-3a3d-11ed-9e49-dac502259ad0.png

為了保證實時數(shù)據(jù)和離線數(shù)據(jù)同時提供服務,在標簽接入完畢后,在ClickHouse中完成寬表加工任務。但是原生ClickHouse只支持追加寫的能力,只有ReplacingMergeTree這種方案。但是選用ReplacingMergeTree引擎的限制比較多,不能滿足業(yè)務的需求,主要體現(xiàn)在:

? 性能下降嚴重,ReplacingMergeTree采用的是寫優(yōu)先的設計邏輯,這導致讀性能損失嚴重。表現(xiàn)是在進行查詢時性能較ClickHouse其他引擎的性能下降嚴重,涉及ReplacingMergeTree的查詢響應時間過慢。

? ReplacingMergeTree引擎只支持數(shù)據(jù)的更新,并不支持數(shù)據(jù)的刪除。只能通過CollaspingMergeTree來實現(xiàn)數(shù)據(jù)清除,通過不同的表引擎分別提供更新刪除能力會讓系統(tǒng)復雜度進一步提升。

? ReplacingMergeTree中的去重是 Merge 觸發(fā)的,在剛導入的數(shù)據(jù)時是不去重的,過一段時間后才會在分區(qū)內(nèi)去重。

ByteHouse的解決方案:UniqueMergeTree

在這種情況下,字節(jié)在ByteHouse(火山引擎上基于ClickHouse能力增強的版本)中開發(fā)了一種支持實時更新刪除的表引擎:UniqueMergeTree。UniqueMergeTree與以往的表引擎有什么差別呢?下面介紹兩種支持實時更新的常見技術(shù)方案:

原生ClickHouse選擇的技術(shù)方案

原生ClickHouse的更新表引擎ReplacingMergeTree使用Merge on Read的實現(xiàn)邏輯,整個思想比較類似LSMTree。對于寫入,數(shù)據(jù)先根據(jù)key排序,然后生成對應的列存文件。每個Batch寫入的文件對應一個版本號,版本號能用來表示數(shù)據(jù)的寫入順序。

同一批次的數(shù)據(jù)不包含重復key,但不同批次的數(shù)據(jù)包含重復key,這就需要在讀的時候去做合并,對key相同的數(shù)據(jù)返回去最新版本的值,所以叫merge on read方案。原生ClickHouse ReplacingMergeTree用的就是這種方案。

大家可以看到,它的寫路徑是非常簡單的,是一個很典型的寫優(yōu)化方案。它的問題是讀性能比較差,有幾方面的原因。首先,key-based merge通常是單線程的,比較難并行。其次merge過程需要非常多的內(nèi)存比較和內(nèi)存拷貝。最后這種方案對謂詞下推也會有一些限制。大家用過ReplacingMergeTree的話,應該對讀性能問題深有體會。

這個方案也有一些變種,比如說可以維護一些index來加速merge過程,不用每次merge都去做key的比較。

面向讀優(yōu)化的新方案

UniqueMergeTree使用的技術(shù)方案Mark-Delete + Insert方案剛好反過來,是一個讀優(yōu)化方案。在這個方案中,更新是通過先刪除再插入的方式實現(xiàn)的。

3b620326-3a3d-11ed-9e49-dac502259ad0.png

Ref “Enhancements to SQLServer Column Stores”

下面以SQLServer的Column Stores為例介紹下這個方案。圖中,每個RowGroup對應一個不可變的列存文件,并用Bitmap來記錄每個RowGroup中被標記刪除的行號,即DeleteBitmap。處理更新的時候,先查找key所屬的RowGroup以及它在RowGroup中行號,更新RowGroup的DeleteBitmap,最后將更新后的數(shù)據(jù)寫入Delta Store。查詢的時候,不同RowGroup的掃描可以完全并行,只需要基于行號過濾掉屬于DeleteBitmap的數(shù)據(jù)即可。

這個方案平衡了寫和讀的性能。一方面寫入時需要去定位key的具體位置,另一方面需要處理write-write沖突問題。

這個方案也有一些變種。比如說寫入時先不去查找更新key的位置,而是先將這些key記錄到一個buffer中,使用后臺任務將這些key轉(zhuǎn)成DeleteBitmap。然后在查詢的時候通過merge on read的方式處理buffer中的增量key。

Upsert和Delete使用示例

首先我們建了一張UniqueMergeTree的表,表引擎的參數(shù)和ReplacingMergeTree是一樣的,不同點是可以通過UNIQUE KEY關(guān)鍵詞來指定這張表的唯一鍵,它可以是多個字段,可以包含表達式等等。

3b8a6fd2-3a3d-11ed-9e49-dac502259ad0.png

下面對這張表做寫入操作就會用到upsert的語義,比如說第6行寫了四條數(shù)據(jù),但只包含1和2兩個key,所以對于第7行的select,每個key只會返回最高版本的數(shù)據(jù)。對于第11行的寫入,key 2是一個已經(jīng)存在的key,所以會把key 2對應的name更新成B3; key 3是新key,所以直接插入。最后對于行刪除操作,我們增加了一個delete flag的虛擬列,用戶可以通過這個虛擬列標記Batch中哪些是要刪除,哪些是要upsert。

UniqueMergeTree表引擎的亮點

? 對于Unique表的寫入,我們會采用upsert的語義,即如果寫入的是新key,那就直接插入數(shù)據(jù);如果寫入的key已經(jīng)存在,那就更新對應的數(shù)據(jù)。

? UniqueMergeTree表引擎既支持行更新的模式,也支持部分列更新的模式,用戶可以根據(jù)業(yè)務要求開啟或關(guān)閉。

? ByteHouse也支持指定Unique Key的value來刪除數(shù)據(jù),滿足實時行刪除的需求。支持指定一個版本字段來解決回溯場景可能出現(xiàn)的低版本數(shù)據(jù)覆蓋高版本數(shù)據(jù)的問題。

? 最后ByteHouse也支持數(shù)據(jù)在多副本的同步,避免整體系統(tǒng)存在單點故障。

在性能方面,我們對UniqueMergeTree的寫入和查詢性能做了性能測試,結(jié)果如下圖(箭頭前是ReplacingMergeTree的消耗時間,箭頭后是UniqueMergeTree的消耗時間)。

3ba2f660-3a3d-11ed-9e49-dac502259ad0.png

可以看到,與ReplacingMergeTree相比,UniqueMergeTree的寫入性能雖然略有下降,但在查詢性能上取得了數(shù)量級的提升。我們進一步對比了UniqueMergeTree和普通MergeTree的查詢性能,發(fā)現(xiàn)兩者是非常接近的。

增強后的實施人群圈選

經(jīng)過UniqueMergeTree的加持,在原有架構(gòu)不變的情況下,完美的滿足了實時人群圈選場景的要求。

1、通過Unique Key配置唯一鍵,提供upsert更新寫語義,查詢自動返回每個唯一鍵的最新值

2、性能:單shard寫入吞吐可以達到10k+行/s;查詢性能與原生CH表幾乎相同

3、支持根據(jù)Unique Key實時刪除數(shù)據(jù)

此外,ByteHouse還通過UniqueMergeTree支持了一些其他特性:

1、唯一鍵支持多字段和表達式

2、支持分區(qū)級別唯一和表級別唯一兩種模式

3、支持自定義版本字段,寫入低版本數(shù)據(jù)時自動忽略

4、支持多副本部署,通過主備異步復制保障數(shù)據(jù)可靠性

不僅在實時人群圈選場景,ByteHouse提供的upsert能力已經(jīng)服務于字節(jié)內(nèi)部眾多應用,線上應用的表數(shù)量有數(shù)千張,受到實時類應用的廣泛歡迎。

除Upsert能力外,ByteHouse在為原生ClickHouse的企業(yè)級能力進行了全方位的增強。下一期,我們將介紹ClickHouse增強計劃之“多表關(guān)聯(lián)查詢”,大家有興趣一定不要錯過。

審核編輯 :李倩

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

    關(guān)注

    1

    文章

    366

    瀏覽量

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

    關(guān)注

    2

    文章

    1473

    瀏覽量

    35044
  • key
    key
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    13089

原文標題:火山引擎:ClickHouse增強計劃之“Upsert”

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

    機智云亮相2025春季火山引擎FORCE原動力大會

    在 2025 年字節(jié)跳動火山引擎 Force 春季原動力大會上,作為 AIoT 領域的創(chuàng)新先鋒,機智云以火山引擎與扣子智能體核心AI生態(tài)合作伙伴身份重磅亮相,憑借基于
    的頭像 發(fā)表于 06-23 09:16 ?460次閱讀

    中科創(chuàng)達亮相2025春季火山引擎FORCE原動力大會

    近日,2025春季火山引擎FORCE原動力大會于北京舉行。作為火山引擎合作伙伴,中科創(chuàng)達受邀攜創(chuàng)新成果亮相。大會AI生態(tài)專場上,中科創(chuàng)達副總裁楊新輝發(fā)表《最后一公里》主題演講,深度解析
    的頭像 發(fā)表于 06-18 11:37 ?581次閱讀

    廣和通出席2025春季火山引擎FORCE原動力大會

    此前,6月11日至12日,由火山引擎主辦的2025 FORCE原動力大會·春在北京盛大舉行。作為火山引擎重要合作伙伴,廣和通攜AI解決方案,展現(xiàn)其在汽車座艙、餐飲服務、AI玩具、隨身算
    的頭像 發(fā)表于 06-17 09:17 ?465次閱讀

    聯(lián)想攜手火山引擎為中國消費者和企業(yè)打造安全可信的AI新未來

    近日,2025火山引擎FORCE春季原動力大會在京舉辦。聯(lián)想集團執(zhí)行副總裁兼中國區(qū)總裁劉軍通過視頻發(fā)表演講,首度透露與火山引擎聯(lián)合打造的聯(lián)想“可信混合計算方案”。他表示,該方案使得天禧
    的頭像 發(fā)表于 06-14 09:49 ?619次閱讀

    機智云出席火山引擎AIoT智變浪潮高峰論壇

    近日,在火山引擎主辦的“AIoT智變浪潮”高峰論壇上,機智云作為火山引擎的重要合作伙伴受邀出席并展示了最新的AI+IoT技術(shù)產(chǎn)品。憑借深厚的行業(yè)積累與技術(shù)實力,機智云與諸多AI硬件領域
    的頭像 發(fā)表于 04-08 14:10 ?404次閱讀

    移遠通信攜手火山引擎:加速AI大模型技術(shù)應用,共繪AIoT智能未來新藍圖

    4月2日,移遠通信受邀參加火山引擎聯(lián)合英特爾在深圳舉辦的“AIoT智變浪潮”技術(shù)沙龍。活動以“大模型+音視頻,如何驅(qū)動AI硬件體驗革新”為主題,眾多行業(yè)大咖齊聚一堂,圍繞硬件智能升級面臨的挑戰(zhàn)、對話
    的頭像 發(fā)表于 04-02 19:02 ?710次閱讀
    移遠通信攜手<b class='flag-5'>火山</b><b class='flag-5'>引擎</b>:加速AI大模型技術(shù)應用,共繪AIoT智能未來新藍圖

    賽思×火山引擎 | 高精度同步時鐘助力字節(jié)跳動華東地區(qū)首個算力中心落地

    賽思同步時鐘全方位賦能火山引擎長三角算力中心,助力字節(jié)跳動火山引擎打造“云上新宇宙”。
    的頭像 發(fā)表于 03-31 14:44 ?513次閱讀
    賽思×<b class='flag-5'>火山</b><b class='flag-5'>引擎</b> | 高精度同步時鐘助力字節(jié)跳動華東地區(qū)首個算力中心落地

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

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

    聆思CSK6大模型語音開發(fā)板接入DeepSeek資料匯總(包含深度求索/火山引擎/硅基流動華為昇騰滿血版)

    調(diào)用DeepSeek節(jié)點,最終將大模型輸出的結(jié)果進行語音合成實現(xiàn)端側(cè)播報 下載工程模板導入,配置參數(shù)后綁定開發(fā)板ID即可。 關(guān)鍵參數(shù)說明(以火山引擎版為例): HOST
    發(fā)表于 03-06 17:02

    涂鴉智能與火山引擎達成重磅合作,億元補貼全力構(gòu)建AIoT開發(fā)者生態(tài)

    場景應用落地。 同時,為助力AI硬件開發(fā)者進一步創(chuàng)新,涂鴉智能結(jié)合豆包大模型的語言、語音、視頻等能力,推出了行業(yè)首個面向AIoT開發(fā)者的億元補貼計劃,為其提供開發(fā)支持、營銷資源及流量扶持等全方位舉措。 【簽約現(xiàn)場】 本次合作,涂鴉與火山
    的頭像 發(fā)表于 02-28 09:01 ?324次閱讀
    涂鴉智能與<b class='flag-5'>火山</b><b class='flag-5'>引擎</b>達成重磅合作,億元補貼全力構(gòu)建AIoT開發(fā)者生態(tài)

    英特爾與火山引擎等合作,夯實AI應用智能底座

    在近期舉辦的火山引擎2024 FORCE原動力大會上,英特爾攜手火山引擎及扣子Coze等生態(tài)伙伴,共同展示了在智能計算領域的最新合作成果。 會上,英特爾與
    的頭像 發(fā)表于 12-25 11:47 ?943次閱讀

    中科創(chuàng)達攜手火山引擎開啟AI智能座艙新體驗

    12月18日至19日,"2024火山引擎FORCE原動力大會·冬"在上海隆重召開。中科創(chuàng)達作為火山引擎的重要生態(tài)合作伙伴受邀參與此次盛會,并在會上展示了與
    的頭像 發(fā)表于 12-19 15:45 ?833次閱讀

    英特爾與火山引擎飛連攜手升級AI時代企業(yè)IT管理體驗

    在 AI 技術(shù)的推動下,企業(yè) IT 管理正經(jīng)歷一場革命。日前,火山引擎飛連新品發(fā)布會成功舉辦。英特爾受邀參與此次活動,并在會上展示了新一代英特爾凌動 x7000 系列處理器等產(chǎn)品,與火山引擎
    的頭像 發(fā)表于 11-14 17:17 ?947次閱讀

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

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

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

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