數據集成產品分析(一)

zmL
3 評論 9262 瀏覽 65 收藏 12 分鐘

編輯導語:數據集成產品是數據中臺建設的第一環節,在構建數據中臺或大數據系統時,首先要將企業內部各個業務系統的數據實現互聯互通,從物理上打破數據孤島。本文作者對數據集成產品進行了分析,一起來看一下吧。

數據集成產品致力于異構數據源之間的數據交換與匯聚,該類產品是數據中臺建設的第一環節,筆者將通過兩篇文章對數據集成產品進行分析。

數據同步,又稱為數據集成、數據遷移,主要用于實現不同系統間的數據流轉。

為什么會有數據同步這類產品?

在企業中,業務的快速發展產生了大量數據,也催生出多種應用系統,各系統承載不同類型的數據,對應著不同的數據存儲方式。

而對于構建數據中臺或大數據系統,首先需要將企業內部各個業務系統的數據實現互聯互通,從物理上打破數據孤島,而這主要通過數據匯聚和同步的能力來實現。

數據同步方式有多種:API接口同步、數據文件同步和數據庫日志解析同步,適用于不同的業務場景。

本次分享的數據同步是基于數據庫日志解析的方式實現,其主要應用場景是:數據從業務系統同步到數倉,和數據從數倉同步到數據應用兩個方面。

一、數據集成產品簡介

1. 產品介紹

數據同步致力于保證數據在不同數據源之間被高效準確地遷移。根據數據時效性要求和應用場景,數據同步可分為離線同步和實時同步:

1)離線同步

主要用于大批量數據的周期性遷移,對時效性要求不高,一般采用分布式批量數據同步方式,通過連接讀取數據,讀取數據過程中可以有全量、增量方式,經過統一處理后寫入目標存儲。

成熟的產品有:Sqoop、DataX、kettle等。

2)實時同步

針對數據時效性要求高的場景,其將源端數據的變化實時同步到目標端數據源中,保證源端數據與目標端數據實時保持一致,就可滿足業務實時查詢分析使用數據或實時計算等需求。

成熟的產品有:Canal、otter等。

在實際業務場景中,離線同步和實時同步搭配使用,為保證已有的數據表在目標端數據源中可用,會使用離線同步將該表的歷史數據全量遷移到目標端數據源中,對于增量數據則通過實時集成來增量遷移。

2. 核心流程

數據集成的實現有三個關鍵步驟:數據讀取、數據轉換(映射)、數據寫入,核心流程如下圖所示:

數據集成產品分析(一)

具體流程為:數據集成從源端數據源中讀取數據,按照建好的映射關系及轉換規則,將數據寫入到目標數據源中。其中:

  • 配置源端數據源和目標端數據源,用于連接數據源,獲取數據源的讀、寫權限等
  • 建立映射關系:源端數據源中數據表及字段對應到目標端數據源中的哪張表和字段。建立映射關系后,數據集成根據映射關系,將源端數據寫入到對應的目標端數據
  • 數據轉換規則:數據寫入時,可能有不同數據格式轉換,敏感數據脫敏展示、無用字段過濾、null值處理等需求,可以制定相應的數據轉換規則來實現
  • 數據傳輸通道:可配置任務并發數、數據連接數等任務參數,達到數據集成的任務被高效穩定執行等目的

基于上述流程,數據集成產品的核心功能一般會包含以下4個:

  1. 數據源配置
  2. 同步任務配置
  3. 任務調度
  4. 監控告警

數據集成平臺在進行異構數據源之間的數據遷移時,需要保證遷移任務被高效完成,被遷入目標端數據源的數據是準確可靠的、實時的,數據傳輸過程是安全的等,這是用戶核心關注點,也是期望平臺達到的目標。

3. 其他大數據產品的聯系和區別

在構建數據倉庫的場景中,數據加載到數倉后,隨后進行數據加工和數據應用,其中涉及的3類大數據產品如下:

1)數據集成:面向數據匯聚與交換

產品流程:配置數據源—創建同步任務—配置調度任務。

核心任務:ETL、校驗、補數、合并。

2)數據加工:面向數據分析

產品流程:創建表—編寫加工邏輯(insert)—配置調度任務。

數據加工方式:離線計算、實時計算、機器學習等。

3)任務調度:工作流編排

