Debezium คืออะไร
Debezium คือ open-source platform แบบกระจาย (Distributed Platform) สำหรับทำ Change Data Capture (CDC) ที่ช่วยแปลงการเปลี่ยนแปลงข้อมูลระดับแถว (Row-level changes) ในฐานข้อมูลให้กลายเป็น event streams แบบเรียลไทม์คุณสมบัติหลักและการทำงานการทำงาน Debezium (Log-based CDC)
- อ่านข้อมูลจาก transaction log ของฐานข้อมูลโดยตรง ทำให้มีผลกระทบ (Overhead) ต่อระบบฐานข้อมูลต้นทางน้อยมากเมื่อเทียบกับการใช้ Triggers
- สตรีมมิ่งผ่าน Kafka: ทำงานร่วมกับ Apache Kafka และ Kafka Connect เพื่อบันทึกเหตุการณ์การเปลี่ยนแปลงลงใน Kafka
- รองรับฐานข้อมูลหลากหลาย: มี Connectors สำหรับฐานข้อมูลยอดนิยม เช่น MySQL, PostgreSQL, Oracle, SQL Server, MongoDB, MariaDB, Cassandra และอื่นๆ
- การทำ Snapshot: รองรับการทำ Initial Snapshot ทั้งแบบปกติและ Incremental Snapshot เพื่อเก็บสถานะเริ่มต้นของข้อมูลก่อนเริ่มสตรีม Log
ใช้ Debezium ร่วมกับ Kafka สำหรับทำ CDC
วิธีนี้แทบไม่ต้องเขียนโค้ดเพื่อดึงข้อมูลเองเลย แต่เป็นการสถาปนาระบบ (Setup Infrastructure) โดยใช้ซอฟต์แวร์ Open-source 100%
- ขั้นตอนที่ 1: เปิดใช้งานฟังก์ชัน Log บนฐานข้อมูลต้นทาง
- ฐานข้อมูลสมัยใหม่จะมี Log ที่บันทึกทุกคำสั่งที่เกิดขึ้น เช่น Binlog (MySQL) หรือ Write-Ahead Log / WAL (PostgreSQL)
- คุณต้องเข้าไปเปิด Config ให้ฐานข้อมูลยอมปล่อย Log นี้ออกมาภายนอก
- ขั้นตอนที่ 2: ตั้งค่า Apache Kafka และ Kafka Connect
- ติดตั้ง Kafka เพื่อใช้เป็นตัวรับส่งข้อมูลความเร็วสูง
- ติดตั้ง Debezium (ซึ่งเป็นปลั๊กอินของ Kafka Connect)
- ขั้นตอนที่ 3: สั่งให้ Debezium อ่าน Log
- เขียน Configuration ไฟล์ (JSON) สั้น ๆ เพื่อบอกให้ Debezium ทราบว่าฐานข้อมูลต้นทางอยู่ที่ไหน รหัสผ่านอะไร
- Debezium จะเข้าไปอ่าน Log และแปลงเหตุการณ์ (เช่น มีคนกดเพิ่มข้อมูล) ให้กลายเป็นข้อความ JSON ส่งเข้าไปใน Kafka
- ขั้นตอนที่ 4: ดึงข้อมูลจาก Kafka ไปปลายทาง
- ใช้ Kafka Connect ตัวอื่น หรือเขียนโค้ดสั้น ๆ (Python/Java) ดึงข้อมูลจาก Kafka ไปหยอดลงฐานข้อมูลปลายทาง หรือไฟล์ตามต้องการ

ความคิดเห็น
แสดงความคิดเห็น