Soft migration: ย้ายวันนี้เพื่อเรียนรู้ แล้วย้าย production ซ้ำอย่างปลอดภัย
ออกแบบ importer ที่ rerun ได้ เก็บ orphan ได้ และพิสูจน์ยอดก่อน cutover จริง
Migration ไม่ใช่ Copy Table
Copy
ย้ายค่า A ไป B แล้วหวังว่าความหมายเหมือนเดิม เหมาะกับข้อมูลสะอาดและ schema คงที่เท่านั้น
Semantic migration
ระบุ identity, unit, status, effective date, deletion, provenance และกฎการแปลง พร้อมย้อนกลับ source row ได้
Pipeline ที่ให้ผู้เรียนสร้าง
Extract
อ่านแบบ read-only
→อ่านแบบ read-only
Stage
เก็บ raw key/value
→เก็บ raw key/value
Map
normalize + classify
→normalize + classify
Load
upsert idempotent
→upsert idempotent
Reconcile
count/sum/orphan
count/sum/orphan
กฎบังคับ
- ทุก target row มี legacy identity หรือ mapping table
- zero date เช่น
0000-00-00แปลงเป็น NULL พร้อม flag ไม่ใช่วันที่ปัจจุบัน - soft delete แยก “ยกเลิกใช้งาน” จาก “ไม่เคยมี”
- orphan ถูกเก็บใน quarantine table พร้อม reason ไม่ถูกทิ้ง
- importer รันซ้ำแล้วจำนวนและยอดรวมไม่เพิ่ม
- สูตรสำคัญมี regression oracle ก่อนเปลี่ยน implementation
- cutover มี watermark และ run log
กรณีศึกษา X02
จากข้อมูลใบงานผลิต 100,128 รายการและ receipt 152,975 รายการ พบใบงานที่หา variant ปัจจุบันไม่พบ 15,033 รายการ และ receipt ที่จับคู่ BomNo + SubLot ไม่ได้ 22,302 รายการ บทเรียนคือ reconciliation ที่ดีไม่ได้รายงานเพียง “imported สำเร็จ” แต่บอกสิ่งที่ยังจับคู่ไม่ได้โดยไม่แต่งความสัมพันธ์ขึ้นเอง
แบบฝึก
- สร้าง orphan taxonomy: missing master, ambiguous key, invalid date, duplicate natural key
- กำหนด policy ของแต่ละชนิด: block, quarantine, import with warning
- สร้างรายงาน source count, target count, orphan count และ control total
- รัน importer สองครั้งและพิสูจน์ว่า target ไม่เปลี่ยน
Cutover rehearsal
| เวลา | กิจกรรม | เงื่อนไขผ่าน |
|---|---|---|
| T−7 วัน | full rehearsal บนสำเนา production | เวลาและ storage อยู่ใน budget |
| T−1 วัน | freeze master ที่เสี่ยง / เตรียม delta watermark | เจ้าของข้อมูลรับทราบ |
| T0 | final extract + upsert + reconcile | critical totals ตรง 100% |
| T+1 | parallel check สูตร/เอกสาร/สิทธิ | oracle ผ่านตาม tolerance |
| T+7 | ปิด exception หรือวาง remediation | ทุก orphan มี owner |