數(shù)據(jù)集成產(chǎn)品分析(一)

zmL
3 評(píng)論 9314 瀏覽 66 收藏 12 分鐘

編輯導(dǎo)語:數(shù)據(jù)集成產(chǎn)品是數(shù)據(jù)中臺(tái)建設(shè)的第一環(huán)節(jié),在構(gòu)建數(shù)據(jù)中臺(tái)或大數(shù)據(jù)系統(tǒng)時(shí),首先要將企業(yè)內(nèi)部各個(gè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)實(shí)現(xiàn)互聯(lián)互通,從物理上打破數(shù)據(jù)孤島。本文作者對(duì)數(shù)據(jù)集成產(chǎn)品進(jìn)行了分析,一起來看一下吧。

數(shù)據(jù)集成產(chǎn)品致力于異構(gòu)數(shù)據(jù)源之間的數(shù)據(jù)交換與匯聚,該類產(chǎn)品是數(shù)據(jù)中臺(tái)建設(shè)的第一環(huán)節(jié),筆者將通過兩篇文章對(duì)數(shù)據(jù)集成產(chǎn)品進(jìn)行分析。

數(shù)據(jù)同步,又稱為數(shù)據(jù)集成、數(shù)據(jù)遷移,主要用于實(shí)現(xiàn)不同系統(tǒng)間的數(shù)據(jù)流轉(zhuǎn)。

為什么會(huì)有數(shù)據(jù)同步這類產(chǎn)品?

在企業(yè)中,業(yè)務(wù)的快速發(fā)展產(chǎn)生了大量數(shù)據(jù),也催生出多種應(yīng)用系統(tǒng),各系統(tǒng)承載不同類型的數(shù)據(jù),對(duì)應(yīng)著不同的數(shù)據(jù)存儲(chǔ)方式。

而對(duì)于構(gòu)建數(shù)據(jù)中臺(tái)或大數(shù)據(jù)系統(tǒng),首先需要將企業(yè)內(nèi)部各個(gè)業(yè)務(wù)系統(tǒng)的數(shù)據(jù)實(shí)現(xiàn)互聯(lián)互通,從物理上打破數(shù)據(jù)孤島,而這主要通過數(shù)據(jù)匯聚和同步的能力來實(shí)現(xiàn)。

數(shù)據(jù)同步方式有多種:API接口同步、數(shù)據(jù)文件同步和數(shù)據(jù)庫日志解析同步,適用于不同的業(yè)務(wù)場(chǎng)景。

本次分享的數(shù)據(jù)同步是基于數(shù)據(jù)庫日志解析的方式實(shí)現(xiàn),其主要應(yīng)用場(chǎng)景是:數(shù)據(jù)從業(yè)務(wù)系統(tǒng)同步到數(shù)倉,和數(shù)據(jù)從數(shù)倉同步到數(shù)據(jù)應(yīng)用兩個(gè)方面。

一、數(shù)據(jù)集成產(chǎn)品簡(jiǎn)介

1. 產(chǎn)品介紹

數(shù)據(jù)同步致力于保證數(shù)據(jù)在不同數(shù)據(jù)源之間被高效準(zhǔn)確地遷移。根據(jù)數(shù)據(jù)時(shí)效性要求和應(yīng)用場(chǎng)景,數(shù)據(jù)同步可分為離線同步和實(shí)時(shí)同步:

1)離線同步

主要用于大批量數(shù)據(jù)的周期性遷移,對(duì)時(shí)效性要求不高,一般采用分布式批量數(shù)據(jù)同步方式,通過連接讀取數(shù)據(jù),讀取數(shù)據(jù)過程中可以有全量、增量方式,經(jīng)過統(tǒng)一處理后寫入目標(biāo)存儲(chǔ)。

成熟的產(chǎn)品有:Sqoop、DataX、kettle等。

2)實(shí)時(shí)同步

針對(duì)數(shù)據(jù)時(shí)效性要求高的場(chǎng)景,其將源端數(shù)據(jù)的變化實(shí)時(shí)同步到目標(biāo)端數(shù)據(jù)源中,保證源端數(shù)據(jù)與目標(biāo)端數(shù)據(jù)實(shí)時(shí)保持一致,就可滿足業(yè)務(wù)實(shí)時(shí)查詢分析使用數(shù)據(jù)或?qū)崟r(shí)計(jì)算等需求。

成熟的產(chǎn)品有:Canal、otter等。

在實(shí)際業(yè)務(wù)場(chǎng)景中,離線同步和實(shí)時(shí)同步搭配使用,為保證已有的數(shù)據(jù)表在目標(biāo)端數(shù)據(jù)源中可用,會(huì)使用離線同步將該表的歷史數(shù)據(jù)全量遷移到目標(biāo)端數(shù)據(jù)源中,對(duì)于增量數(shù)據(jù)則通過實(shí)時(shí)集成來增量遷移。

2. 核心流程

數(shù)據(jù)集成的實(shí)現(xiàn)有三個(gè)關(guān)鍵步驟:數(shù)據(jù)讀取、數(shù)據(jù)轉(zhuǎn)換(映射)、數(shù)據(jù)寫入,核心流程如下圖所示:

