跳至主要内容

Data Lake vs Data Warehouse

Difference between Data Lake and Data Warehouse

特徵資料湖 (Data Lake)資料倉庫 (Data Warehouse)
數據類型支援結構化和非結構化數據,原始數據格式。主要支援結構化數據,通常經過預處理和轉換。
數據存儲中央存儲庫,原始格式保存數據。數據被加工、壓縮,以最佳方式存儲。
數據架構靈活,不需要預先定義結構。預先定義結構,支援星型或雪花型數據模型。
查詢和分析即席查詢和分析,支援多種工具。非即席查詢,主要支援商業智能工具。
成本相對較低,因為原始數據保存,無需預處理。相對較高,因為需要預處理和儲存優化。
用途適用於彈性的數據存儲和分析,支援多種數據類型。適用於結構化數據的報表、分析和企業決策。
時間性能適用於較長時間跨度的分析和處理。適用於即時或近實時的數據分析。

Data Lake

Delta Lake

Delta Lake 是一個開源的數據湖(Data Lake)儲存層,它在 Apache Spark 上構建,提供了 ACID(原子性、一致性、隔離性、持久性)事務的能力,透過在 Data Lake 加了一些 Data Warehouse 級別的特性,帶來數據可靠性和快速分析能力,實現 Lakehouse

  1. 事務支持: Delta Lake 提供了事務的支持,這意味著它能夠保證數據的一致性和可靠性。這使得在數據湖中進行複雜的數據操作時更加安全。
  2. 原子性操作: Delta Lake 支持原子性的更新、插入和刪除操作,這意味著數據湖的操作可以更加可控,減少了數據錯誤的風險。
  3. Schema 驗證: Delta Lake 可以進行模式(Schema)的驗證,確保數據的結構是正確的。這有助於保持數據的一致性和質量。
  4. 增量讀寫: Delta Lake 支持增量的寫入和讀取操作,這使得在大數據環境中進行高效的數據湖操作成為可能。
  5. 版本控制: Delta Lake 自帶版本控制,可以追蹤數據的歷史變更,並且支持回滾到先前的版本。

Delta Table vs External Table

特點Delta TableExternal Table
存儲位置Delta Table 的數據存儲在 Delta Lake 中,通常在分布式文件系統上。External Table 的數據存儲在外部位置,例如分布式文件系統(HDFS)或對象存儲(如 Amazon S3)。
事務支持支持 ACID 事務,提供原子性、一致性、隔離性和持久性。不提供事務支持,主要用於輕量查詢和操作外部數據。
版本控制具有內建的版本控制功能,可以追蹤數據的歷史變更。不提供內建的版本控制,需要額外實現或使用外部工具來管理歷史數據。
增量讀寫支持增量的數據寫入和讀取,可以有效處理大數據湖的數據操作。主要用於輕量操作,對外部數據源的寫入通常需要整個文件的替換而非增量。
模式驗證提供模式(Schema)驗證,確保數據的結構是正確的。通常不提供模式驗證,數據結構由外部數據源的定義確定。
適用情境適用於需要事務支持、版本控制、增量操作以及結構化數據處理的場景。適用於輕量查詢,無需事務支持,且數據已經存儲在外部位置的場景。

Multi-Hop Architecture

參考資料:Productionizing Machine Learning with Delta Lake

  1. Bronze Table: 這是數據管道中的原始數據層。Bronze table 包含從源頭提取的原始數據,可能是未經處理或僅經過輕微處理的數據。這個層次的表通常包含原始格式的數據,並可能還包含一些基本的數據清理。
  2. Silver Table: Silver table 是在原始數據的基礎上進行進一步處理和清理後的表。在這個階段,數據可能已經被結構化,缺失值已經處理,可能還進行了一些初步的轉換。Silver table 的目的是提供比原始數據更整潔、更易於理解的格式。
  3. Golden Table: Golden table 是經過最終加工和準備的數據,通常用於支持業務報告、分析和決策。這一層次的表包含高度結構化的數據,可能包括計算字段、業務指標以及已經經過多方面驗證和確認的數據。Golden table 是供最終用戶和報告系統使用的主要數據源。

Data Warehouse

OLAP (Online Analytical Processing)

線上分析處理 (OLAP)

OLAP 代表線上分析處理(Online Analytical Processing),針對大量讀取、低寫入工作負載進行優化,是一種用於對大量數據進行快速、互動性分析的計算機處理方法。主要用於商業智能(BI)和數據分析領域,讓用戶能夠以多維度的方式探索和分析數據。

Fact Table vs Dimension Table

特點事實表(Fact Table)維度表(Dimension Table)
定義包含數據的事實或實際數值,如銷售金額、數量。包含描述事實的上下文和分類信息的屬性,如時間、產品。
結構扁平結構,大量的 column 和相對較少的 row層次化結構,相對較少的 column 和更多的 row
關聯與多個維度表相關聯,提供上下文信息。與事實表之間的關聯,基於主鍵-外鍵的關聯。
示例包含銷售金額、數量、成本等度量。包含產品、時間、地區等維度的描述信息。
目的衡量業務績效,提供量化的數據。將數據放入上下文,提供分析的屬性描述。
類型數值型數據,可度量、可數量。文本型描述性信息,用於分類和上下文。

Star Schema 分析範例

Sales_Fact 包含實際銷售數據,如銷售金額和銷售數量

Order_IDProduct_IDDate_IDSales_AmountSales_Quantity
110120230101500010
210220230102750015
31032023010330006

Product_Dimension 產品相關資訊

Product_IDProduct_NameCategory_IDBrand_ID
101Laptop A1201
102Smartphone B2202
103Tablet C1203

Date_Dimension 銷售日期相關資訊

Date_IDDateYearMonthDay
20230101January 1, 202320230101
20230102January 2, 202320230102
20230103January 3, 202320230103

透過 SQL 執行這個查詢將得到每個產品類別在 2023 年 1 月的銷售總額

SELECT
d.Year AS Year,
d.Month AS Month,
p.Product_Name AS Product_Name,
p.Category_ID AS Product_Category,
SUM(f.Sales_Amount) AS Total_Sales
FROM
Sales_Fact f
JOIN
Date_Dimension d ON f.Date_ID = d.Date_ID
JOIN
Product_Dimension p ON f.Product_ID = p.Product_ID
WHERE
d.Year = 2023 AND d.Month = '01'
GROUP BY
d.Year, d.Month, p.Product_Name, p.Category_ID;

結果:

YearMonthProduct_NameProduct_CategoryTotal_Sales
202301Laptop A15000
202301Smartphone B27500
202301Tablet C13000