陳長城:NineData面向Doris實時數倉集成的技術實踐

来源:https://www.cnblogs.com/ninedata/archive/2023/11/17/17838133.html
-Advertisement-
Play Games

在剛剛過去的北京Doris Summit Asia 2023,玖章算術技術副總裁陳長城受邀參加並做了《NineData面向Doris實時數倉集成的技術實踐》報告。 ...


在剛剛過去的北京Doris Summit Asia 2023,玖章算術技術副總裁陳長城受邀參加並做了《NineData面向Doris實時數倉集成的技術實踐》報告。

玖章算術技術副總裁陳長城

多雲多源企業數據管理的挑戰

從業界的報告中我們知道超過81%的企業使用了多雲或混合雲架構,超過70%的企業使用了多種數據類型,而對基礎架構、數據架構運用嫻熟的企業其創新速度遠高於同行。當然多雲多源也帶來了很多挑戰,導致基礎架構管理複雜、數據孤島、開發效率下降等挑戰增加。

面向這些問題,玖章算術研發了NineData雲原生智能數據管理平臺,底層基於統一數據源和IaaS層抽象,對接各個雲廠商和多種數據源,基於之上建立了數據複製、數據對比、SQL開發、數據備份四大功能模塊,並與企業的托管資料庫PaaS、搜索平臺、消息隊列和大數據平臺形成良好的互動,幫助企業實現多雲多源統一的數據管理能力。

NineData數據管理平臺架構圖

雲原生數據複製架構

在多雲多源下的數據集成,企業面臨多種數據源的數據抽取、多雲廠商數據互通的需求,對於多數據中心和出海企業,也必然面臨跨地域長周期的數據同步的挑戰。NineData認為一個雲原生的數據複製架構,需要具備四個特征

(1)Scalable(可擴展性,實現多種數據源快速接入)

(2)Resilient(適配各種環境,各廠商和複雜的網路環境)

(3)Manageable(可管理性,大量環境和鏈路管理及一致性對比)

(4)Observable(可觀測可干預)

NineData在多雲方面的目標是實現AnyWhere、AnyNetwork、AnyDatabase的資料庫接入和管理能力,通過統一的控制台,幫助用戶管理各個地方的數據源。NineData的worker會部署到離用戶最近的地方,實現數據鏈路在本地運行,而任務狀態彙報到中心控制台的架構。worker可以通過私網VPC或公網與用戶數據源打通,對於資料庫不暴露公網的可以使用NineData資料庫網關實現本地接入,遠程複製和管理。同時NineData也支持金融企業客戶的專屬集群部署需求。

NineData雲原生數據複製架構

在多數據源方面,NineData通過統一數據源的抽象,將資料庫連接屬性、賬密、連接池管理、網路連接方式等統一管理起來,一個數據源註冊完後,就可以使用NineData提供的所有功能,包括SQL開發、數據複製、數據對比、數據備份等。

實時數倉Doris數據集成實踐

NineData在實時數倉Doris數據集成實踐上, 重點圍繞一致性、高吞吐、低延遲、可觀測可干預這幾個方面,當前NineData已經支持了60多種數據源。在數倉實時數據集成中,我們會考慮到這幾個方面:

(1)DDL自適應,實現結構遷移初始化,以及後續新的增量DDL的自動同步。對於Doris,其結構和MySQL相容性比較高,主要是對distribute key自適應和跨庫CREATE TABLE LIKE的相容,distribute key的選擇NineData會自動按主鍵、唯一鍵的順序自動填充,也允許用戶下拉指定,來達到順暢的體驗。

(2)數據類型映射,包括數據類型映射(如BIGINT UNSIGNED -> LARGEINT等),字元集映射(Doris主要是utf8),以及當多個地域不同時區的生產庫匯聚到Doris 時,需要做時區自適應。