數(shù)據(jù)集成產(chǎn)品分析(一)

具體流程為:數(shù)據(jù)集成從源端數(shù)據(jù)源中讀取數(shù)據(jù),按照建好的映射關(guān)系及轉(zhuǎn)換規(guī)則,將數(shù)據(jù)寫入到目標(biāo)數(shù)據(jù)源中。其中:

  • 配置源端數(shù)據(jù)源和目標(biāo)端數(shù)據(jù)源,用于連接數(shù)據(jù)源,獲取數(shù)據(jù)源的讀、寫權(quán)限等
  • 建立映射關(guān)系:源端數(shù)據(jù)源中數(shù)據(jù)表及字段對(duì)應(yīng)到目標(biāo)端數(shù)據(jù)源中的哪張表和字段。建立映射關(guān)系后,數(shù)據(jù)集成根據(jù)映射關(guān)系,將源端數(shù)據(jù)寫入到對(duì)應(yīng)的目標(biāo)端數(shù)據(jù)
  • 數(shù)據(jù)轉(zhuǎn)換規(guī)則:數(shù)據(jù)寫入時(shí),可能有不同數(shù)據(jù)格式轉(zhuǎn)換,敏感數(shù)據(jù)脫敏展示、無用字段過濾、null值處理等需求,可以制定相應(yīng)的數(shù)據(jù)轉(zhuǎn)換規(guī)則來實(shí)現(xiàn)
  • 數(shù)據(jù)傳輸通道:可配置任務(wù)并發(fā)數(shù)、數(shù)據(jù)連接數(shù)等任務(wù)參數(shù),達(dá)到數(shù)據(jù)集成的任務(wù)被高效穩(wěn)定執(zhí)行等目的

基于上述流程,數(shù)據(jù)集成產(chǎn)品的核心功能一般會(huì)包含以下4個(gè):

  1. 數(shù)據(jù)源配置
  2. 同步任務(wù)配置
  3. 任務(wù)調(diào)度
  4. 監(jiān)控告警

數(shù)據(jù)集成平臺(tái)在進(jìn)行異構(gòu)數(shù)據(jù)源之間的數(shù)據(jù)遷移時(shí),需要保證遷移任務(wù)被高效完成,被遷入目標(biāo)端數(shù)據(jù)源的數(shù)據(jù)是準(zhǔn)確可靠的、實(shí)時(shí)的,數(shù)據(jù)傳輸過程是安全的等,這是用戶核心關(guān)注點(diǎn),也是期望平臺(tái)達(dá)到的目標(biāo)。

3. 其他大數(shù)據(jù)產(chǎn)品的聯(lián)系和區(qū)別

在構(gòu)建數(shù)據(jù)倉庫的場(chǎng)景中,數(shù)據(jù)加載到數(shù)倉后,隨后進(jìn)行數(shù)據(jù)加工和數(shù)據(jù)應(yīng)用,其中涉及的3類大數(shù)據(jù)產(chǎn)品如下:

1)數(shù)據(jù)集成:面向數(shù)據(jù)匯聚與交換

產(chǎn)品流程:配置數(shù)據(jù)源—?jiǎng)?chuàng)建同步任務(wù)—配置調(diào)度任務(wù)。

核心任務(wù):ETL、校驗(yàn)、補(bǔ)數(shù)、合并。

2)數(shù)據(jù)加工:面向數(shù)據(jù)分析

產(chǎn)品流程:創(chuàng)建表—編寫加工邏輯(insert)—配置調(diào)度任務(wù)。

數(shù)據(jù)加工方式:離線計(jì)算、實(shí)時(shí)計(jì)算、機(jī)器學(xué)習(xí)等。

3)任務(wù)調(diào)度:工作流編排

產(chǎn)品流程:創(chuàng)建任務(wù)節(jié)點(diǎn)—配置節(jié)點(diǎn)依賴關(guān)系—提交并執(zhí)行。

任務(wù)調(diào)度:任務(wù)執(zhí)行、任務(wù)調(diào)度與運(yùn)維。

聯(lián)系:

  • 數(shù)據(jù)集成和數(shù)據(jù)加工都是數(shù)據(jù)生命周期中的一環(huán)
  • 數(shù)據(jù)集成任務(wù)和數(shù)據(jù)加工任務(wù)其實(shí)就是任務(wù)調(diào)度中的任務(wù)節(jié)點(diǎn)job,任務(wù)調(diào)度保證數(shù)據(jù)被順序采集和加工出來

以用戶畫像分析為例,oss_數(shù)據(jù)同步和rds_數(shù)據(jù)同步兩個(gè)節(jié)點(diǎn)是數(shù)據(jù)集成任務(wù)節(jié)點(diǎn),ods_log_info_d、dws_user_info_all_d、rpy_user_info_d三個(gè)節(jié)點(diǎn)是數(shù)據(jù)加工任務(wù)節(jié)點(diǎn),繪制各節(jié)點(diǎn)間的連線即工作流編排。

