返回目錄
A
數據駕馭:企業資料科學實戰手冊 - 第 2 章
第2章 數據基礎建設與治理
發布於 2026-02-24 20:03
# 第2章 數據基礎建設與治理
本章將從企業資料科學的角度,深入探討構建可擴展、可靠且合規的數據基礎建設與治理機制。透過實際案例與工具選型,我們將呈現從原始資料湖到結構化資料倉儲的全流程,並說明如何確保資料品質、可追溯性與安全性。
## 2.1 資料湖(Data Lake)
| 項目 | 內容 |
|------|------|
| 定義 | 一種集中式存儲,容納原始結構化、非結構化與半結構化資料,採用分散式檔案系統,支持大數據工作負載。
| 核心特點 | * **彈性**:可按需擴充;<br>* **多樣性**:JSON、Parquet、CSV、圖片、音訊等;<br>* **即時可讀**:支持 Spark、Presto、Hive、SQL on Data Lake 等即時查詢。
| 典型工具 | Amazon S3 + Athena / EMR, Azure Data Lake Storage + Synapse, Google Cloud Storage + BigQuery, Snowflake External Tables, Databricks Delta Lake。
| 案例 | **零售業**:將 POS、物流、社群媒體互動等原始資料寫入 S3,並利用 Databricks 作為資料探索與機器學習平台。
### 2.1.1 資料湖設計要點
1. **資料分層**:
- *Raw*:未處理的原始資料。
- *Processed*:經過清洗、轉換後的中間資料。
- *Curated*:符合業務需求、可直接查詢的資料。
2. **Schema on Read**:延遲到查詢時再決定 schema,便於快速接入新資料來源。
3. **元資料管理**:利用 Glue Data Catalog、Lake Formation、AWS Glue 等工具自動生成元資料。
4. **安全控制**:角色基於策略(RBAC)與加密,確保合規性。
## 2.2 資料倉儲(Data Warehouse)
資料倉儲是針對查詢優化的結構化儲存。與資料湖不同,它通常使用事先定義的 schema(Schema on Write)。
| 主要特性 | 說明 |
|----------|------|
| OLAP 優化 | 聚合、分區、列式存儲(如 Columnar Storage) |
| ETL / ELT 支持 | 支援批量、即時資料匯入 |
| 業務直覺 | 直觀的維度表、事實表 |
| 工具範例 | Snowflake、Amazon Redshift、Google BigQuery、Azure Synapse、Oracle Autonomous Data Warehouse |
### 2.2.1 資料倉儲架構圖
mermaid
graph TD
A[資料源] --> B[ETL/ELT 工具]
B --> C[資料湖 (Raw/Processed)]
B --> D[資料倉儲 (Schema on Write)]
D --> E[BI 工具]
D --> F[機器學習]
### 2.2.2 典型資料倉儲設計
- **星型模型**:一個事實表與多個維度表。
- **雪花模型**:維度表進一步拆分,形成層次化維度。
- **聚合表**:預先聚合常見查詢,提升查詢速度。
## 2.3 ETL / ELT 流程
| 步驟 | 主要工作 | 工具建議 |
|------|-----------|----------|
| Extract | 從各資料源擷取原始資料 | Airflow, Luigi, Azure Data Factory, AWS Glue, Talend |
| Transform | 資料清洗、格式轉換、豐富化 | dbt, PySpark, Pandas, SQL |
| Load | 寫入資料湖或資料倉儲 | Snowflake Connector, BigQuery API, Redshift COPY |
> **ELT**:先將原始資料載入資料湖或倉儲,後續在目標系統內做轉換;適用於大規模數據。
> **ETL**:在資料來源端即完成轉換;適用於資料量較小或資料源限制。
### 2.3.1 Airflow DAG 範例
python
from airflow import DAG
from airflow.providers.amazon.aws.operators.s3_copy_object import S3CopyObjectOperator
from airflow.providers.amazon.aws.operators.redshift_copy import RedshiftCopyOperator
from datetime import datetime
with DAG(
dag_id='etl_pipeline',
start_date=datetime(2024, 1, 1),
schedule_interval='@daily',
catchup=False
) as dag:
copy_s3_to_raw = S3CopyObjectOperator(
task_id='copy_raw',
source_bucket='source-bucket',
source_key='raw/{{ ds }}/*.json',
dest_bucket='lake-bucket',
dest_key='raw/{{ ds }}/',
)
load_to_redshift = RedshiftCopyOperator(
task_id='load_redshift',
table='staging.orders',
s3_path='s3://lake-bucket/raw/{{ ds }}/*.json',
copy_options=['json', 'auto'],
)
copy_s3_to_raw >> load_to_redshift
## 2.4 資料品質管理(Data Quality Management)
資料品質直接影響分析結果與決策品質。常見品質指標包含:
- **完整性**(Completeness)
- **一致性**(Consistency)
- **準確性**(Accuracy)
- **時效性**(Timeliness)
- **唯一性**(Uniqueness)
### 2.4.1 資料品質檢查規則表
| 規則 | 描述 | 範例 |
|------|------|------|
| NOT NULL | 欄位不可為空 | `customer_id IS NOT NULL` |
| UNIQUE | 唯一性 | `ORDER_ID` 無重複 |
| FOREIGN KEY | 參照完整 | `customer_id` 需存在於 `customers` 表 |
| DATE RANGE | 日期範圍 | `order_date >= '2024-01-01'` |
| FORMAT | 格式驗證 | `email ~* '^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$'` |
### 2.4.2 工具與實踐
- **Great Expectations**:Python 框架,支持資料庫、Parquet、CSV 等。
- **AWS Glue DataBrew**:無程式資料品質檢查。
- **dbt tests**:在資料轉換階段嵌入測試。
sql
-- dbt 範例:檢查 order_id 唯一性
SELECT order_id, COUNT(*) AS cnt
FROM {{ ref('orders') }}
GROUP BY order_id
HAVING cnt > 1;
## 2.5 數據治理框架(Data Governance Framework)
治理是將策略、流程、技術與文化結合,以確保資料的可管理性、合規性與可用性。核心組件包括:
1. **資料策略(Data Strategy)**:企業層級對資料使用的願景與目標。
2. **角色與責任(Roles & Responsibilities)**:Data Owner、Data Steward、Data Curator、Data Engineer 等。
3. **元資料管理(Metadata Management)**:自動化元資料捕捉與可視化。
4. **資料血統(Lineage)**:追溯資料流向、變換歷程。
5. **存取控制(Access Control)**:基於角色、敏感資料分級、審計紀錄。
6. **合規性監控(Compliance Monitoring)**:GDPR、CCPA、PCI‑DSS、HIPAA 等。
### 2.5.1 組合治理模型(Example Governance Stack)
┌───────────────────────────────┐
│ 企業治理委員會(Data Governance Board) │
└───────────────────────────────┘
│
┌───────────────────────────────┐
│ 企業資料政策(Policies & Standards) │
└───────────────────────────────┘
│
┌───────────────────────────────┐
│ 元資料目錄(Data Catalog) │
│ • AWS Glue Data Catalog
│ • Azure Purview
│ • Snowflake Information Schema
└───────────────────────────────┘
│
┌───────────────────────────────┐
│ ETL/ELT 工具(Airflow, dbt, dbt Cloud) │
└───────────────────────────────┘
│
┌───────────────────────────────┐
│ 資料湖 / 資料倉儲(S3, Delta Lake, Snowflake) │
└───────────────────────────────┘
│
┌───────────────────────────────┐
│ 端對端審計 & 監控(Lake Formation, AWS IAM, BigQuery IAM, Snowflake Role Hierarchy) │
└───────────────────────────────┘
> **治理重點**:
> 1. **可追溯性**:每筆資料必須能追溯回其來源與轉換步驟。<br>2. **可執行性**:治理規則需嵌入資料管道,確保自動化執行。<br>3. **跨部門協作**:IT、法務、風控、業務必須在同一治理機制下協同。
## 2.5 實作總結
| 步驟 | 目的 |
|------|------|
| 建立資料湖分層 | 支援多樣資料與即時探索 |
| 設計星型/雪花模型 | 提升 OLAP 查詢效能 |
| 配置 ETL / ELT | 保證資料流轉的可擴展性 |
| 內嵌資料品質測試 | 保障資料可靠性 |
| 實施元資料與血統管理 | 促進資料可追溯與治理 |
| 執行安全與合規策略 | 確保資料合規性 |
> **實際落地要點**:
> - **先定義業務需求**,再選擇湖或倉,避免後期架構改動。
> - **分層儲存**與 **元資料管理** 必不可少,能大幅降低資料治理成本。
> - **自動化測試** 與 **CI/CD**(如 dbt、Airflow、GitHub Actions)能把治理落到程式碼層面。
> - **安全設計** 需同時兼顧加密、存取控制與審計紀錄,特別是在金融、醫療等高度合規行業。
---
> **延伸閱讀**:
> - *“Designing Data-Intensive Applications”*(Martin Kleppmann)
> - *Snowflake Snowpark 官方文件*、*Databricks Delta Lake Guide*
> - *Great Expectations Cookbook*
本章結束後,讀者將能獨立設計一套從資料湖到資料倉儲的完整管道,並具備資料品質與治理的實務落地能力。