一文讀懂如何選擇數(shù)據(jù)架構(gòu)

當(dāng)今世界,數(shù)據(jù)已成為組織最寶貴的資產(chǎn)之一,在制定戰(zhàn)略決策、優(yōu)化運(yùn)營(yíng)和獲得競(jìng)爭(zhēng)優(yōu)勢(shì)方面發(fā)揮著至關(guān)重要的作用。在此背景下,數(shù)據(jù)工程是一門(mén)關(guān)鍵學(xué)科,它管理和指導(dǎo)從數(shù)據(jù)收集到轉(zhuǎn)換、存儲(chǔ)和訪問(wèn)的整個(gè)過(guò)程。
在大數(shù)據(jù)時(shí)代,企業(yè)不僅需要擁有數(shù)據(jù),還需要解釋數(shù)據(jù)、使其可訪問(wèn)并將其集成到?jīng)Q策支持系統(tǒng)中。這需要開(kāi)發(fā)與數(shù)據(jù)處理和管理相關(guān)的新的、更靈活的解決方案。隨著數(shù)據(jù)量、多樣性和用例的不斷增加,組織正在轉(zhuǎn)向能夠響應(yīng)各種需求的架構(gòu)。在這種背景下,數(shù)據(jù)管理策略(例如數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)湖、數(shù)據(jù)湖倉(cāng)和數(shù)據(jù)網(wǎng)格)發(fā)揮著重要作用。每種方法在數(shù)據(jù)類(lèi)型、訪問(wèn)模型、性能要求、組織結(jié)構(gòu)和治理策略方面都提供了不同的解決方案。數(shù)據(jù)倉(cāng)庫(kù)專(zhuān)注于結(jié)構(gòu)化數(shù)據(jù),而數(shù)據(jù)湖為存儲(chǔ)大量數(shù)據(jù)提供了更靈活的結(jié)構(gòu)。另一方面,數(shù)據(jù)湖倉(cāng)結(jié)合了兩種方法的優(yōu)勢(shì),為數(shù)據(jù)分析創(chuàng)建了一個(gè)優(yōu)化的環(huán)境。同時(shí),數(shù)據(jù)網(wǎng)格旨在通過(guò)微服務(wù)架構(gòu)分散數(shù)據(jù)管理,從而允許在大型組織中更有效地分配數(shù)據(jù)責(zé)任。
然而,成功的數(shù)據(jù)架構(gòu)的基礎(chǔ)必須從設(shè)計(jì)過(guò)程的一開(kāi)始就奠定。這不僅關(guān)乎技術(shù)架構(gòu)的構(gòu)建,還在于使其與組織目標(biāo)和數(shù)據(jù)管理策略保持一致。本文將探討這些流程的理論細(xì)節(jié),并提供一個(gè)示例項(xiàng)目來(lái)演示如何構(gòu)建這樣的系統(tǒng)。
一、需求分析:成功數(shù)據(jù)架構(gòu)的基石
以正確的方法開(kāi)始構(gòu)建數(shù)據(jù)架構(gòu),對(duì)于避免后期可能出現(xiàn)的問(wèn)題至關(guān)重要。因此,項(xiàng)目初期最重要的第一步就是需求分析。如果需求定義不明確,以錯(cuò)誤的架構(gòu)啟動(dòng)項(xiàng)目將導(dǎo)致資源和時(shí)間的浪費(fèi)。
在著手?jǐn)?shù)據(jù)架構(gòu)項(xiàng)目之前,至關(guān)重要的是要清楚地了解要構(gòu)建的具體內(nèi)容。并非所有數(shù)據(jù)架構(gòu)項(xiàng)目都遵循標(biāo)準(zhǔn)模板。每個(gè)組織的數(shù)據(jù)結(jié)構(gòu)、業(yè)務(wù)目標(biāo)、期望和用戶需求都是獨(dú)一無(wú)二的。因此,負(fù)責(zé)構(gòu)建數(shù)據(jù)架構(gòu)的技術(shù)團(tuán)隊(duì)必須與相關(guān)業(yè)務(wù)部門(mén)和利益相關(guān)者密切合作,明確范圍。
為了本文的目的,我們定義了一個(gè)示例項(xiàng)目工作流程。根據(jù)需求,我們選擇了一種架構(gòu),并基于該架構(gòu)繼續(xù)進(jìn)行流程。然而,我們也從解釋的角度討論了其他替代方案。
在這個(gè)示例項(xiàng)目中,目標(biāo)是創(chuàng)建一個(gè)現(xiàn)代化的數(shù)據(jù)倉(cāng)庫(kù),用于整合銷(xiāo)售數(shù)據(jù)并對(duì)這些數(shù)據(jù)進(jìn)行有意義的分析。所使用的平臺(tái)可以是任何 DBMS(例如 MS SQL、PostgreSQL 等)。主要目標(biāo)是強(qiáng)化數(shù)據(jù)驅(qū)動(dòng)的決策機(jī)制,簡(jiǎn)化報(bào)告流程,并產(chǎn)生業(yè)務(wù)洞察。
二、需求分析的目的是什么?
進(jìn)行需求分析是為了:
- 了解業(yè)務(wù)需求,
 - 確定利益相關(guān)者的期望,
 - 明確范圍,并
 - 選擇正確的技術(shù)基礎(chǔ)設(shè)施。
 
