聊天視窗

資料洞察:企業數據分析與決策支援全攻略 - 第 2 章

第 2 章:數據蒐集與儲存架構

發布於 2026-03-01 11:47

# 第 2 章:數據蒐集與儲存架構 本章聚焦於企業如何從各種來源有效收集資料,並根據不同需求選擇合適的儲存解決方案。內容分為內部與外部資料來源、蒐集策略、ETL/ELT 流程、雲端與本地存儲、資料湖與資料倉、資料治理、技術選型、合規安全以及實際案例。 --- ## 2.1 內部資料來源 | 資料類型 | 典型來源 | 特色與挑戰 | |---|---|---| | 業務交易資料 | ERP、CRM、POS 系統 | 高頻、結構化;需保持即時性與一致性 | | 事件日誌 | Web 伺服器、應用程式、IoT 裝置 | 半結構化/非結構化;大量、速率高 | | 內部文件 | SharePoint、企業郵件、協同平台 | 結構化程度低;版控與權限管理困難 | | 人力資源 | HRIS、考勤系統 | 法規合規要求高;資料保留政策複雜 | > **實務提示**:在設計資料蒐集時,先確認資料是否符合 *Data Governance* 需求(合法性、可追溯性、保留週期),避免後續合規風險。 ## 2.2 外部資料來源 | 來源類型 | 典型服務 | 典型使用案例 | |---|---|---| | 公開資料集 | 政府統計、氣象、衛生數據 | 供需預測、風險評估 | | 第三方 API | Google Maps、OpenWeather、社交媒體 API | 位置分析、情緒分析 | | 資料交易市場 | Nielsen、Experian、Crunchbase | 市場趨勢、客戶分層 | | 合作夥伴資料 | 供應商 ERP、物流追蹤 | 跨部門協同、供應鏈可視化 | > **注意**:外部資料往往伴隨授權、費用、資料品質不確定等風險,需先行簽訂 SOW(服務協議)並建立資料驗證流程。 ## 2.3 資料蒐集策略 1. **需求分析**:與業務部門共創「資料需求矩陣」,明確資料來源、頻率、精度。 2. **合法性審核**:確定資料蒐集符合 GDPR、個人資料保護法、SOX 等法規。 3. **技術選型**:選擇適合的采集技術(ETL、Stream、CDC 等)。 4. **安全規劃**:在傳輸階段使用 TLS/SSL,並在儲存前加密敏感欄位。 5. **監測與調整**:部署監控面板,追蹤采集速率、失敗率,並根據 KPI 進行優化。 ## 2.4 ETL/ELT 流程 > **ETL**(Extract‑Transform‑Load)適合資料量較小、結構化程度高的場景; > **ELT**(Extract‑Load‑Transform)則更適合大數據湖,利用雲端資料倉的計算資源進行後續轉換。 ### 2.4.1 Airflow DAG 範例 python from airflow import DAG from airflow.operators.python_operator import PythonOperator from datetime import datetime, timedelta # 1. 提取 def extract(**kwargs): # 連接外部 API 並取得 JSON import requests resp = requests.get("https://api.example.com/data") data = resp.json() # 暫存至 S3 import boto3 s3 = boto3.client('s3') s3.put_object(Bucket='raw-bucket', Key='data.json', Body=json.dumps(data)) return data # 2. 轉換 def transform(**kwargs): ti = kwargs['ti'] data = ti.xcom_pull(task_ids='extract') # 進行清洗與標準化 cleaned = [{'id': d['id'], 'value': float(d['value'])} for d in data] return cleaned # 3. 加載 def load(**kwargs): cleaned = kwargs['ti'].xcom_pull(task_ids='transform') # 加載至 Snowflake import snowflake.connector ctx = snowflake.connector.connect(...) cs = ctx.cursor() for row in cleaned: cs.execute("INSERT INTO raw_table (id, value) VALUES (%s, %s)", (row['id'], row['value'])) cs.close() ctx.close() with DAG('data_pipeline', schedule_interval='@daily', start_date=datetime(2024, 1, 1), catchup=False) as dag: t1 = PythonOperator(task_id='extract', python_callable=extract) t2 = PythonOperator(task_id='transform', python_callable=transform, provide_context=True) t3 = PythonOperator(task_id='load', python_callable=load, provide_context=True) t1 >> t2 >> t3 > **Tip**:對於大批量資料,可使用 Spark 作業或 Flink 作實時處理,並將結果寫入資料倉。 ## 2.5 雲端 vs 本地儲存 | 需求 | 雲端解決方案 | 本地解決方案 | |---|---|---| | 成本 | S3、Blob Storage、Data Lake Storage(儲存低成本) | 大型磁碟陣列、NAS(前期投資高) | | 合規 | 必須符合資料主權法規(如 EU‑GDPR、台灣個資法) | 內部控制較易,資料主權可完全掌控 | | 擴展 | 彈性伸縮,按需付費 | 需預估容量,擴充成本較高 | | 延遲 | 取決於網路、API 延遲 | 近即時,延遲可低至毫秒 | | 運維 | 由雲端供應商管理硬體、備份 | 需自行維護、備份、災備 | ### 雲端典型方案 | 服務 | 主要特點 | 典型用例 | |---|---|---| | AWS S3 + Glue + Athena | 物件儲存 + ETL + Serverless 查詢 | 大型數據湖、資料探索 | | Azure Data Lake Storage Gen2 + Synapse | HDFS 兼容 + 大數據分析 | 企業資料倉、混合雲 | | GCP BigQuery | 完全 Serverless 資料倉 | 低成本、即時分析 | ### 本地解決方案 | 系統 | 優勢 | 缺點 | |---|---|---| | Snowflake(私有雲) | 雲原生、彈性 | 需要自行部署雲基礎設施 | | Hadoop HDFS | 大容量、分布式 | 需要自行維護集群 | | Teradata | 專業資料倉 | 成本高、部署複雜 | ## 2.6 資料湖 vs 資料倉 - **資料湖**:存放原始格式(JSON、Parquet、CSV),適合探索性分析、機器學習; - **資料倉**:預先轉換為結構化模式(星型、雪花型),適合報表、BI。 mermaid graph LR A[資料源] --> B{ETL/ELT} B -->|Raw| C[資料湖] B -->|Transformed| D[資料倉] C -->|探索| E[資料科學家] D -->|報表| F[BI 使用者] > **最佳實踐**:先建資料湖,做探索、機器學習;再透過資料倉提供業務報表。 ## 2.7 資料治理在儲存層面 | 域 | 具體措施 | |---|---| | 元資料管理 | 建立資料目錄(Data Catalog)、自動化元資料抓取 | | 存取控制 | 基於角色的存取控制(RBAC)、最小權限原則 | | 資料分類 | 靈敏度分級(PII、敏感、非敏感) | | 版本管理 | 使用 Delta Lake、Iceberg 等檔案格式支持快照 | | 合規追蹤 | 審計日誌、資料使用歷史、合規報表 | ## 2.8 大數據技術選型 | 技術 | 主要用途 | 適用場景 | |---|---|---| | Hadoop MapReduce | 批量處理 | 大批量歷史資料處理 | | Spark | 批量+實時混合 | 需要高效數據處理、機器學習 | | Flink | 真實時流處理 | 需要毫秒級回應的事件流 | | Kafka | 分布式訊息隊列 | 資料流、事件驅動架構 | | Delta Lake / Iceberg | 資料湖元資料管理 | 版本控制、ACID 交易 | > **選型指導**:以資料量、處理頻率、資料結構決定,並考量團隊熟悉度與成本。 ## 2.9 儲存安全與合規 1. **加密**:靜態儲存加密(AES‑256)、傳輸加密(TLS 1.2+) 2. **審計**:所有資料存取均記錄、可追溯 3. **資料主權**:依照所在地區選擇雲區域或本地部署 4. **合規**:定期進行資料風險評估、資料保留政策審查 5. **災備**:多區域備份、災難復原演練 ## 2.10 案例研究:零售業數據湖建置 | 步驟 | 描述 | 技術棧 | |---|---|---| | 需求定義 | 追蹤商品銷售、庫存、客戶行為 | 需求矩陣、業務 KPI | | 資料蒐集 | POS、會員卡、網站 Click‑stream | Kafka、REST API | | ETL | Airflow + Spark | Airflow, Spark, Python | | 儲存 | AWS S3 + Glue + Athena | S3, Glue, Athena | | 資料治理 | AWS Lake Formation、IAM | Lake Formation, IAM | | 探索與報表 | Tableau、Power BI | Tableau, Power BI | | 機器學習 | 需求預測、個人化推薦 | SageMaker, TensorFlow | > **結果**:數據湖建立後,商品需求預測準確率提升 18%,庫存週轉率提升 12%。 ## 2.11 小結 - **數據蒐集**:先確定業務需求與法規合規,再選擇合適的採集技術。 - **ETL/ELT**:根據資料特性與處理量選擇流程,並使用自動化工具降低人為錯誤。 - **儲存解決方案**:雲端與本地各有優缺點,企業應綜合成本、合規與延遲需求做決策。 - **資料湖/倉**:先建資料湖,後構建資料倉以支援報表與決策。 - **治理與安全**:元資料管理、存取控制、加密與審計是不可或缺的基石。 - **技術選型**:依據資料量、處理頻率與團隊熟悉度,挑選 Hadoop、Spark、Flink 等。 > **下一章**:資料清理與品質管理,將詳細說明重複、缺失值處理、標準化以及品質指標設計。