โดย Raghotham Murthy
ในการที่เราอยากจะเอาข้อมูลที่อยู่ใน production database มาวิเคราะห์ต่อใน data warehouse หรือ data lake และเราก็ไม่อยากจะไปเพิ่มโหลดอะไรให้กับตัว database นั้น ๆ ทีนี้เราจะมีวิธีการอย่างไรที่น่าเชื่อถือที่เราจะสามารถ replicate ข้อมูลจาก production database มาไว้ที่ data warehouse ได้
ปัญหานี้เป็นปัญหาที่แก้ยากปัญหาหนึ่งในระดับ scale ที่ใหญ่ ๆ คือเราไม่สามารถที่จะอยู่ดี ๆ ก็ copy ข้อมูลทั้งหมดบน production database ไปที่ data warehouse ได้ ซึ่งจริง ๆ เราอาจจะต้องการแค่เก็บเฉพาะการเปลี่ยนแปลงของข้อมูลมาเท่านั้น
ใน modern production database ส่วนใหญ่จะมี write-ahead log (WAL) หรือ change log ในการประมวลผลข้อมูล transaction ปกติอยู่แล้ว ซึ่ง log พวกนี้จะเก็บการเปลี่ยนแปลงในแต่ละข้อมูลในตารางใน database ที่เราจะสามารถนำเอามาทำ replicas ของ production database ได้ ซึ่งเทคนิคนี้เรียกว่า change data capture (CDC) นั่นเอง โดยเทคนิคที่ว่านี้จะให้ผลลัพธ์ที่ดีกว่า batch exports
แต่ว่าเราจะต้องมอง CDC เป็นแบบ end-to-end data pipeline นะ เพื่อที่จะ replicate ข้อมูลได้อย่างสมบูรณ์แบบ และการใช้เทคนิค CDC เราต้องพิจารณาเรื่องพวกนี้ด้วย
Scale
เราจะทำอย่างไรในแง่การจัดการข้อมูลที่มี volume เยอะ ๆ เช่น WAL นี่อาจจะทำให้ out of disk space ได้ด้วย ถ้าเราไม่ดึงข้อมูลไปสักที
Replication log
เราจะต้องดูด้วยว่าช่วงเวลาที่เรา replicate ข้อมูลไป ใช้เวลาเท่าไหร่กว่าที่เราจะมีข้อมูลให้ใช้งานได้จริงบน data warehouse
Schema changes
ข้อมูลใน database มีการเปลี่ยนแปลง schema ซึ่งเราก็ต้องดูด้วยว่าเราจะนำการเปลี่ยแปลงเหล่านั้นไปยัง data warehouse ของเราได้อย่างไร
Masking
เรื่องนี้ต้องดูพวก sensitive data ด้วย ว่าข้อมูลไหนเราควรทำ masking บ้าง
Historical syncs
ก่อนที่เราจะทำ CDC เราจะต้องทำ initial historical sync อย่างน้อยสัก 1 รอบก่อนด้วย หรือเราอาจจะต้องเตรียมพวก partial historical sync ด้วยเช่นเดียวกัน ในกรณีที่เกิดปัญหาในส่วน WAL
สุดท้าย… เค้าบอกว่าอย่าพยายามสร้าง CDC connector เอง ให้ใช้เครื่องมือที่มีอยู่แล้วก่อน