陳長城: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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...