(3)數據ETL轉換,當使用MySQL同步到Doris時,我們希望表結構原樣同步過來,其實更多的是ETL,先保障數據快速、準確、穩定的持續同步過來,再基於這些原始數據ODS之上去構建數倉的維表、物化視圖等。但生產庫也會有一些數據是不需要同步到數倉的,因此需要過濾掉、或者做一些簡單的計算和標記再同步到數倉,這個就是EtLT。

(4)提交性能,這個是數倉集成大家普遍關註的,後面將單獨介紹。

下麵分別介紹幾個實踐中的要點:

3.1 一致性

在做實時日誌CDC的時候,其實要把數據正確解析出來,需要兩個部分。以MySQL為例,你需要拿到資料庫的binlog日誌(裡面包含數據前後鏡像),同時拿到MySQL產生這條日誌那一刻的表結構,才能正確地拼出響應的DML語句。因此在DML/DDL混合執行的時候,正確地拿到那一刻的表結構就比較困難,而這在生產庫中經常遇見。因此NineData實現了一個DDLParser,將每一條DDL日誌在同步模塊中模擬MySQL的DDL執行,更新同步模塊中的Meta緩存,並實現了版本化存儲。這樣就可以獲得每張表任意時刻的表結構元數據。

NineData的數據一致性

3.2 高吞吐

全量同步性能是數倉集成比較重要的地方,往往涉及到多個數據源往一個數倉同步數據,NineData的工作包括以下三個部分:

(1)在全量同步數據到Doris的過程中,由於生產庫存在多張大小不一樣的表,如果有很多小表和1-2張大表的情況下,就容易出現小表都同步完了,最後幾張大表一直沒有完成。因此我們要進行單表併發切片,並且保障切片足夠均勻,才能最大化使用併發度讓大家同時完成。NineData會根據表的主鍵、唯一鍵、非空索引等順序進行切片,同時做到切片粒度的斷點續傳。

(2)在記憶體方面針對全量同步這種一過性數據場景對JVM記憶體進行優化。

(3)進行批量提交合併,同時針對Doris的特點,進行Stream模型的全量和增量寫入,在實測中30併發能夠跑到209MB/S、88W RPS的性能。

3.3 低延時

NineData從多個維度建設,以實現低延時能力。包括鏈路中熱點更新數據合併、表級別的安全位點減少數據回退,雲原生RDS備份日誌自動回拉,主動運維時的優雅退出(clean shutdown)等能力,以保障運行中的鏈路最小受到各種情況造成的延時影響。

3.4 鏈路內置ETL能力

包括對象名映射(庫、表、列名均支持名稱映射)、數據過濾(如支持通過配置SQL Expression,使用函數計算和過濾數據示例:gmt_create>=‘2019-09-09 11:11:11)、操作類型過濾(如支持通過配置增量複製需要複製的操作類型,細粒度控制複製操作,示例:只複製Insert/Delete/Update/Create Table/Alter Table,其他操作都不需要)。

3.5 可擴展性

數倉集成涉及的數據源眾多,為了方便支持擴展更多的數據源,我們對結構轉換、數據轉換做了中間數據類型的抽象,能夠做到多源異構的快速轉換,同時抽象了複製框架,基於複製框架進行插件化開發可以實現新數據源的快速接入。

NineData數據管理平臺架構圖

3.6 可觀測可干預

(1)數據對比作為NineData重點建設的功能,對數倉集成複製的數據一致性有很好的觀測能力。NineData全量對比會將計算下推以減少資料庫網路消耗並提升性能,支持限流保護生產庫。快速對比會對數據的行數、MAX、MIN、AVG取值以更準確判斷數據一致性。

NineData數據對比功能

在結果呈現上,NineData會將每一行每個欄位的不一致部分以顏色標記出來,並生成訂正SQL。

NineData支持智能校驗數據並生成訂正SQL

(2)在傳統監控告警之外,NineData做了兩個有特色的功能,一個是在同步模塊運行中,可以查看每個線程當前在提交什麼SQL,比如遇到DDL特別慢,當前已經執行了多少時間。另一個是針對每一個正在複製的命令,如果拋錯了,允許客戶進行SQL語句級別的修改和重試,或跳過,快速干預和恢復鏈路。