在示例項(xiàng)目中,假設(shè)數(shù)據(jù)來(lái)自兩個(gè)主要源系統(tǒng)(ERP 和 CRM)。ERP(企業(yè)資源計(jì)劃)是一個(gè)用于整合公司所有業(yè)務(wù)流程和資源的軟件系統(tǒng)。該軟件將財(cái)務(wù)、人力資源、生產(chǎn)、物流、銷(xiāo)售和市場(chǎng)營(yíng)銷(xiāo)等一系列業(yè)務(wù)職能整合在一起。ERP 系統(tǒng)的目標(biāo)是通過(guò)高效利用公司資源(時(shí)間、勞動(dòng)力、物料、資金等),使流程更加有序和透明。另一方面,CRM(客戶關(guān)系管理)是一個(gè)用于管理和改善公司與現(xiàn)有客戶和潛在客戶關(guān)系的軟件系統(tǒng)。CRM 軟件收集并分析客戶數(shù)據(jù),幫助公司在銷(xiāo)售、市場(chǎng)營(yíng)銷(xiāo)和支持流程中制定更個(gè)性化、更高效的策略。
當(dāng) ERP 和 CRM 系統(tǒng)以 CSV 格式提供數(shù)據(jù)時(shí),使用基于文件的數(shù)據(jù)源需要在整個(gè)ETL(提取、轉(zhuǎn)換、加載)過(guò)程中進(jìn)行仔細(xì)的規(guī)劃和強(qiáng)大的數(shù)據(jù)控制。原始數(shù)據(jù)通常不完整、損壞或不一致,因此需要在進(jìn)行分析之前進(jìn)行清理并解決質(zhì)量問(wèn)題。
僅僅清理數(shù)據(jù)是不夠的;還必須將其集成到一個(gè)用戶友好且易于理解的結(jié)構(gòu)中。數(shù)據(jù)模型應(yīng)該簡(jiǎn)潔、合乎邏輯,并且設(shè)計(jì)得能夠支持分析。在示例項(xiàng)目中,不需要跟蹤歷史數(shù)據(jù)。這意味著在數(shù)據(jù)加載過(guò)程中只會(huì)考慮最新的記錄,從而使系統(tǒng)更簡(jiǎn)單、更快速。這樣做是為了簡(jiǎn)化解釋并簡(jiǎn)化模型。
另一個(gè)關(guān)鍵要求是為系統(tǒng)最終生成的數(shù)據(jù)模型提供清晰易懂的文檔。該文檔確保技術(shù)團(tuán)隊(duì)和業(yè)務(wù)用戶都能更輕松地適應(yīng)系統(tǒng)。該文檔解釋了如何使用數(shù)據(jù)倉(cāng)庫(kù)、每個(gè)表的用途以及如何建立關(guān)系,這直接影響項(xiàng)目的可持續(xù)性。
綜上所述,在本項(xiàng)目中:
將使用 SQL,數(shù)據(jù)源將以 CSV 文件的形式從 ERP 和 CRM 系統(tǒng)提供,數(shù)據(jù)將被清理并轉(zhuǎn)換成用戶友好的模型,僅使用最新的數(shù)據(jù),我們將準(zhǔn)備一份詳細(xì)的文件作為最終結(jié)果。
一旦完成此分析,項(xiàng)目的結(jié)構(gòu)就會(huì)清晰起來(lái),下一階段,即數(shù)據(jù)架構(gòu)的設(shè)計(jì),就會(huì)開(kāi)始。扎實(shí)的需求分析是所有數(shù)據(jù)項(xiàng)目的基石。
三、設(shè)計(jì)數(shù)據(jù)架構(gòu):創(chuàng)建正確的結(jié)構(gòu)
數(shù)據(jù)架構(gòu)設(shè)計(jì)是直接影響數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目成功的關(guān)鍵步驟。此階段定義了數(shù)據(jù)倉(cāng)庫(kù)的結(jié)構(gòu)以及數(shù)據(jù)的處理方式。精心設(shè)計(jì)的數(shù)據(jù)架構(gòu)有助于數(shù)據(jù)的流動(dòng)、集成、存儲(chǔ)和訪問(wèn)。然而,設(shè)計(jì)數(shù)據(jù)架構(gòu)的方法有很多種,選擇合適的方法應(yīng)與項(xiàng)目的需求和目標(biāo)相符。
(一)數(shù)據(jù)架構(gòu)選項(xiàng)
數(shù)據(jù)架構(gòu)設(shè)計(jì)方法的選擇取決于項(xiàng)目目標(biāo)、數(shù)據(jù)類(lèi)型和預(yù)期用途。每種方法都有其優(yōu)勢(shì)和挑戰(zhàn)。因此,徹底研究每種方法的基本特性并了解它們?cè)谀男┣闆r下最適用至關(guān)重要。

1.數(shù)據(jù)倉(cāng)庫(kù)(Data Warehouse)
數(shù)據(jù)倉(cāng)庫(kù)通常是一種用于收集大量結(jié)構(gòu)化數(shù)據(jù)的結(jié)構(gòu),這些數(shù)據(jù)經(jīng)過(guò)優(yōu)化后可用于分析和報(bào)告。在基于 SQL 的系統(tǒng)中,數(shù)據(jù)以特定的結(jié)構(gòu)進(jìn)行組織,商業(yè)智能應(yīng)用程序會(huì)處理這些數(shù)據(jù)。數(shù)據(jù)倉(cāng)庫(kù)通常具有以下特點(diǎn):
- 結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ):數(shù)據(jù)倉(cāng)庫(kù)僅處理結(jié)構(gòu)化數(shù)據(jù)。這些數(shù)據(jù)通常存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中,并組織成標(biāo)準(zhǔn)化和結(jié)構(gòu)化的表。這使得數(shù)據(jù)能夠存儲(chǔ)在明確定義的數(shù)據(jù)結(jié)構(gòu)(例如列和行)中。
 - 專(zhuān)注于報(bào)告和分析:數(shù)據(jù)倉(cāng)庫(kù)經(jīng)過(guò)優(yōu)化,允許數(shù)據(jù)分析師和商業(yè)智能團(tuán)隊(duì)輕松生成報(bào)告。這使得快速查詢和執(zhí)行廣泛的數(shù)據(jù)分析變得更加容易。
 - 數(shù)據(jù)清理與集成:在數(shù)據(jù)倉(cāng)庫(kù)中,ETL(提取、轉(zhuǎn)換、加載)流程用于清理和合并來(lái)自不同來(lái)源的數(shù)據(jù)。此過(guò)程確保數(shù)據(jù)以一致的格式加載到倉(cāng)庫(kù)系統(tǒng)中,并且干凈可用。
 


