本文來自微信公眾號“ruby的數(shù)據(jù)漫談”,作者/ruby。
隨著湖倉一體技術(shù)架構(gòu)的興起,湖倉一體可以結(jié)合數(shù)據(jù)湖和數(shù)據(jù)倉庫的優(yōu)勢,將會成為數(shù)據(jù)庫行業(yè)的未來趨勢,但是由于湖倉一體可以完成數(shù)據(jù)的統(tǒng)一存儲和加工計算,可以為企業(yè)提供面向應(yīng)用的統(tǒng)一供給,但是由于很多企業(yè)已經(jīng)有數(shù)據(jù)倉庫和數(shù)據(jù)庫系統(tǒng),湖倉一體技術(shù)架構(gòu)無法解決架構(gòu)升級帶來的數(shù)據(jù)遷移的巨大成本,且部分?jǐn)?shù)據(jù)倉庫系統(tǒng)仍然可以發(fā)揮作用,因此,湖倉一體必須支持多種數(shù)據(jù)入湖的方式,兼顧成本和功能的作用。
01
數(shù)據(jù)入湖的方式
數(shù)據(jù)入湖的方式有多種,以下是一些常見的方式:
1.批量導(dǎo)入:將數(shù)據(jù)從現(xiàn)有的數(shù)據(jù)源中以批處理的方式導(dǎo)入數(shù)據(jù)湖中,可以使用ETL(Extract,Transform,Load)工具或編寫腳本來完成。
應(yīng)用場景:對于需要進(jìn)行復(fù)雜數(shù)據(jù)清理和轉(zhuǎn)換且數(shù)據(jù)量較大的場景,批量集成是首選。通常,調(diào)度作業(yè)每小時或每天執(zhí)行,主要包含ETL、ELT和FTP等工具。批量集成不適合低數(shù)據(jù)延遲和高靈活性的場景。
2.實(shí)時流式導(dǎo)入:將數(shù)據(jù)以流的方式持續(xù)導(dǎo)入數(shù)據(jù)湖中,可以利用流處理引擎如Kafka、Flume、Spark Streaming等來實(shí)現(xiàn)。
應(yīng)用場景:主要關(guān)注流數(shù)據(jù)的采集和處理,滿足數(shù)據(jù)實(shí)時集成需求,處理每秒數(shù)萬甚至數(shù)十萬個事件流,有時甚至數(shù)以百萬計的事件流。流集成不適合需要復(fù)雜數(shù)據(jù)清理和轉(zhuǎn)換的場景。
3.數(shù)據(jù)復(fù)制:將數(shù)據(jù)從現(xiàn)有的數(shù)據(jù)庫或數(shù)據(jù)倉庫中復(fù)制到數(shù)據(jù)湖,可以使用復(fù)制工具或者數(shù)據(jù)湖服務(wù)來完成。使用基于日志的CDC捕獲數(shù)據(jù)變更,實(shí)時獲取數(shù)據(jù)。
應(yīng)用場景:數(shù)據(jù)復(fù)制同步不適合處理各種數(shù)據(jù)結(jié)構(gòu)以及需要清理和轉(zhuǎn)換復(fù)雜數(shù)據(jù)的場景。
4.API接入:通過數(shù)據(jù)湖平臺提供的API接口將數(shù)據(jù)直接導(dǎo)入數(shù)據(jù)湖中。
應(yīng)用場景:通常通過API捕獲或提取數(shù)據(jù),適用于處理不同數(shù)據(jù)結(jié)構(gòu)以及需要高可靠性和復(fù)雜轉(zhuǎn)換的場景。尤其對于許多遺留系統(tǒng)、ERP和SaaS來說,消息集成是唯一的選擇。消息集成不適合處理大量數(shù)據(jù)的場景。
5.數(shù)據(jù)虛擬化:數(shù)據(jù)入湖中的數(shù)據(jù)虛擬化是指在數(shù)據(jù)湖中使用虛擬化技術(shù),將數(shù)據(jù)源的數(shù)據(jù)映射到數(shù)據(jù)湖中,而不需要復(fù)制或移動實(shí)際的數(shù)據(jù)。數(shù)據(jù)虛擬化通過創(chuàng)建虛擬視圖來實(shí)現(xiàn),它們是對實(shí)際數(shù)據(jù)源的查詢和訪問,但并不實(shí)際復(fù)制或移動數(shù)據(jù)。虛擬化技術(shù)提供了一個統(tǒng)一的數(shù)據(jù)訪問接口,將不同數(shù)據(jù)源的數(shù)據(jù)視為一體,屏蔽了數(shù)據(jù)源背后的細(xì)節(jié),使得用戶可以方便地查詢和分析數(shù)據(jù)。數(shù)據(jù)虛擬化產(chǎn)品的架構(gòu)一般有兩種實(shí)現(xiàn)方式,聯(lián)邦查詢和實(shí)時鏡像。
其中數(shù)據(jù)虛擬化是不需要將數(shù)據(jù)復(fù)制到數(shù)據(jù)湖中,而是提供一個數(shù)據(jù)共享訪問層實(shí)現(xiàn)數(shù)據(jù)的訪問。這樣避免了大量的數(shù)據(jù)復(fù)制工作,實(shí)時鏡像還是有部分存儲成本。
02
數(shù)據(jù)入湖方式的對比
不同入湖方式的實(shí)時性和對源系統(tǒng)的性能要求不同,以下是對照表:
03
非結(jié)構(gòu)化數(shù)據(jù)入湖特殊說明
非結(jié)構(gòu)化數(shù)據(jù)包括無格式的文本、各類格式的文檔、圖像、音頻、視頻等多樣異構(gòu)的格式文件。那么非結(jié)構(gòu)化數(shù)據(jù)入湖在以上的5種入湖方式上需要進(jìn)行特殊說明:
一、非結(jié)構(gòu)化數(shù)據(jù)的元數(shù)據(jù)包含基本信息和內(nèi)容增強(qiáng)類,具體可以參考都柏林核心元數(shù)據(jù)標(biāo)準(zhǔn)。非結(jié)構(gòu)化數(shù)據(jù)的元數(shù)據(jù)包含基本信息主要包含名稱、格式、存儲大小、Owner、存儲位置、創(chuàng)建時間、修改時間等基本特征。而增強(qiáng)內(nèi)容特征主要包含標(biāo)簽、相似性檢索、相似性連接等。
二、而非結(jié)構(gòu)化數(shù)據(jù)入湖則可以包含元數(shù)據(jù)入湖和原始文件入湖兩種類型,原始文件如何入湖可以參見以上的4種入湖方式,而元數(shù)據(jù)入湖主要包含3種類型:
1、基本特征元數(shù)據(jù)入湖:主要通過從源端集成的文檔本身的基本信息入湖。入湖的過程中,數(shù)據(jù)內(nèi)容仍存儲在源系統(tǒng),數(shù)據(jù)湖中僅存儲非結(jié)構(gòu)化數(shù)據(jù)的基本特征元數(shù)據(jù)。
2、文件解析內(nèi)容入湖:對數(shù)據(jù)源的文件內(nèi)容進(jìn)行文本解析、拆分后入湖。入湖的過程中,原始文件仍存儲在源系統(tǒng),數(shù)據(jù)湖中僅存儲解析后的內(nèi)容增強(qiáng)元數(shù)據(jù)。
3、文件關(guān)系入湖:根據(jù)知識圖譜等應(yīng)用案例在源端提取的文件上下文關(guān)系入湖。入湖的過程中,原始文件仍存儲在源系統(tǒng),數(shù)據(jù)湖中僅存儲文件的關(guān)系等內(nèi)容增強(qiáng)元數(shù)據(jù)。
其中1是非結(jié)構(gòu)化數(shù)據(jù)的基本信息,2和3是非結(jié)構(gòu)化數(shù)據(jù)的增強(qiáng)內(nèi)容特征,而這三種方式的原始數(shù)據(jù)依然存儲在原始的存儲系統(tǒng)中。
總結(jié)一下,通過數(shù)據(jù)虛擬化和非結(jié)構(gòu)化數(shù)據(jù)的基本信息和內(nèi)容增強(qiáng)內(nèi)容入湖的方式可以減少湖倉一體新的技術(shù)架構(gòu)建設(shè)過程中造成大量的數(shù)據(jù)遷移的成本。也可以實(shí)現(xiàn)湖倉一體的數(shù)據(jù)統(tǒng)一管理和處理。