07/03/2026
วันนี้ขอระบาย (และให้ความรู้) เรื่อง 'ความเข้าใจผิด' ของการใช้ CDC บน SQL Server นิดนึงครับ 😅
หลายคนอยากทำ Data Real-time ⚡ โดยเลือกใช้ Change Data Capture (CDC) เพราะประสิทธิภาพดีและดูโมเดิร์น แต่สิ่งที่ทำให้คนทำ Data Pipeline ต้องกุมขมับบ่อยที่สุดคือ...
Source ต้นทางขยัน "ลบตารางทิ้งแล้วสร้างใหม่" (Drop & Create) ทุกวัน! 😱
📌 ทำไมทำแบบนี้แล้ว CDC ถึงพัง?
1️⃣ Object ID เปลี่ยน: CDC ของ SQL Server ผูกติดกับ ID ของตารางครับ เมื่อลบทิ้งสร้างใหม่ แม้ชื่อตารางจะเหมือนเดิมแต่ ID เปลี่ยนไปแล้ว กลไก Capture จะ "หลุด" ทันที
2️⃣ Metadata หาย: ข้อมูลการติดตามการเปลี่ยนแปลงที่เคยเซตไว้สลายร่างตามตารางเดิมไป
3️⃣ Data Gap: กว่าเราจะรู้ตัว ข้อมูลในช่วงที่ตารางถูกลบและสร้างใหม่ก็หายไปจาก Pipeline เรียบร้อย
✅ ทางออกที่ยั่งยืน:
• หากต้องการเคลียร์ข้อมูล ให้ใช้ TRUNCATE แทนการ DROP TABLE (ถ้า Permissions ถึง)
• ทำ Data Contract ตกลงกับต้นทางให้ชัดเจนว่า Schema ต้องนิ่ง 🤝
• ถ้าเลี่ยงไม่ได้จริงๆ อาจต้องพิจารณาใช้เครื่องมืออื่นที่ไม่ได้ยึดติดกับ Object ID มากขนาดนี้
การทำ Data Architecture ที่ดี ไม่ใช่แค่เลือก Tool ที่เก่งที่สุด 🛠️ แต่คือการสื่อสารและวางมาตรฐานข้อมูลร่วมกัน (Data Literacy) เพื่อไม่ให้ระบบต้อง "พัง" ทุกเช้าครับ
ใครเคยเจอเคส "ลบสร้างใหม่" แบบนี้บ้าง? มาแชร์วิธีรับมือหรือระบายความในใจกันได้ในคอมเมนต์เลยครับ 👇🔥