資料遷移計畫範本(Data Migration Plan Template)

適用標準:ISO/IEC 25024(資料品質)、DAMA DMBOK 2.0(Data Management)
適用階段:部署上線階段(Deployment Phase)
負責角色:DBA、Data Engineer、SA、PM


📑 章節目錄

  1. 文件資訊
  2. 遷移概要
  3. 來源與目標分析
  4. 遷移策略
  5. 資料映射規則
  6. 資料清洗與轉換規則
  7. 驗證策略
  8. 風險與應變
  9. 時程與里程碑
  10. 附錄

📝 範本


1. 文件資訊

項目內容
文件名稱[系統名稱] 資料遷移計畫
文件編號[專案代碼]-DMP-[版本號]-[日期]
版本v[X.Y]
建立日期[YYYY-MM-DD]
負責人[DBA / Data Engineer]
審核者[SA / PM]

2. 遷移概要

項目內容
遷移類型[全量遷移 / 增量遷移 / 混合式]
來源系統[舊系統名稱 + 版本]
目標系統[新系統名稱 + 版本]
遷移目的[系統升級 / 平台轉換 / 整併 / 雲遷移]
資料量估計[N] GB / [N] 筆記錄
停機視窗[YYYY-MM-DD HH:mm ~ HH:mm]
遷移方式[Big Bang / Phased / Parallel Run]

3. 來源與目標分析

3.1 來源系統

項目內容
資料庫類型[RDBMS: SQL Server / Oracle / PostgreSQL / NoSQL]
版本[ver]
Schema 數量[N]
Table 數量[N]
總資料量[N] GB
編碼[UTF-8 / Big5 / …]

3.2 目標系統

項目內容
資料庫類型[RDBMS / NoSQL / Data Lake]
版本[ver]
Schema 設計[New / Modified / Same]
字元編碼[UTF-8]

3.3 遷移範圍

資料分類資料表筆數(估)大小(估)優先級備註
Master Data[table list][N][N]MBP1
Transaction Data[table list][N][N]GBP1
Historical Data[table list][N][N]GBP2
Config/Lookup[table list][N][N]KBP1
Attachments/BLOB[storage][N][N]GBP2

3.4 排除範圍

資料類型排除原因
[暫存資料/Log][無業務價值]
[超過 N 年的歷史資料][封存處理]

4. 遷移策略

4.1 遷移方式比較

方式說明優點缺點適用場景
Big Bang一次性全量搬遷簡單明確停機時間長資料量小/可停機
Phased分批搬遷降低風險需處理雙寫資料可分割
Parallel Run新舊並行最安全成本最高核心業務系統

選定策略:[Big Bang / Phased / Parallel Run]

選擇理由:[說明]

4.2 技術架構

層級工具/技術用途
Extract[SSIS / Spark / Custom Script]資料抽取
Transform[Python / dbt / Stored Procedure]資料轉換
Load[Bulk Insert / COPY / Streaming]資料載入
Orchestration[Airflow / Azure Data Factory / Jenkins]排程控制
Monitoring[Logging / Dashboard]進度監控

4.3 遷移順序

批次資料表依賴優先級方式
Batch 1[Lookup tables / Config]NoneP1Full load
Batch 2[Master data]Batch 1P1Full load
Batch 3[Transaction data]Batch 2P1Incremental
Batch 4[Historical data]Batch 2P2Full load

5. 資料映射規則

5.1 欄位映射

#來源 Table.Column來源型態目標 Table.Column目標型態轉換規則備註
1[src_table.col][VARCHAR(50)][tgt_table.col][NVARCHAR(100)][Direct / Transform]
2[src_table.col][INT][tgt_table.col][BIGINT][Direct]
3[src_table.col1 + col2][VARCHAR][tgt_table.col][NVARCHAR][Concatenate]
4— (不存在)[tgt_table.col][VARCHAR][Default value: ‘N/A’]新增欄位

5.2 代碼映射

來源代碼來源值目標代碼目標值備註
[status_code][A/I/D][status][ACTIVE/INACTIVE/DELETED]
[dept_code][001~999][department_id][UUID]需查對照表

6. 資料清洗與轉換規則

6.1 清洗規則

#規則 ID資料表欄位規則描述處理方式
1CLN-001[table][col]NULL 值處理[Default value / Skip / Flag]
2CLN-002[table][col]重複資料處理[Keep latest / Merge / Flag]
3CLN-003[table][col]格式不一致[Standardize to format X]
4CLN-004[table][col]超出範圍值[Truncate / Flag / Reject]
5CLN-005[table][col]孤立記錄(FK 失效)[Skip with log / Create parent]

6.2 轉換規則

#規則 ID說明邏輯
1TFM-001[欄位合併][col_a + ’ ’ + col_b → full_name]
2TFM-002[日期格式轉換][YYYYMMDD → YYYY-MM-DD]
3TFM-003[代碼轉換][對照 mapping_table]
4TFM-004[加密欄位處理][解密後重新加密為 AES-256]

7. 驗證策略

7.1 驗證層級