優(yōu)點(diǎn):
- 高性能報(bào)告:數(shù)據(jù)倉(cāng)庫(kù)針對(duì)報(bào)告進(jìn)行了優(yōu)化,可以有效地處理復(fù)雜的查詢,提供快速的洞察并促進(jìn)高性能報(bào)告。
 - 數(shù)據(jù)安全性和一致性:數(shù)據(jù)倉(cāng)庫(kù)保持高水平的數(shù)據(jù)安全性并確保數(shù)據(jù)的一致性,為決策和分析提供可靠的環(huán)境。
 - 輕松查詢和訪問(wèn):數(shù)據(jù)組織良好,易于查詢和訪問(wèn)。這使得數(shù)據(jù)分析師能夠快速檢索和處理數(shù)據(jù)。
 
挑戰(zhàn):
- 僅適用于結(jié)構(gòu)化數(shù)據(jù):數(shù)據(jù)倉(cāng)庫(kù)僅適用于結(jié)構(gòu)化數(shù)據(jù),這意味著它不適用于半結(jié)構(gòu)化或非結(jié)構(gòu)化數(shù)據(jù),例如文本文件、圖像或視頻。
 - 高成本:處理和存儲(chǔ)大型數(shù)據(jù)集的成本可能很高,尤其是在處理海量數(shù)據(jù)時(shí)。維護(hù)這樣的系統(tǒng)可能需要在基礎(chǔ)設(shè)施和運(yùn)營(yíng)成本方面投入大量資金。
 

用于構(gòu)建數(shù)據(jù)倉(cāng)庫(kù)(DW)架構(gòu)的平臺(tái):
- Google BigQuery:提供無(wú)服務(wù)器且高度可擴(kuò)展的架構(gòu),使其適合快速部署和處理大量數(shù)據(jù),而無(wú)需管理基礎(chǔ)設(shè)施。
 - Amazon Redshift:AWS 上快速且可擴(kuò)展的數(shù)據(jù)倉(cāng)庫(kù)解決方案,非常適合已經(jīng)與 AWS 生態(tài)系統(tǒng)集成的項(xiàng)目。
 - Snowflake:基于云的平臺(tái),具有共享架構(gòu),支持多云部署,為數(shù)據(jù)倉(cāng)庫(kù)提供極大的靈活性和可擴(kuò)展性。
 - Microsoft Azure Synapse Analytics(以前稱為 SQL DW):將數(shù)據(jù)倉(cāng)庫(kù)與大數(shù)據(jù)集成相結(jié)合,使其成為利用 Microsoft Azure 生態(tài)系統(tǒng)的組織的多功能選擇。
 - Teradata:傳統(tǒng)的大數(shù)據(jù)解決方案之一,通常用于需要復(fù)雜數(shù)據(jù)倉(cāng)庫(kù)解決方案的大規(guī)模內(nèi)部部署環(huán)境。
 - IBM Db2 Warehouse:IBM 的企業(yè)數(shù)據(jù)倉(cāng)庫(kù)解決方案,適用于需要具有高安全性和可靠性的強(qiáng)大內(nèi)部部署解決方案的組織。
 
數(shù)據(jù)架構(gòu)平臺(tái)的選擇取決于項(xiàng)目的規(guī)模、預(yù)算、技術(shù)要求和團(tuán)隊(duì)的專(zhuān)業(yè)知識(shí)。對(duì)于中小型項(xiàng)目,像 Google BigQuery 或 Snowflake 這樣的無(wú)服務(wù)器解決方案可能是首選,因?yàn)樗鼈冊(cè)O(shè)置快捷、維護(hù)成本低。Amazon Redshift 對(duì)于集成在 AWS 生態(tài)系統(tǒng)內(nèi)的項(xiàng)目來(lái)說(shuō)非常有利。對(duì)于使用 Azure 的企業(yè),推薦使用 Microsoft Azure Synapse,因?yàn)樗婢邤?shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)的功能。對(duì)于實(shí)時(shí)數(shù)據(jù)需求或需要頻繁更新的大型數(shù)據(jù)集,Snowflake 的時(shí)序是數(shù)據(jù)和性能能力尤為突出。對(duì)于需要高安全性和數(shù)據(jù)主權(quán)的案例,像 Teradata 或 IBM Db2 Warehouse 這樣的本地解決方案是理想之選。
2.數(shù)據(jù)湖(Data Lake)
數(shù)據(jù)湖是一種靈活的結(jié)構(gòu),可將結(jié)構(gòu)化、半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)整合在一起存儲(chǔ)。這種架構(gòu)通常用于存儲(chǔ)原始數(shù)據(jù),并用于高級(jí)分析。數(shù)據(jù)湖常用于大型數(shù)據(jù)項(xiàng)目,尤其是在數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)等領(lǐng)域,因?yàn)樘幚砀鞣N類(lèi)型數(shù)據(jù)的能力至關(guān)重要。
數(shù)據(jù)湖允許組織以原生格式存儲(chǔ)海量數(shù)據(jù),從而更輕松地集成和分析來(lái)自各種來(lái)源的數(shù)據(jù),而無(wú)需進(jìn)行前期結(jié)構(gòu)化。這種靈活性使數(shù)據(jù)湖特別適合需要大量存儲(chǔ)和處理能力的大數(shù)據(jù)項(xiàng)目。

不同數(shù)據(jù)類(lèi)型的存儲(chǔ):數(shù)據(jù)湖可以以原始格式存儲(chǔ)各種類(lèi)型的數(shù)據(jù)(從數(shù)據(jù)庫(kù)到文本文件、圖像等等)。數(shù)據(jù)通常以基于文件的格式(例如 CSV、JSON、Parquet)存儲(chǔ)。這允許包含結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),從而為數(shù)據(jù)存儲(chǔ)提供了極大的靈活性。
- 數(shù)據(jù)處理靈活性:該架構(gòu)為數(shù)據(jù)工程師和數(shù)據(jù)科學(xué)家提供了廣泛的靈活性,使他們能夠以任何他們選擇的方式處理數(shù)據(jù)。它非常適合高級(jí)分析和機(jī)器學(xué)習(xí)任務(wù),因?yàn)樵紨?shù)據(jù)可以根據(jù)需要進(jìn)行處理和轉(zhuǎn)換。
 - 數(shù)據(jù)更新:數(shù)據(jù)湖非常適合處理不斷變化和增長(zhǎng)的數(shù)據(jù)集,支持實(shí)時(shí)或近實(shí)時(shí)的數(shù)據(jù)處理。這對(duì)于需要最新信息進(jìn)行分析的項(xiàng)目尤其有用。
 
