數(shù)據(jù)的搬運工——數(shù)據(jù)集成
大數(shù)據(jù)平臺并不生產(chǎn)數(shù)據(jù),大多數(shù)原始數(shù)據(jù)其實都來源于業(yè)務(wù)系統(tǒng),所以,我們需要做好數(shù)據(jù)“搬運”動作。而這就牽扯到了“數(shù)據(jù)集成”這個概念。這篇文章里,作者就談了談他的見解和感受,一起來看看吧。
我不生產(chǎn)數(shù)據(jù),我只是數(shù)據(jù)的搬運工。
在大數(shù)據(jù)平臺中,是不生產(chǎn)數(shù)據(jù)的,或者說原始數(shù)據(jù)都是來源于業(yè)務(wù)系統(tǒng)。所以,我們需要做的第一件事,就是將業(yè)務(wù)系統(tǒng)的數(shù)據(jù)搬運到數(shù)據(jù)平臺。
改用那句耳熟能詳?shù)脑挘也簧a(chǎn)數(shù)據(jù),我只是數(shù)據(jù)的搬運工。這個數(shù)據(jù)的搬運工,就是數(shù)據(jù)平臺的第一個模塊——數(shù)據(jù)集成。
一、搬運工都有哪些稱呼
在進行產(chǎn)品設(shè)計的過程中,對于同一個產(chǎn)品,經(jīng)常會遇到各種各樣的名稱,這些名稱好像可以指代同一個產(chǎn)品,如果細究起來,好像也有些區(qū)別。
在數(shù)據(jù)集成產(chǎn)品設(shè)計時,也會遇到類似的問題。這些相同的名稱主要是數(shù)據(jù)集成、數(shù)據(jù)同步、數(shù)據(jù)采集。有時候也可能聽到數(shù)據(jù)管道、數(shù)據(jù)傳輸?shù)鹊取?/p>
我通過大模型搜索了一下區(qū)別。
?? 數(shù)據(jù)集成:指的是將不同數(shù)據(jù)源、不同數(shù)據(jù)類型以及不同格式的數(shù)據(jù)整合到一起,形成一個統(tǒng)一的數(shù)據(jù)視圖或數(shù)據(jù)倉庫,以便后續(xù)的分析和處理。數(shù)據(jù)集成通常涉及到數(shù)據(jù)的抽取、轉(zhuǎn)換、清洗和加載等多個步驟,同時也需要解決數(shù)據(jù)格式轉(zhuǎn)換、數(shù)據(jù)質(zhì)量問題以及數(shù)據(jù)安全性等問題。
數(shù)據(jù)同步:則是將數(shù)據(jù)從一個數(shù)據(jù)源復(fù)制或傳輸?shù)搅硪粋€數(shù)據(jù)源,以保持兩個數(shù)據(jù)源中的數(shù)據(jù)一致性。數(shù)據(jù)同步通常涉及到實時或準實時的數(shù)據(jù)傳輸和復(fù)制,可以用于分布式系統(tǒng)中的數(shù)據(jù)復(fù)制、備份以及容災(zāi)等場景。
似乎,數(shù)據(jù)集成更注重數(shù)據(jù)的整合和數(shù)據(jù)處理,而數(shù)據(jù)同步更注重數(shù)據(jù)的傳輸和一致性。
?? 在大數(shù)據(jù)領(lǐng)域,數(shù)據(jù)采集和數(shù)據(jù)集成是兩個密切相關(guān)的概念,但它們在數(shù)據(jù)處理過程中扮演的角色和目的有所不同。
數(shù)據(jù)采集主要是通過工具或技術(shù),從系統(tǒng)外部獲取數(shù)據(jù)并輸入到系統(tǒng)內(nèi)部的過程。它可以是手工的,也可以是自動化的。在這個過程中,獲取的數(shù)據(jù)可能需要進行清洗、格式轉(zhuǎn)換等預(yù)處理,以便后續(xù)的數(shù)據(jù)集成和使用。
數(shù)據(jù)集成則是將不同來源、不同格式、不同性質(zhì)的數(shù)據(jù)在邏輯上或物理上有機地集中起來,形成一個全面、統(tǒng)一的數(shù)據(jù)視圖或數(shù)據(jù)倉庫的過程。數(shù)據(jù)集成通常涉及到數(shù)據(jù)的抽取、轉(zhuǎn)換、清洗和加載等多個步驟,它的主要目的是為企業(yè)提供全面的數(shù)據(jù)共享和數(shù)據(jù)分析能力。
因此,可以說數(shù)據(jù)采集是數(shù)據(jù)集成的基礎(chǔ)和前提,數(shù)據(jù)集成則是數(shù)據(jù)采集的后續(xù)處理和結(jié)果。沒有數(shù)據(jù)采集,數(shù)據(jù)集成就缺乏數(shù)據(jù)來源;沒有數(shù)據(jù)集成,則無法有效利用和管理大數(shù)據(jù)資產(chǎn)。
在這個定義里面數(shù)據(jù)采集是數(shù)據(jù)集成之前的一個步驟。個人感覺在實時領(lǐng)域是這樣的,實時獲取到數(shù)據(jù)的變更相當(dāng)于數(shù)據(jù)的采集。
以上都是通過大語言模型給出的結(jié)論。對這些名稱有一個基本概念之后,結(jié)合實際的公司習(xí)慣、部門歷史使用習(xí)慣、以及上下文語境來做具體的區(qū)分。
個人習(xí)慣數(shù)據(jù)集成和數(shù)據(jù)同步這兩個詞大部分情況下會混用。如果要做區(qū)分的話,當(dāng)有向?qū)胶屯献絻煞N形式的時候。拖拽式的可以稱之為數(shù)據(jù)集成,因為拖拽式的重數(shù)據(jù)的轉(zhuǎn)換和整合。向?qū)降目梢苑Q之為數(shù)據(jù)同步,因為向?qū)降闹財?shù)據(jù)的傳輸和一致性。而數(shù)據(jù)采集,個人相對混用少些,個人主要理解為將數(shù)據(jù)庫的變化采集上來。
再次說明,完全是個人角度的劃分。
二、搬運過程中的處理
在進行數(shù)據(jù)同步的過程中,需不需要進行處理,雖然數(shù)據(jù)同步常常和**ETL(提取(extract)、轉(zhuǎn)換(transform)、加載(load))**放在一起做比較,但是實際上是不是需要在同步過程中進行轉(zhuǎn)換是可以進行商榷的。
1. 一比一同步
同步數(shù)據(jù)的目的是保留業(yè)務(wù)的數(shù)據(jù)歷史,如果要保留歷史那么錯誤的歷史也是歷史。所以這種同步就是完全和業(yè)務(wù)系統(tǒng)數(shù)據(jù)一比一的同步,即使同步過來的數(shù)據(jù)是有異常的或者說不標準的。只有這樣才能真正的如實的保留了業(yè)務(wù)的歷史,當(dāng)發(fā)生數(shù)據(jù)異常進行數(shù)據(jù)追溯的時候,才能夠找到最原始的業(yè)務(wù)數(shù)據(jù)。
個人認為這個想法很好,能夠完全的保留業(yè)務(wù)歷史數(shù)據(jù)。但是有一個問題就是錯誤的數(shù)據(jù)業(yè)務(wù)系統(tǒng)可以隨時改的。但是在離線場景下的同步不會隨時進行的。而且感覺這種太極端,對人員,程序要求都比較高。
2. 在同步過程中進行轉(zhuǎn)換清洗
第二種就顯的要求沒有那么的嚴格,相對寬松些??梢栽谶@個過程中進行行級別的增減、規(guī)范化。也可以進行字段的聚合、關(guān)聯(lián)、轉(zhuǎn)換等等操作。
其實對產(chǎn)品設(shè)計來說,支持了這種形式,就支持了一比一的同步。在同步過程中有這個轉(zhuǎn)換、聚合的能力,不使用的話就是一比一同步了。這樣說來一比一同步更多的似乎是一個規(guī)范、一個要求。
三、搬運的目標表類型
將業(yè)務(wù)數(shù)據(jù)搬運到數(shù)據(jù)平臺的目標就是保留歷史、做到數(shù)據(jù)可追溯。但是業(yè)務(wù)系統(tǒng)的數(shù)據(jù)是時時都在變化的,那么怎么保留變化的數(shù)據(jù)的歷史就是一個目標表建表結(jié)構(gòu)的問題。
這其實算是數(shù)據(jù)倉庫建模領(lǐng)域的內(nèi)容,為什么在這里說?先說一下目標表常見的幾種形式。全量表、切片表、拉鏈表。
1. 全量表
全量表和名字一樣,就是數(shù)據(jù)全量同步到目標端。試用于同步碼表等數(shù)據(jù)變動不大的表。
2. 切片表
切片表又分為增量切片,和全量切片。全量切片就是將每天的全量業(yè)務(wù)數(shù)據(jù)放在當(dāng)天分區(qū)中。增量切片就是僅僅把當(dāng)天的增量放在當(dāng)天的分區(qū)中。
3. 拉鏈表
拉鏈表式最復(fù)雜的。需要有一個唯一鍵,需要知道業(yè)務(wù)數(shù)據(jù)是否變化,變化之后,就在目標表中新增一條,記錄變化數(shù)據(jù)的開始時間、結(jié)束時間,有的還會有版本、是否當(dāng)前狀態(tài)等字段(拉鏈表也依賴于同步的時間粒度,細于時間粒度,可能會存在無法將數(shù)據(jù)同步到目標端情況)。
為什么要在這里說,因為數(shù)據(jù)集成產(chǎn)品需要在功能上支持這些目標表的建表類型。全量表的全量同步。切片表的增量切片,需要能夠過濾出來每日的增量數(shù)據(jù)。拉鏈表的復(fù)雜邏輯,是否需要進行邏輯固化(我只在Powercenter中看到過拉鏈表的邏輯固化。自己也設(shè)計過向?qū)降睦湵磉壿嫻袒?。這些都需要在數(shù)據(jù)同步過程中考慮到。不僅僅能夠?qū)?shù)據(jù)搬運到目標端,而且還需要以一種合理的目標端表結(jié)構(gòu)需要將數(shù)據(jù)搬運到目標端。
四、搬運的交互形式
在搬運過程中,交互形式一般有三種形式,腳本式、拖拽式、向?qū)健?/p>
1. 腳本式
顧名思義,腳本式就是寫一個腳本來進行數(shù)據(jù)同步。這種形式更多的是偏技術(shù),在產(chǎn)品設(shè)計中一般不會過多涉及。
常見的腳本式同步:
古老的是Sqoop了,他實現(xiàn)了結(jié)構(gòu)化數(shù)據(jù)和Hadoop之間的批量數(shù)據(jù)遷移,最初由Apache軟件基金會開發(fā),但是在2016年,該項目已經(jīng)被終止了。
在阿里云Dataworks中的數(shù)據(jù)集成DataX,也會有的腳本界面的數(shù)據(jù)同步。是因為有些非結(jié)構(gòu)化的數(shù)據(jù)源,沒有表結(jié)構(gòu)類型,在腳本界面中能夠更加靈活。
2. 拖拽式
拖拽類的數(shù)據(jù)集成類產(chǎn)品,就是在一個畫布中拖拽各個算子,組成一個ETL的DAG圖,從而實現(xiàn)數(shù)據(jù)的同步。
常見的拖拽式的同步:
最有名的算是Informatica Powercenter,這款產(chǎn)品在國外似乎知名度很高,常年在Genter象限的領(lǐng)導(dǎo)這位置。但在國內(nèi)似乎只有一些銀行、等金融行業(yè)使用多些,在互聯(lián)網(wǎng)公司更是近乎沒什么聲量。
IBM Datastage 一款和powercenter類似的軟件。
Kettle一款開源的免費的數(shù)據(jù)ETL工具。
如果有拖拽式的數(shù)據(jù)同步需求,這三個產(chǎn)品也常常會被拉在一起做比較。各有各的特點吧。
單獨提一句,當(dāng)使用拖拽式的數(shù)據(jù)集成時,其實多少有了一些數(shù)據(jù)開發(fā)的性質(zhì)。但是如果細劃分的話,和拖拽式的數(shù)據(jù)開發(fā)還是有些區(qū)別的。這個在《常見的數(shù)據(jù)開發(fā)形式》中的拖拽式數(shù)據(jù)開發(fā)中說下區(qū)別。
3. 向?qū)?/h3>
向?qū)降臄?shù)據(jù)集成,主要是指通過輸入框或者選擇配置框,就可以完成任務(wù)的創(chuàng)建。不需要寫代碼,也不需要拖拽算子,這種開發(fā)形式我定義為向?qū)健?/p>
大部分的云廠商的數(shù)據(jù)集成/數(shù)據(jù)同步類產(chǎn)品均是向?qū)降哪J?。這里就不過多說了。
五、時效性
個人理解數(shù)據(jù)集成只分為兩大類,離線數(shù)據(jù)集成和實時的數(shù)據(jù)集成。至于全量同步、增量同步等等,只是這兩種大形式下的一種選項。而這兩種形式,又均可以使用腳本式、拖拽式或者向?qū)絹韺崿F(xiàn)。形式不重要,本質(zhì)是實時還是離線才重要,當(dāng)然設(shè)計頁面的時候也會多少有些配置區(qū)別。
在失效性上,實時數(shù)據(jù)越來越受重視,還有一些批流一體的概念,所以實時的數(shù)據(jù)集成需求也越來越多。
但是個人不認為離線的數(shù)據(jù)集成會被完全干掉。一方面——成本,顯然實時的成本要比離線的成本要高。一方面——技術(shù),實時集成之后一系列的技術(shù)和離線集成是完全不同的,現(xiàn)有的技術(shù)架構(gòu)不一定都做好了準備。
還有一方面就是歷史習(xí)慣,以上面介紹為例,切片表、拉鏈表等等均是離線場景下的,在后續(xù)介紹中會發(fā)現(xiàn)有大量的概念在離線場景下很順暢,但是往往會自動的忽略實時場景。這可能也是因為實時的歷史相對較短。在其他概念出現(xiàn)的時候,并沒有考慮實時的場景。
六、支持的數(shù)據(jù)源類型
數(shù)據(jù)集成支持的數(shù)據(jù)源多少是一個平臺能力的體現(xiàn),支持的越多,可以理解為能力越強。不同數(shù)據(jù)源可能支持實時的形式、可能支持離線形式,也可能兩種均支持。數(shù)據(jù)源大類上也有不同的劃分:關(guān)系型數(shù)據(jù)庫、大數(shù)據(jù)存儲、消息隊列、文本文件等等。
這是從類型上劃分,如果從接入數(shù)據(jù)源之后的操作上來分,就兩類:有表結(jié)構(gòu)的和沒有表結(jié)構(gòu)的。
1. 有表結(jié)構(gòu)
有表結(jié)構(gòu)的可以是關(guān)系型數(shù)據(jù)庫、HIVE、Doris等等這類本身有表結(jié)構(gòu)的。也可以是固定格式的文本、JSON這類可以賦予一個固定scheam的,這類需要進行數(shù)據(jù)平臺有元數(shù)據(jù)管理能力,在《當(dāng)我們談元數(shù)據(jù)的時候,我們在談什么》中會介紹這一部分。這類有表結(jié)構(gòu)的在交互時,以二維表格的形式在向?qū)?、或者拖拽中進行交互了。
2. 沒有表結(jié)構(gòu)
沒有表結(jié)構(gòu)的相對會復(fù)雜些,有時候可以強制給這種沒有表結(jié)構(gòu)的授予一個表結(jié)構(gòu)。有的時候也只能轉(zhuǎn)換成腳本的形式來實現(xiàn)映射。這個具體數(shù)據(jù)源具體分析了。
數(shù)據(jù)源支持多少體現(xiàn)能力強弱。同樣,作為產(chǎn)品每種數(shù)據(jù)源可能都有其自身的特性,也需要進行個性化的設(shè)計,而產(chǎn)品經(jīng)理又會將各種類型的數(shù)據(jù)源都熟悉到,個人感覺也是數(shù)據(jù)集成類產(chǎn)品設(shè)計的一個麻煩的點。
至于各種非結(jié)構(gòu)化的文檔、圖片、音視頻等等。都不在大數(shù)據(jù)平臺這個范疇內(nèi)。之前也會提非結(jié)構(gòu)化的大數(shù)據(jù)平臺,非結(jié)構(gòu)化的大數(shù)據(jù)治理。但是目前個人沒有接觸到特別好的產(chǎn)品。
本文由 @數(shù)據(jù)小吏 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載
題圖來自 Unsplash,基于 CC0 協(xié)議
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)。
整體讀下來感覺還比容易讓人理解的,有些概念的內(nèi)容介紹的較為清晰,有一點可能對于小白來說在閱讀順序上有難受。因為不了解拖拽式和向?qū)?,所以在前面讀到這兩個名詞時就有點疑惑,到后面介紹清楚后在回頭看便理解了