提交并執(zhí)行畫布中的流程節(jié)點(diǎn),數(shù)據(jù)就會(huì)按照箭頭方向執(zhí)行各節(jié)點(diǎn),產(chǎn)出最終結(jié)果。

數(shù)據(jù)集成產(chǎn)品分析(一)

區(qū)別:數(shù)據(jù)集成和數(shù)據(jù)加工都基于任務(wù)執(zhí)行和調(diào)度實(shí)現(xiàn),兩者雖然都是ETL,但是各自關(guān)注的重點(diǎn)并不相同。

①核心動(dòng)作

數(shù)據(jù)集成核心動(dòng)作是抽數(shù)(讀、寫、轉(zhuǎn)換),也就是數(shù)據(jù)交換,轉(zhuǎn)換動(dòng)作也只是簡(jiǎn)單的數(shù)據(jù)清洗。

數(shù)據(jù)加工的核心動(dòng)作是計(jì)算邏輯/清洗等加工規(guī)則的編寫,加工規(guī)則復(fù)雜。

②核心目標(biāo)

數(shù)據(jù)集成的核心目標(biāo),是保證數(shù)據(jù)被高效準(zhǔn)確地遷移到目標(biāo)端數(shù)據(jù)源。

數(shù)據(jù)加工的核心目標(biāo),是加工規(guī)則編寫準(zhǔn)確“翻譯”業(yè)務(wù)需求。

二、數(shù)據(jù)集成產(chǎn)品流程

離線集成與實(shí)時(shí)集成在實(shí)際運(yùn)行中,關(guān)注的側(cè)重點(diǎn)是不同的,對(duì)于離線集成,面對(duì)的是批數(shù)據(jù),更多考慮大規(guī)模數(shù)據(jù)量的遷移效率問題;對(duì)于實(shí)時(shí)集成,面對(duì)的是流數(shù)據(jù),更多考慮數(shù)據(jù)準(zhǔn)確性問題。

數(shù)據(jù)同步中一般采用先全量在增量的方式來進(jìn)行數(shù)據(jù)的遷移,即先將歷史數(shù)據(jù)全量遷移到目標(biāo)數(shù)據(jù)源,完成初始化動(dòng)作,在進(jìn)行增量數(shù)據(jù)的實(shí)時(shí)同步,這樣保證目標(biāo)端數(shù)據(jù)的可用性。當(dāng)然也有不care歷史數(shù)據(jù)的場(chǎng)景,此時(shí)就無需進(jìn)行全量遷移的動(dòng)作。

1. 實(shí)時(shí)集成

我們主要采用基于日志的CDC方式來實(shí)現(xiàn)增量數(shù)據(jù)的實(shí)時(shí)同步,CDC即change data capture,捕獲數(shù)據(jù)的變化。

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

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

具體的實(shí)時(shí)集成任務(wù)執(zhí)行邏輯及流程如下所示:

實(shí)時(shí)集成有以下特點(diǎn):

  • 源端數(shù)據(jù)庫產(chǎn)生一條記錄,數(shù)據(jù)集成實(shí)時(shí)同步一條記錄
  • 流數(shù)據(jù)在數(shù)據(jù)傳輸過程中可能會(huì)被丟失或延遲

故相較于離線集成,在數(shù)據(jù)同步鏈路上,實(shí)時(shí)集成會(huì)增加數(shù)據(jù)校驗(yàn)和數(shù)據(jù)合并兩個(gè)動(dòng)作。

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

2. 離線集成

離線集成分為全量和增量?jī)煞N方式對(duì)大規(guī)模數(shù)據(jù)進(jìn)行批量遷移。

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

比如,想要實(shí)現(xiàn)每日數(shù)據(jù)的增量同步,各參數(shù)可配置為:

  • Where子句:配置為DS=’${dateformat(yyyy-MM-dd,-1,DAY)}’,
  • 配置定時(shí)任務(wù):重復(fù)周期為1天,每天的凌晨0點(diǎn)自動(dòng)執(zhí)行作業(yè)

增量遷移的數(shù)據(jù)可以對(duì)目標(biāo)端數(shù)據(jù)源表中數(shù)據(jù)進(jìn)行追加、覆蓋和更新操作。

 

作者:細(xì)嗅薔薇,微信公眾號(hào):零號(hào)產(chǎn)品er

本文由 @細(xì)嗅薔薇 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自 Unsplash,基于 CC0 協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 寫的不錯(cuò),懂點(diǎn)技術(shù)的

    來自上海 回復(fù)
  2. 增量遷移的數(shù)據(jù)可以對(duì)目標(biāo)端數(shù)據(jù)源表中數(shù)據(jù)進(jìn)行追加、覆蓋和更新操作。

    來自廣西 回復(fù)
  3. 數(shù)據(jù)集成產(chǎn)品是數(shù)據(jù)中臺(tái)建設(shè)的第一環(huán)節(jié),期待作者對(duì)數(shù)據(jù)平臺(tái)建設(shè)后續(xù)環(huán)節(jié)進(jìn)行分享。

    來自江蘇 回復(fù)