NineData的可觀測可干預能力

典型業務場景和技術展望

我們認為,在多雲多源的背景下,隨著雲原生數倉的快速發展,只有雲原生化的實時數據集成能夠適應時代的要求,能夠快速提供各個廠商、各種數據類型的快速匯聚,具備按需使用,即開即用的特性。

實時數據集成技術趨勢

Metadata-Driven能夠將企業多種數據源統一管理,構建統一的元數據和數據目錄,讓企業有個完整的數據生產資料視角也特別重要。NineData的SQL開發能夠幫助企業補充這部分能力。同時,傳統先建數據中台進行大數據集中,再考慮產出效果的方式無法滿足企業的需要,Purpose-Driven更多受到企業用戶的喜歡,讓用戶的數倉集成投入有明確的目標效果預估。通過提前構建聯邦查詢或邏輯視圖,預覽數倉集成後的報表效果,以及評估相關鏈路和存儲成本,再進行投入。而且實時數據集成平臺應該提供自助化的服務讓用戶進行嘗試和決策。

隨著當下AIGC能力的發展,我們相信大模型在幫助企業進行數據管理的智能輔助方面有不錯的應用前景。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一:背景 1. 講故事 這些天計劃好好研究下tcp/ip,以及socket套接字,畢竟工控中設計到各種交互協議,如果只是模模糊糊的瞭解,對分析此類dump還是非常不利的,而研究協議最好的入手點就是用抓包工具 wireshark,廢話不多說,這篇通過 wireshark 提取一個小圖片作為入手。 二: ...
  • 慎用遞歸 起因: 在學習Rust的時候,有一道語法練習題是計算斐波那契數列的第N項的值,這是一道非常簡單的題,但是引發了一個使用遞歸性能問題,考慮到用Rust的人不多,後面的代碼都是C#的,因為C#的語法更大眾一些,更好看懂 第一次解 public static ulong FibonacciNum ...
  • 什麼是Keyed service Keyed service是指,為一個需要註入的服務定義一個Key Name,並使用使用Key Name檢索依賴項註入 (DI) 服務的機制。 使用方法 通過調用 AddKeyedSingleton (或 AddKeyedScoped 或 AddKeyedTrans ...
  • 這是我打的第一次比賽,主打的pwn方向,紀念我的成長 需求:一定的linux系統的命令指令知識,基礎的彙編代碼,配置好了的虛擬機(打pwn建議是ubuntu),pwntools的使用,python的使用,ROPgadget的使用 每次把文件拖入IDA前記得用Exeinfope進行檢查一下,看是x86 ...
  • 一、簡介 1.1 Mongodb MongoDb是一個基於分散式文件存儲的資料庫,官方地址 https://www.mongodb.com/ 1.2 資料庫 資料庫(DataBase)是按照數據結構來組織、存儲和管理數據的應用程式。 作用:資料庫的主要作用就是管理數據,對數據進行增(c)、刪(d)、 ...
  • SELECT 關鍵字 SQL的SELECT語句用於從資料庫中選擇數據。SELECT語句的基本語法如下: SELECT column1, column2, ... FROM table_name; 其中,column1, column2,等是您要從表中選擇的欄位名稱,而table_name是您要選擇數 ...
  • 使用Redis Enterprise與Oracle共同用作企業級緩存或副本資料庫,Oracle與Redis Enterprise合作,解決了使用Oracle時的問題。Redis Enterprise提供實時性能、降低成本、解除數據限制,並與Oracle協同工作,用作記憶體資料庫或緩存,提升性能和現代化... ...
  • 近日,2023金融街論壇年會在北京成功舉辦。由華為雲GaussDB參與支持的工商銀行傳統集中式資料庫平滑遷移解決方案和華夏銀行借記卡系統分散式資料庫改造創新研究與實踐,均獲得“十佳卓越實踐獎”。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...