優(yōu)點(diǎn):
- 結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ):數(shù)據(jù)湖允許存儲(chǔ)各種類(lèi)型的數(shù)據(jù),從而提供數(shù)據(jù)存儲(chǔ)的靈活性。
 - 數(shù)據(jù)靈活性:數(shù)據(jù)湖提供了極大的靈活性,允許輕松添加不同類(lèi)型的數(shù)據(jù),而不需要嚴(yán)格的結(jié)構(gòu)。
 - 適用于機(jī)器學(xué)習(xí)和高級(jí)分析:由于數(shù)據(jù)湖具有存儲(chǔ)原始數(shù)據(jù)的能力,因此非常適合復(fù)雜的機(jī)器學(xué)習(xí)任務(wù)和高級(jí)分析過(guò)程。
 
挑戰(zhàn):
- 復(fù)雜的數(shù)據(jù)管理:管理湖中的數(shù)據(jù)可能極具挑戰(zhàn)性。如果沒(méi)有合理的組織,數(shù)據(jù)將難以處理,從而導(dǎo)致“數(shù)據(jù)沼澤”問(wèn)題,數(shù)據(jù)變得雜亂無(wú)章,難以處理。
 - 數(shù)據(jù)安全和訪問(wèn)控制:與數(shù)據(jù)倉(cāng)庫(kù)相比,由于系統(tǒng)內(nèi)存儲(chǔ)的數(shù)據(jù)類(lèi)型和格式多種多樣,管理數(shù)據(jù)湖中的數(shù)據(jù)安全和訪問(wèn)控制可能更加復(fù)雜。
 

用于構(gòu)建數(shù)據(jù)湖架構(gòu)的平臺(tái):
- Amazon S3:構(gòu)建數(shù)據(jù)湖最常用的基礎(chǔ)設(shè)施,為海量數(shù)據(jù)提供可擴(kuò)展且經(jīng)濟(jì)高效的存儲(chǔ)。
 - Azure 數(shù)據(jù)湖存儲(chǔ) (ADLS Gen2):基于 Microsoft Azure 構(gòu)建的高性能數(shù)據(jù)湖解決方案,專(zhuān)為大規(guī)模分析而設(shè)計(jì)。
 - Google Cloud Storage (GCS):Google Cloud 的數(shù)據(jù)湖解決方案,提供可擴(kuò)展的存儲(chǔ)和與其他 Google Cloud 服務(wù)的集成。
 - Apache Hadoop HDFS:適用于本地系統(tǒng),提供分布式文件系統(tǒng)來(lái)存儲(chǔ)和處理大型數(shù)據(jù)集。
 - MinIO:一個(gè)開(kāi)源的、與 S3 兼容的數(shù)據(jù)湖構(gòu)建平臺(tái),提供可擴(kuò)展且靈活的對(duì)象存儲(chǔ)。
 
3. Data Lakehouse(數(shù)據(jù)湖+數(shù)據(jù)倉(cāng)庫(kù)組合)
數(shù)據(jù)湖倉(cāng) (Data Lakehouse) 充當(dāng)數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)之間的橋梁,將數(shù)據(jù)湖處理的靈活性與數(shù)據(jù)倉(cāng)庫(kù)的結(jié)構(gòu)化數(shù)據(jù)管理功能相結(jié)合。這種方法整合了結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù),在兩個(gè)世界之間提供了靈活性。本質(zhì)上,數(shù)據(jù)湖倉(cāng)將數(shù)據(jù)湖的原始數(shù)據(jù)存儲(chǔ)能力與數(shù)據(jù)倉(cāng)庫(kù)中針對(duì)結(jié)構(gòu)化數(shù)據(jù)的優(yōu)化查詢性能相結(jié)合。這使其成為需要兼顧兩者優(yōu)勢(shì)的組織的理想解決方案,它能夠輕松集成各種數(shù)據(jù)類(lèi)型,同時(shí)提供高效的分析查詢性能。

靈活性和結(jié)構(gòu):數(shù)據(jù)湖倉(cāng)將數(shù)據(jù)湖的靈活性與數(shù)據(jù)倉(cāng)庫(kù)的結(jié)構(gòu)和性能相結(jié)合。數(shù)據(jù)可以以結(jié)構(gòu)化格式存儲(chǔ),同時(shí)還可以處理和集成半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。這種混合方法使組織能夠處理各種類(lèi)型的數(shù)據(jù),同時(shí)保持一致的結(jié)構(gòu)以用于分析。
高級(jí)分析和報(bào)告:在數(shù)據(jù)湖中,可以執(zhí)行基于 SQL 的查詢和機(jī)器學(xué)習(xí)操作,以滿足分析和報(bào)告需求。這使組織能夠在同一平臺(tái)上利用傳統(tǒng)的商業(yè)智能和先進(jìn)的數(shù)據(jù)科學(xué)技術(shù)。
優(yōu)點(diǎn):
- 將數(shù)據(jù)倉(cāng)庫(kù)的性能與數(shù)據(jù)湖的靈活性相結(jié)合。
 - 融合兩種方法的優(yōu)點(diǎn),并為處理不同數(shù)據(jù)類(lèi)型提供有利的環(huán)境。
 
挑戰(zhàn):
- 復(fù)雜的設(shè)置和管理:由于結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)的集成,這些類(lèi)型的架構(gòu)可能難以設(shè)置和管理。
 - 高級(jí)數(shù)據(jù)管理和性能優(yōu)化:需要仔細(xì)管理和優(yōu)化數(shù)據(jù)處理和性能,使得維護(hù)更加耗費(fèi)資源。
 

