Data Lake
What?
簡單來說,Data Lake 是一種資料儲存架構,專門用來儲存大量的原始資料(Raw Data),且不需要事先進行結構化處理。它的設計理念是讓各式各樣型態的資料可以集中存放,無論是結構化(如表格)、半結構化(如 JSON)或非結構化(如影像檔、文字檔)。就像一座湖泊,可以容納多種型態的水源。
實務上,Data Lake 通常用於解決企業資料分散問題,例如:行銷部門可能使用 Excel 儲存客戶名單,而工程部門則有系統日誌檔案。這些不一致的格式與來源都能被整合到 Data Lake 中,方便後續分析和應用。
Who?
Data Lake 的主要使用者包括以下幾類:
-
資料科學家 (Data Scientists)
他們需要大量、多樣性的原始資料進行建模與分析,Data Lake 提供了便利且全面的存取來源。 -
工程師 (Engineers)
無論是 Data Engineers 還是 Software Engineers,都能利用 Data Lake 作為資料整合或 ETL (Extract, Transform, Load) 的來源。 -
商業分析師 (Business Analysts)
雖然分析師通常使用結構化資料,但透過工具將 Data Lake 裡的原始資訊轉換後,也能支援高階商業洞察。 -
IT 管理者
負責維護系統穩定性與安全性的人員,需要確保 Data Lake 的效能、訪問權限和儲存成本。
When?
以下幾種情境通常會導向使用 Data Lake:
-
大量、多元來源的資料需要集中管理
當企業擁有來自多個系統、設備或平台的非結構化或半結構化資料時,例如 IoT 裝置產生的大量感測器數據。 -
便於長期保存歷史數據
如果您希望保存完整歷史記錄以供未來分析,但目前還不確定具體用途。比如客戶瀏覽行為記錄。 -
探索性分析
資料科學家可能需要對未知形式的大量資料進行挖掘,而非預設好的 Schema 限制其查詢方式。 -
機器學習模型訓練所需的大量原始數據
ML 模型通常需要多元且未加工過的訓練數據集,而這正好是 Data Lake 的強項。
Where?
在架構中位於哪個部分?
在典型的企業架構中,Data Lake 通常位於以下位置:
- 資料流中的「中央儲存層」:它可以接收來自多個來源(如 CRM 系統、IoT 裝置)並供下游應用程序或分析工具取用。
- 與企業倉儲系統 (Data Warehouse) 並列:兩者分工不同。Data Warehouse 更偏向處理經過清洗和結構化後的數據,而 Data Lake 則負責儲存所有原始版本以備未來需求。
- 配合雲端技術:像 AWS 的 S3 或 Azure 的 Blob Storage 常被用作建置 Data Lake 的基礎儲存層。
Why?
傳統上,大量異質性的資料很難集中管理,更不用說進一步挖掘其潛力。Data Lake 解決了以下問題:
-
靈活性不足
傳統 Database 或 Data Warehouse 需要先定義 Schema,限制了即興探索與動態需求更新能力。而 Data Lake 支援 Schema-on-read,可以在讀取時才定義格式,大幅提升彈性。 -
成本高昂
結構化處理往往會增加硬體資源需求,但許多非即時使用的重要資訊其實可以以較低成本保存於冷儲存層中,例如 Amazon Glacier。 -
難以支持新型態應用程式需求
像機器學習、大規模流式處理這些技術,需要的是未加工過的大量數據,而不是「精修過」的小型數據集。
How?
🛠️ 建立階段
建立一個基本 Data Lake 流程如下:
- 確認主要目標與用途:例如是否要支持 AI 模型訓練?
- 選擇合適的平台:例如 AWS S3、Azure Blob Storage 或 Hadoop Distributed File System (HDFS)。
- 設計命名規則與目錄架構:便於日後查詢。例如以日期、來源分類檔案。
- 導入原始資料:
- 使用 ETL 工具將多個來源匯入,如 Apache Nifi 或 Talend。
- 支援批次匯入及流式匯入兩種模式。
- 設定訪問控制及安全政策:
- 使用 IAM 角色限制訪問範圍及權限。
- 持續監控容量及效能,避免資源浪費或性能瓶頸。
🔍 查詢階段
查詢或應用階段流程如下:
- 定義查詢方式:
- 若需即興探索,可採 Schema-on-read 模式,以工具如 Apache Spark 或 Presto 查詢。
- 若需持續追蹤某特定指標,可建立對應 Pipeline 將結果寫回至其他系統,例如 Redshift 或 Snowflake。
- 檢索並分析:
- 利用 SQL-like 工具(如 HiveQL)撈取有價值子集內容。
- 配合 BI 工具(Tableau、Power BI)視覺化結果呈現給非技術人員理解。
補充說明
🔧 關鍵技術工具
| 技術/工具名稱 | 功能描述 | 常見用途 |
|---|---|---|
| AWS S3 | 雲端物件儲存 | 建立高可擴展性之湖泊 |
| Apache Hadoop | 分散式文件系統 | 大規模內部部署 |
| Apache Spark | 快速分布式運算引擎 | 即時查詢、多元管線 |
| Databricks | 內建 Spark 平台 | 管理湖泊加強 ML 整合 |
🧠 延伸/常見誤解
誤解一:「Data Warehouse 與 Data Lake 是競爭關係」
實際上,它們是互補而非競爭。Warehouse 擅長快速處理已整理好的小型高品質數據;Lake 則負責涵蓋所有未加工版本以備未來需求。
誤解二:「所有公司都需要建置 Data Lake」
並不是每家公司都適合投入資源建置。如果您的業務本身不依賴大量異質性的原始資訊,那麼直接採用傳統 Database 或 Cloud Storage 即可滿足需求。