在剛剛過去的北京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能力的發展,我們相信大模型在幫助企業進行數據管理的智能輔助方面有不錯的應用前景。