用于構(gòu)建數(shù)據(jù)湖架構(gòu)的平臺(tái):
- Databricks + Delta Lake:通常與 Lakehouse 架構(gòu)相關(guān)聯(lián),提供批量和流數(shù)據(jù)處理的統(tǒng)一方法,重點(diǎn)關(guān)注可靠性和性能。
 - Apache Iceberg:Netflix 開(kāi)發(fā)的開(kāi)源 Lakehouse 解決方案,提供支持大規(guī)模數(shù)據(jù)湖和 ACID 事務(wù)等功能。
 - Apache Hudi:一種支持?jǐn)?shù)據(jù)版本控制和流處理的開(kāi)源解決方案,通常用于處理大量傳入數(shù)據(jù),并能夠跟蹤隨時(shí)間的變化。
 - Azure Synapse Analytics:一個(gè)結(jié)合數(shù)據(jù)倉(cāng)庫(kù)和數(shù)據(jù)湖功能的平臺(tái),非常適合使用 Microsoft Azure 的組織,可實(shí)現(xiàn)兩種架構(gòu)之間的無(wú)縫集成。
 - Snowflake(最近更新):已開(kāi)始提供 Lakehouse 功能,融合了數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)的性能和功能。
 - Google BigLake:Google Cloud 的 Lakehouse 解決方案,它集成了跨多個(gè)云的存儲(chǔ)和分析,提供靈活且可擴(kuò)展的數(shù)據(jù)處理。
 
數(shù)據(jù)湖架構(gòu)的平臺(tái)選擇應(yīng)基于大數(shù)據(jù)的靈活性和分析的性能預(yù)期。如果需要流處理和批處理的組合,并且需要開(kāi)源的靈活解決方案,那么Databricks + Delta Lake是一個(gè)不錯(cuò)的選擇。對(duì)于企業(yè) Azure 環(huán)境,建議使用結(jié)合了數(shù)據(jù)湖和數(shù)據(jù)倉(cāng)庫(kù)功能的Azure Synapse Analytics。BigQuery + BigLake集成對(duì) Google Cloud 用戶非常有利,因?yàn)樗軌驅(qū)?shù)據(jù)湖數(shù)據(jù)與分析查詢相結(jié)合。如果數(shù)據(jù)版本控制、ACID 合規(guī)性和成本優(yōu)化很重要,則應(yīng)考慮Apache Hudi或Apache Iceberg等解決方案。此外,如果需要集中管理來(lái)自不同域的數(shù)據(jù),那么與 Databricks 集成的Unity Catalog可能是治理的理想選擇。
下表比較了上述三種架構(gòu):

4.數(shù)據(jù)網(wǎng)格
數(shù)據(jù)網(wǎng)格 (Data Mesh) 提出了一種分布式架構(gòu),而非中心化的數(shù)據(jù)結(jié)構(gòu)。在這種方法中,每個(gè)部門(mén)創(chuàng)建自己的數(shù)據(jù)產(chǎn)品并與其他部門(mén)共享。數(shù)據(jù)網(wǎng)格使數(shù)據(jù)架構(gòu)模塊化且去中心化,尤其適用于大型復(fù)雜的組織。
- 分布式數(shù)據(jù)管理:每個(gè)部門(mén)創(chuàng)建并負(fù)責(zé)自己的數(shù)據(jù)產(chǎn)品。這避免了將數(shù)據(jù)集中在一個(gè)位置,從而提供了更大的靈活性。
 - 預(yù)防瓶頸:通過(guò)避免創(chuàng)建集中式數(shù)據(jù)管理結(jié)構(gòu),數(shù)據(jù)網(wǎng)格可以防止傳統(tǒng)集中式系統(tǒng)中通常出現(xiàn)的瓶頸。
 

優(yōu)點(diǎn):
- 分布式結(jié)構(gòu)允許更靈活的數(shù)據(jù)管理和訪問(wèn)。
 - 數(shù)據(jù)所有權(quán)由各部門(mén)共享,每個(gè)部門(mén)負(fù)責(zé)自己的數(shù)據(jù)產(chǎn)品。
 
挑戰(zhàn):
- 缺乏集中數(shù)據(jù)管理會(huì)給維護(hù)數(shù)據(jù)一致性和完整性帶來(lái)挑戰(zhàn)。
 - 數(shù)據(jù)集成和處理工作流程可能變得更加復(fù)雜。
 
用于構(gòu)建數(shù)據(jù)網(wǎng)格架構(gòu)的平臺(tái):
- AWS Lake Formation + Glue + S3:提供基于域的數(shù)據(jù)訪問(wèn)和治理。
 - Databricks Unity Catalog:支持 Data Mesh 的數(shù)據(jù)治理方面。
 - Starburst / Trino:支持跨域數(shù)據(jù)查詢和聯(lián)合。
 - Snowflake:通過(guò)安全數(shù)據(jù)共享促進(jìn)域之間的數(shù)據(jù)共享。
 - Kafka / Event Streaming(Confluent、Redpanda):用于域間數(shù)據(jù)流。
 - DataHub / Amundsen / OpenMetadata:專(zhuān)注于元數(shù)據(jù)管理和編目。
 