層級驗證方式通過條件負責人
L1: 筆數驗證Source count vs Target count差異 = 0(或 = 排除數)Data Engineer
L2: 抽樣比對Random sample comparison100% 一致DBA
L3: 彙總驗證SUM / COUNT / AVG 比對差異 < [tolerance]%Data Engineer
L4: 業務規則驗證Business rule check全數通過BA/PO
L5: 應用層驗證End-to-end 功能測試Smoke Test PassQA

7.2 驗證查詢範例

驗證項目查詢/方法預期結果
總筆數SELECT COUNT(*) FROM [table]Source = Target ± [N]
金額加總SELECT SUM(amount) FROM [table]Source = Target
抽樣比對隨機抽 [N] 筆逐欄比對100% match
NULL 檢查SELECT COUNT(*) WHERE [col] IS NULL≤ [N]
FK 完整性LEFT JOIN 找 orphan records= 0

7.3 驗證結果記錄

批次資料表L1 結果L2 結果L3 結果整體備註
Batch 1[table][✅/❌][✅/❌][✅/❌][PASS/FAIL]

8. 風險與應變

8.1 風險識別

#風險影響機率等級應變措施
1遷移時間超過停機視窗業務中斷延長MediumHigh分批遷移 + 預設 abort 時間點
2資料品質問題超預期遷移失敗MediumHighTrial Run 提前發現
3來源系統 Schema 不一致映射失敗LowMediumProfile 完整性分析
4目標系統效能不足載入過慢LowMedium壓力測試 + 批次調整

8.2 回退計畫

觸發條件回退步驟負責人預估時間
驗證失敗(L1 筆數不符)[回退步驟][DBA][N] min
遷移逾時 > [N] min[abort + restore backup][DBA][N] min
應用層驗證失敗[切回舊系統][DevOps][N] min

9. 時程與里程碑

階段工作項目開始日結束日負責人狀態
分析來源系統 Data Profiling[日期][日期][DE]
設計映射規則制定[日期][日期][DE/BA]
開發ETL 腳本開發[日期][日期][DE]
測試Trial Run #1(DEV 環境)[日期][日期][DE]
測試Trial Run #2(STG 環境,全量)[日期][日期][DE/DBA]
測試Trial Run #3(STG,含驗證)[日期][日期][全團隊]
上線正式遷移[日期][日期][全團隊]
驗證上線後驗證[日期][日期][BA/QA]

10. 附錄

10.1 完整欄位映射表

[連結至完整 Excel/CSV 映射文件]

10.2 ETL 腳本清單

腳本名稱用途版本庫位置
[script_name][Extract / Transform / Load][repo path]

10.3 Trial Run 結果記錄

次數日期環境資料量耗時結果問題
#1[日期]DEV[N]% sample[N] min[PASS/FAIL][issues]
#2[日期]STG100%[N] min[PASS/FAIL][issues]

📖 使用說明

遷移執行流程

graph TD
    A[Data Profiling] --> B[映射規則設計]
    B --> C[ETL 開發]
    C --> D[Trial Run #1 DEV]
    D --> E{驗證通過?}
    E -->|No| C
    E -->|Yes| F[Trial Run #2 STG Full]
    F --> G{驗證通過?}
    G -->|No| C
    G -->|Yes| H[Trial Run #3 Dress Rehearsal]
    H --> I{Go/No-Go}
    I -->|Go| J[正式遷移]
    I -->|No-Go| C
    J --> K[上線後驗證]
    K -->|Pass| L[遷移完成]
    K -->|Fail| M[回退]

關鍵原則

  1. 至少 3 次 Trial Run:正式遷移前必須完整演練
  2. 資料品質先行:先做 Data Profiling 找出品質問題
  3. 驗證不可省略:每層驗證都需通過才可往下
  4. 保留原始資料:遷移完成後保留來源資料至少 [N] 個月

💡 範例(以 HRMS 人力資源管理系統為例)


範例:遷移概要

項目內容
來源Legacy HRMS (Oracle 11g)
目標New HRMS (PostgreSQL 15 on Azure)
遷移類型Big Bang(假日執行)
資料量85 GB / 1,200 萬筆員工交易記錄
停機視窗2024-06-15 00:00 ~ 06:00 (6 hrs)

範例:欄位映射

來源 (Oracle)目標 (PostgreSQL)轉換
EMP.EMPNO (NUMBER(6))employee.id (UUID)新產生 UUID,建 mapping table
EMP.ENAME (VARCHAR2(50))employee.full_name (TEXT)Direct
EMP.HIREDATE (DATE)employee.hire_date (TIMESTAMPTZ)加入 timezone (+08:00)
EMP.SAL (NUMBER(8,2))employee.base_salary (DECIMAL(12,2))Direct
EMP.DEPTNO (NUMBER(2))employee.department_id (UUID)查 dept mapping table

範例:驗證結果

驗證來源目標差異結果
員工總數3,5003,5000
薪資總額$175,000,000$175,000,000$0
出勤記錄數12,450,00012,449,830-170⚠️ 排除的無效記錄

📌 審閱重點

  • 資料映射規則是否涵蓋所有欄位(含新增/廢除)?
  • 清洗規則的「處理方式」是否明確(非僅標記問題)?
  • 驗證策略是否包含業務層面的正確性驗證?
  • Trial Run 是否涵蓋全量資料?
  • 回退計畫的時間是否在停機視窗內?