陳長城: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
  • 當使用Autofac處理一個介面有多個實現的情況時,通常會使用鍵(key)進行區分或者通過IIndex索引註入,也可以通過IEnumerable集合獲取所有實例,以下是一個具體的例子,演示如何在Autofac中註冊多個實現,並通過構造函數註入獲取指定實現。 首先,確保你已經安裝了Autofac Nu ...
  • 本篇將分享Prometheus+Grafana的監控平臺搭建,並監控之前文章所搭建的主機&服務,分享日常使用的一些使用經驗本篇將配置常用服務的監控與面板配置:包括 MySQL,MongoDB,CLickHouse,Redis,RabbitMQ,Linux,Windows,Nginx,站點訪問監控,已... ...
  • 使用Aspirate可以將Aspire程式部署到Kubernetes 集群 工具安裝 dotnet tool install -g aspirate --prerelease 註意:Aspirate 正在開發中,該軟體包將作為預覽版進行版本控制,--prelease 選項將獲得最新的預覽版。 容器註 ...
  • 前言 本文要說的這種開發模式,這種模式並不是只有blazor支持,js中有一樣的方案next.js nuxt.js;blazor還有很多其它內容,本文近關註漸進式開發模式。 是的,前後端是主流,不過以下情況也許前後端分離並不是最好的選擇: 小公司,人員不多,利潤不高,創業階段能省則省 個人開發者,接 ...
  • 在.NET中,Microsoft.Extensions.Logging是一個靈活的日誌庫,它允許你將日誌信息記錄到各種不同的目標,包括資料庫。在這個示例中,我將詳細介紹如何使用Microsoft.Extensions.Logging將日誌保存到MySQL資料庫。我們將使用Entity Framewo ...
  • chatgpt介面開發筆記3: 語音識別介面 1.文本轉語音 1、瞭解介面參數 介面地址: POST https://api.openai.com/v1/audio/speech 下麵是介面文檔描述內容: 參數: { "model": "tts-1", "input": "你好,我是饒坤,我是ter ...
  • 前面兩篇文章主要是介紹瞭如何解決高併發情況下資源爭奪的問題。但是現實的應用場景中除了要解決資源爭奪問題,高併發的情況還需要解決更多問題,比如快速處理業務數據等, 本篇文章簡要羅列一下與之相關的更多技術細節。 1、非同步編程:使用async和await關鍵字進行非同步編程,這可以避免阻塞線程,提高程式的響 ...
  • 大家好,我是棧長。 Nacos 2.3.0 前幾天正式發佈了,新增了不少實用性的新功能,真是史上最強版本。 Nacos 2.3.0 還真是一個比較重要的大版本,因為它涉及了太多重大更新,今天棧長給大家來解讀下。 Nacos 先掃個盲: Nacos 一個用於構建雲原生應用的動態服務發現、配置管理和服務 ...
  • IDEA的遠程開發功能,可以將本地的編譯、構建、調試、運行等工作都放在遠程伺服器上執行,而本地僅運行客戶端軟體進行常規的開發操作即可,舊版本IDEA目前不支持該功能.,本例使用的是IDEA2023.2.5版本 下麵介紹如何在IDEA中設置遠程連接伺服器開發環境並結合Cpolar內網穿透工具實現無公網 ...
  • 本文解釋為啥會有響應式編程,為什麼它在開發者中不太受歡迎,以及引入 Java 虛擬線程後它可能最終會消失。 命令式風格編程一直深受開發者喜愛,如 if-then-else、while 迴圈、函數和代碼塊等結構使代碼易理解、調試,異常易追蹤。然而,像所有好的東西一樣,通常也有問題。這種編程風格導致線程 ...