數(shù)據(jù)網(wǎng)格架構(gòu)平臺(tái)的選擇取決于組織對(duì)領(lǐng)域驅(qū)動(dòng)的數(shù)據(jù)所有權(quán)模型(該模型摒棄了中心化)的準(zhǔn)備程度。如果團(tuán)隊(duì)構(gòu)建為獨(dú)立開(kāi)發(fā)數(shù)據(jù)產(chǎn)品,則建議使用支持中心化治理的解決方案,例如 Databricks Unity Catalog 或 Snowflake Secure Data Sharing。如果需要跨不同數(shù)據(jù)源的數(shù)據(jù)聯(lián)合和統(tǒng)一查詢,則適合使用 Starburst 或 Trino 等分布式查詢引擎。對(duì)于元數(shù)據(jù)管理和透明數(shù)據(jù)發(fā)現(xiàn),DataHub、Amundsen 或 OpenMetadata 等工具是理想之選。在需要事件驅(qū)動(dòng)數(shù)據(jù)共享的場(chǎng)景中,Kafka 或 Confluent 基礎(chǔ)設(shè)施可以實(shí)現(xiàn)域間的實(shí)時(shí)數(shù)據(jù)流。在具有明確內(nèi)部數(shù)據(jù)所有權(quán)和訪問(wèn)策略的組織中,這些工具結(jié)合使用,可以構(gòu)建成功的數(shù)據(jù)網(wǎng)格基礎(chǔ)設(shè)施。
在數(shù)據(jù)架構(gòu)選擇方面,每種方法都有各自的優(yōu)勢(shì)和挑戰(zhàn)。數(shù)據(jù)倉(cāng)庫(kù)提供了更結(jié)構(gòu)化、更注重報(bào)告的框架,而數(shù)據(jù)湖則提供了靈活性和強(qiáng)大的大數(shù)據(jù)分析能力。數(shù)據(jù)湖倉(cāng)彌合了兩者之間的差距,而數(shù)據(jù)網(wǎng)格則提供了更靈活、更去中心化的數(shù)據(jù)管理模型。正確的方法應(yīng)根據(jù)項(xiàng)目的需求和長(zhǎng)期目標(biāo)來(lái)確定。
在本項(xiàng)目中,我們選擇了數(shù)據(jù)倉(cāng)庫(kù)方法,因?yàn)樗鼘?zhuān)注于處理結(jié)構(gòu)化數(shù)據(jù),以實(shí)現(xiàn)快速報(bào)告和商業(yè)智能。每個(gè)項(xiàng)目都有不同的需求,因此選擇合適的方法對(duì)于確保數(shù)據(jù)管理流程的成功至關(guān)重要。
(二)選擇正確的方法
在本項(xiàng)目中,數(shù)據(jù)倉(cāng)庫(kù)方法被認(rèn)為是最合適的選擇。對(duì)于需要處理結(jié)構(gòu)化數(shù)據(jù)并專(zhuān)注于報(bào)告和商業(yè)智能的項(xiàng)目來(lái)說(shuō),數(shù)據(jù)倉(cāng)庫(kù)是理想的方法。然而,其他方法,例如數(shù)據(jù)湖、數(shù)據(jù)湖倉(cāng)和數(shù)據(jù)網(wǎng)格,也可能對(duì)特定項(xiàng)目有利。
每種方法都有其獨(dú)特的優(yōu)勢(shì)和挑戰(zhàn)。例如:
- 數(shù)據(jù)倉(cāng)庫(kù)提供了強(qiáng)大的報(bào)告和分析功能,但只能處理結(jié)構(gòu)化數(shù)據(jù)。
 - 數(shù)據(jù)湖提供了靈活性和多種數(shù)據(jù)類(lèi)型,但可能導(dǎo)致復(fù)雜的數(shù)據(jù)管理。
 - Data Lakehouse結(jié)合了兩者的優(yōu)點(diǎn),提供了靈活性和性能。
 - 數(shù)據(jù)網(wǎng)格呈現(xiàn)分布式架構(gòu),但必須注意集成和一致性挑戰(zhàn)。
 
數(shù)據(jù)倉(cāng)庫(kù)方法已作為示例,以滿足項(xiàng)目需求。然而,在確定任何數(shù)據(jù)項(xiàng)目最合適的方法時(shí),必須考慮數(shù)據(jù)類(lèi)型、分析需求和用例等因素。
四、Medallion架構(gòu)詳解:現(xiàn)代數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)
數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)中使用的不同方法對(duì)系統(tǒng)的靈活性、性能和效率有重大影響。在本文中,我們將研究流行的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)方法,例如 Inmon、Kimball、Data Vault 和 Medallion,然后對(duì) Medallion 架構(gòu)進(jìn)行更深入的解釋。

(一)Inmon 方法:集中式數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)
Inmon 是最早也是最古老的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)方法之一。根據(jù) Inmon 的說(shuō)法,數(shù)據(jù)倉(cāng)庫(kù)被設(shè)計(jì)為企業(yè)數(shù)據(jù)倉(cāng)庫(kù) (EDW),其中所有數(shù)據(jù)都存儲(chǔ)在一個(gè)中心位置。在這種方法中,所有數(shù)據(jù)都經(jīng)過(guò)規(guī)范化處理,并使用高級(jí)數(shù)據(jù)模型加載到倉(cāng)庫(kù)系統(tǒng)中。
特征:
- 數(shù)據(jù)通常使用第三范式(3NF)存儲(chǔ)。
 - 提供企業(yè)級(jí)方法,即整個(gè)組織的中央數(shù)據(jù)倉(cāng)庫(kù)。
 - 數(shù)據(jù)集成過(guò)程復(fù)雜,但保證了數(shù)據(jù)的高度準(zhǔn)確性。
 
優(yōu)點(diǎn):
- 數(shù)據(jù)一致且組織良好。
 - 適用于大型項(xiàng)目和企業(yè)級(jí)數(shù)據(jù)集成。
 
挑戰(zhàn):
- 開(kāi)發(fā)過(guò)程緩慢,因?yàn)橐磺卸夹枰獜念^開(kāi)始重組。
 - 需要復(fù)雜且耗時(shí)的數(shù)據(jù)建模。
 
(二)Kimball 方法:用戶友好的數(shù)據(jù)倉(cāng)庫(kù)
與 Inmon 相比,Kimball 提供了更加用戶友好且靈活的方法。在 Kimball 的方法論中,數(shù)據(jù)倉(cāng)庫(kù)被設(shè)計(jì)成更小、更具體的部分,稱為數(shù)據(jù)集市。數(shù)據(jù)使用簡(jiǎn)單的模型(例如星型模式和雪花模式)進(jìn)行組織。

特征:
- 數(shù)據(jù)通常經(jīng)過(guò)非規(guī)范化和優(yōu)化,以便于查詢。
 - 每個(gè)數(shù)據(jù)集市都為特定業(yè)務(wù)領(lǐng)域提供特定的報(bào)告和分析目的。
 
優(yōu)點(diǎn):
- 提供便捷的訪問(wèn)和快速的查詢。
 - 非常適合小型項(xiàng)目或特定分析要求。
 