產品流程:創建任務節點—配置節點依賴關系—提交并執行。

任務調度:任務執行、任務調度與運維。

聯系:

  • 數據集成和數據加工都是數據生命周期中的一環
  • 數據集成任務和數據加工任務其實就是任務調度中的任務節點job,任務調度保證數據被順序采集和加工出來

以用戶畫像分析為例,oss_數據同步和rds_數據同步兩個節點是數據集成任務節點,ods_log_info_d、dws_user_info_all_d、rpy_user_info_d三個節點是數據加工任務節點,繪制各節點間的連線即工作流編排。

提交并執行畫布中的流程節點,數據就會按照箭頭方向執行各節點,產出最終結果。

數據集成產品分析(一)

區別:數據集成和數據加工都基于任務執行和調度實現,兩者雖然都是ETL,但是各自關注的重點并不相同。

①核心動作

數據集成核心動作是抽數(讀、寫、轉換),也就是數據交換,轉換動作也只是簡單的數據清洗。

數據加工的核心動作是計算邏輯/清洗等加工規則的編寫,加工規則復雜。

②核心目標

數據集成的核心目標,是保證數據被高效準確地遷移到目標端數據源。

數據加工的核心目標,是加工規則編寫準確“翻譯”業務需求。

二、數據集成產品流程

離線集成與實時集成在實際運行中,關注的側重點是不同的,對于離線集成,面對的是批數據,更多考慮大規模數據量的遷移效率問題;對于實時集成,面對的是流數據,更多考慮數據準確性問題。

數據同步中一般采用先全量在增量的方式來進行數據的遷移,即先將歷史數據全量遷移到目標數據源,完成初始化動作,在進行增量數據的實時同步,這樣保證目標端數據的可用性。當然也有不care歷史數據的場景,此時就無需進行全量遷移的動作。

1. 實時集成

我們主要采用基于日志的CDC方式來實現增量數據的實時同步,CDC即change data capture,捕獲數據的變化。

實時集成通過讀取源端數據庫日志bin_log來捕獲數據的變化情況(insert、update、delete),將其傳輸到kafka topic中,然后通過spark streaming對數據進行轉換/清洗,寫入到stg增量表中,最后將增量數據與全量數據合并到數倉ods表中。

由于數據庫日志抽取一般是獲取所有的數據記錄的變更(增、刪、改),落到目標表時,需要根據主鍵去重,并按照日志時間倒序排列獲取最后狀態的變化情況。

具體的實時集成任務執行邏輯及流程如下所示:

實時集成有以下特點:

  • 源端數據庫產生一條記錄,數據集成實時同步一條記錄
  • 流數據在數據傳輸過程中可能會被丟失或延遲

故相較于離線集成,在數據同步鏈路上,實時集成會增加數據校驗和數據合并兩個動作。

  • 數據校驗主要校驗源端和目標端的數據量,保證數據沒有被丟失
  • 數據合并則是由ods庫base表和cdc目標庫increment表組成,具體邏輯為:將stg數據按主鍵去重,取最新一條,根據主鍵與ods數據表中的T+1數據合并

2. 離線集成

離線集成分為全量和增量兩種方式對大規模數據進行批量遷移。

  • 全量遷移是將某些表的全部歷史數據同步到目標數據源中
  • 增量遷移,通常需要使用where子句(RDB)或者query子句(MongoDB)等增量配置參數,同時在結合調度參數(定時任務的重復周期:分鐘、小時、天、周、月等)可實現增量遷移任意指定日期內的數據。

比如,想要實現每日數據的增量同步,各參數可配置為:

  • Where子句:配置為DS=’${dateformat(yyyy-MM-dd,-1,DAY)}’
  • 配置定時任務:重復周期為1天,每天的凌晨0點自動執行作業

增量遷移的數據可以對目標端數據源表中數據進行追加、覆蓋和更新操作。

 

作者:細嗅薔薇,微信公眾號:零號產品er

本文由 @細嗅薔薇 原創發布于人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基于 CC0 協議

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 寫的不錯,懂點技術的

    來自上海 回復
  2. 增量遷移的數據可以對目標端數據源表中數據進行追加、覆蓋和更新操作。

    來自廣西 回復
  3. 數據集成產品是數據中臺建設的第一環節,期待作者對數據平臺建設后續環節進行分享。

    來自江蘇 回復