挑戰(zhàn):
- 非規(guī)范化的數(shù)據(jù)可能會(huì)導(dǎo)致大型數(shù)據(jù)集中的數(shù)據(jù)冗余。
 - 管理數(shù)據(jù)一致性變得更具挑戰(zhàn)性。
 
(三)Data Vault:靈活且模塊化的數(shù)據(jù)模型
Data Vault 方法通過(guò)提供靈活性和模塊化,為數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)帶來(lái)了新的視角。在這種方法中,數(shù)據(jù)以原始形式存儲(chǔ),然后通過(guò)添加業(yè)務(wù)規(guī)則進(jìn)行處理。Data Vault 通常是大型復(fù)雜數(shù)據(jù)項(xiàng)目的首選。
特征:
- 提供快速適應(yīng)和靈活性。
 - 數(shù)據(jù)準(zhǔn)確性和業(yè)務(wù)規(guī)則在每一層分別處理。
 - 數(shù)據(jù)分為三個(gè)核心組件:Hub、Link、Satellite。
 
優(yōu)點(diǎn):
- 允許與各種數(shù)據(jù)源快速集成。
 - 輕松適應(yīng)不斷變化的業(yè)務(wù)需求。
 
挑戰(zhàn):
- 復(fù)雜的數(shù)據(jù)模型可能會(huì)給管理帶來(lái)困難。
 - 可能需要更高的加工成本。
 
(四)Medallion 架構(gòu):現(xiàn)代且簡(jiǎn)化的數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)
Medallion 架構(gòu)是現(xiàn)代數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)的最新方法之一。該結(jié)構(gòu)將數(shù)據(jù)處理過(guò)程分為三層:青銅層(原始數(shù)據(jù))、白銀層(清理數(shù)據(jù))和黃金層(符合業(yè)務(wù)規(guī)則的數(shù)據(jù))。
1.Medallion 架構(gòu)的關(guān)鍵層
- 青銅層(原始數(shù)據(jù)):青銅層是數(shù)據(jù)最初接收并以未處理形式存儲(chǔ)的地方。數(shù)據(jù)保持其原始狀態(tài),在此階段不進(jìn)行任何轉(zhuǎn)換。目標(biāo)是保留數(shù)據(jù)最初接收時(shí)的狀態(tài)。數(shù)據(jù)工程師將原始數(shù)據(jù)存儲(chǔ)在此層,以便進(jìn)行錯(cuò)誤調(diào)試和可追溯性(跟蹤數(shù)據(jù)源和更改)。
 - 白銀層(清理數(shù)據(jù)):在銀級(jí)層中,原始數(shù)據(jù)經(jīng)過(guò)清理、規(guī)范化和整理。該層專(zhuān)門(mén)用于數(shù)據(jù)轉(zhuǎn)換和清理過(guò)程,為分析做好準(zhǔn)備。數(shù)據(jù)中任何缺失或錯(cuò)誤的部分都會(huì)得到糾正,并通過(guò)改進(jìn)使數(shù)據(jù)更加一致。
 - 黃金層(符合業(yè)務(wù)規(guī)則的數(shù)據(jù)):黃金層是為商業(yè)智能、報(bào)告和分析準(zhǔn)備數(shù)據(jù)的地方,并應(yīng)用了業(yè)務(wù)規(guī)則。在此層中,數(shù)據(jù)建模和分析根據(jù)業(yè)務(wù)用戶的需求進(jìn)行。數(shù)據(jù)與商業(yè)智能工具(例如 Power BI、Tableau 等)保持一致,并針對(duì)報(bào)告流程進(jìn)行了優(yōu)化。
 
2.各層級(jí)要求下圖展示了各層級(jí)的要求。
例如,滿足“青銅級(jí)”層級(jí)的要求后,將其保存為文件,無(wú)需進(jìn)一步處理。之后,將“白銀級(jí)”層級(jí)中的轉(zhuǎn)換應(yīng)用到單獨(dú)的文件中,并進(jìn)一步優(yōu)化數(shù)據(jù)。各層級(jí)負(fù)責(zé)完成其特定范圍內(nèi)的任務(wù)。最后,“黃金級(jí)”層級(jí)代表數(shù)據(jù)已準(zhǔn)備好進(jìn)行建模和商業(yè)智能任務(wù)的階段。下圖清晰地展示了這些階段。


Medallion Architecture 的優(yōu)勢(shì)
- 簡(jiǎn)潔易懂:Medallion 結(jié)構(gòu)簡(jiǎn)單易懂,無(wú)需復(fù)雜的數(shù)據(jù)模型。每一層都代表著不同的目的和功能。
 - 可追溯性:由于數(shù)據(jù)的每個(gè)階段都是可追溯的,因此可以快速識(shí)別和解決任何數(shù)據(jù)問(wèn)題。
 - 靈活性和性能:它既提供了靈活性,又實(shí)現(xiàn)了快速的數(shù)據(jù)處理和查詢。此外,由于每個(gè)階段都可以單獨(dú)處理,因此數(shù)據(jù)管理具有高度的靈活性。
 
Medallion Architecture的應(yīng)用
- 大數(shù)據(jù)項(xiàng)目:Medallion 架構(gòu)是收集和處理大量數(shù)據(jù)的項(xiàng)目的理想解決方案。
 - 高級(jí)分析和機(jī)器學(xué)習(xí):黃金層中為報(bào)告和分析準(zhǔn)備的數(shù)據(jù)支持青銅層和白銀層中原始數(shù)據(jù)的高級(jí)分析。
 - 數(shù)據(jù)倉(cāng)庫(kù)和商業(yè)智能需求:Medallion 架構(gòu)非常適合數(shù)據(jù)倉(cāng)庫(kù)和商業(yè)智能項(xiàng)目。
 
Medallion 架構(gòu)是一種高度靈活高效的現(xiàn)代數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)方法。該模型為數(shù)據(jù)工程師和業(yè)務(wù)分析師提供了顯著的優(yōu)勢(shì),確保了數(shù)據(jù)處理每個(gè)階段的清晰度和可追溯性。Medallion 提供了至關(guān)重要的優(yōu)勢(shì),尤其對(duì)于需要高級(jí)分析和報(bào)告的項(xiàng)目而言。
五、可視化數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)
數(shù)據(jù)倉(cāng)庫(kù)的設(shè)計(jì)和架構(gòu)通常涉及復(fù)雜的結(jié)構(gòu),僅用文字難以解釋。因此,創(chuàng)建可視化的表示形式對(duì)于使數(shù)據(jù)倉(cāng)庫(kù)項(xiàng)目更易于理解和實(shí)施至關(guān)重要??梢暬瘓D表有助于說(shuō)明復(fù)雜的數(shù)據(jù)流和系統(tǒng)結(jié)構(gòu),確保所有利益相關(guān)者都能理解設(shè)計(jì)。
(一)數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)圖中的關(guān)鍵元素
在繪制數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)時(shí),應(yīng)考慮以下關(guān)鍵要素:
1.數(shù)據(jù)源在圖表中,數(shù)據(jù)源通常用方框表示,并通過(guò)指向數(shù)據(jù)倉(cāng)庫(kù)的箭頭連接。數(shù)據(jù)源可以有多種格式,例如:
- 數(shù)據(jù)庫(kù)
 - CSV 文件
 - APIs
 - Web 服務(wù)
 
這些元素的可視化標(biāo)志著項(xiàng)目數(shù)據(jù)流的第一步。
2. ETL 流程(提取、轉(zhuǎn)換、加載)從數(shù)據(jù)源提取數(shù)據(jù)、進(jìn)行轉(zhuǎn)換并將其加載到數(shù)據(jù)倉(cāng)庫(kù)的過(guò)程稱為 ETL。提取(數(shù)據(jù)收集)、轉(zhuǎn)換(數(shù)據(jù)轉(zhuǎn)換)和加載(數(shù)據(jù)加載)這幾個(gè)步驟通常在圖中用順序箭頭表示。每個(gè)步驟代表數(shù)據(jù)流中的不同階段,應(yīng)在圖中清晰可見(jiàn)。
3. 數(shù)據(jù)倉(cāng)庫(kù)數(shù)據(jù)倉(cāng)庫(kù)通常表示為一個(gè)集中式結(jié)構(gòu),所有數(shù)據(jù)都收集在這里并準(zhǔn)備進(jìn)行分析。處理后的數(shù)據(jù)存儲(chǔ)在這里并發(fā)送到報(bào)告流程。
4. 層級(jí)結(jié)構(gòu)如果采用類(lèi)似 Medallion Architecture 的方法,則應(yīng)在圖表中清晰地標(biāo)明不同的層級(jí)(青銅、白銀、黃金)。每一層都以標(biāo)簽的形式直觀地表示,該標(biāo)簽描述了數(shù)據(jù)處理的程度及其預(yù)期用途。
5. 商業(yè)智能和報(bào)告(BI & Reporting)商業(yè)智能 (BI) 工具和報(bào)告平臺(tái),用于向最終用戶呈現(xiàn)數(shù)據(jù),也應(yīng)包含在圖表中。報(bào)告工具是分析和解釋數(shù)據(jù)的最后一步。
通過(guò)將數(shù)據(jù)倉(cāng)庫(kù)組件組織成這些可視化元素,所有項(xiàng)目利益相關(guān)者可以更輕松地理解數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)中涉及的結(jié)構(gòu)、流程和過(guò)程。

(二)可視化數(shù)據(jù)倉(cāng)庫(kù)模式
下面是一個(gè)示例圖,展示了數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)如何可視化:
1.數(shù)據(jù)源(例如 ERP、CRM 系統(tǒng))提供流向數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)。
2.ETL 流程顯示數(shù)據(jù)如何從源移動(dòng)到倉(cāng)庫(kù)。
3.層和商業(yè)智能工具表明如何處理數(shù)據(jù)并呈現(xiàn)給用戶。

在數(shù)據(jù)倉(cāng)庫(kù)設(shè)計(jì)中使用可視化圖表是使復(fù)雜的數(shù)據(jù)流和系統(tǒng)結(jié)構(gòu)更易于理解的有效方法。清晰地可視化數(shù)據(jù)流、數(shù)據(jù)層和商業(yè)智能工具,有助于所有項(xiàng)目利益相關(guān)者更輕松地理解流程。在整個(gè)項(xiàng)目中,這些圖表可以作為參考,指導(dǎo)每個(gè)階段,確保數(shù)據(jù)倉(cāng)庫(kù)實(shí)施的成功執(zhí)行。
六、結(jié)論
數(shù)據(jù)架構(gòu)的選擇不僅僅是一個(gè)技術(shù)決策,更是一個(gè)戰(zhàn)略和組織決策。本文詳細(xì)討論了數(shù)據(jù)倉(cāng)庫(kù)、數(shù)據(jù)湖、數(shù)據(jù)湖倉(cāng)和數(shù)據(jù)網(wǎng)格等不同的架構(gòu)方法,并結(jié)合示例解釋了每種方法的適用場(chǎng)景、優(yōu)勢(shì)、挑戰(zhàn)以及可用于實(shí)現(xiàn)這些方法的平臺(tái)。此外,本文還基于一個(gè)實(shí)際項(xiàng)目詳細(xì)闡述了需求分析、數(shù)據(jù)源識(shí)別、ETL 流程、建模和文檔編制等步驟,展示了如何將 Medallion 等現(xiàn)代架構(gòu)應(yīng)用于數(shù)據(jù)工程。最終,選擇合適的數(shù)據(jù)架構(gòu)應(yīng)根據(jù)數(shù)據(jù)類(lèi)型、分析需求、組織結(jié)構(gòu)和長(zhǎng)期目標(biāo)進(jìn)行。這樣,企業(yè)不僅可以處理數(shù)據(jù),還可以構(gòu)建敏捷、可持續(xù)且強(qiáng)大的系統(tǒng),從數(shù)據(jù)中創(chuàng)造價(jià)值。















 
 
 














 
 
 
 