ทาง ClickHouse ได้ปล่อย WalShadow ออกมา (ยังเป็น Development Preview !!)
พัฒนาด้วยภาษา Rust
ซึ่งเป็น open source engine สำหรับการ replicate ข้อมูลจาก PostgreSQL ไปยัง ClickHouse
โดยทำการอ่านจากการเปลี่ยนที่ WAL file (Write Ahead Log) นั่นเอง
ซึ่งผลการทดลองพบว่าข้อมูลที่ commit แล้วใน PostgreSQL
จะ replicate ไปยัง ClickHose ใช้เวลาไม่เกิน 200 ms
และรับได้ถึง 289K rows ต่อวินาที ซึ่งใกล้เคียงกับการ replicate ของ PostgreSQL เอง (50 ms)

การทำงานของ WalShadow จะไม่เหมือนกับ CDC (Change Data Capture) แบบทั่วไป
ที่ทำการ replicate ข้อมูลด้วยการใช้งาน PostgreSQL logical Replication
แต่ทำการอ่านจาก WAL file แทน (WAL stream)
ไฟล์นี้มีไว้เพื่อการทำ replicate และ recovery ของ PostgreSQL
จากนั้นทำการ decode แบบ parallel ให้เหมาะสมกับ target datasource ที่ต้องการ replicate ต่อไป
โดยในตัวนี้จะทำการบันทึกข้อมูลลง ClickHouse แบบ parallel

เหตุผลที่ WalShadow เลือก WAL file
ด้วยเหตุผลของลดการใช้ resource และลด operation cost
ที่เกิดจาก PostgreSQL logical Replication นั่นเอง
และไม่ต้องการไปรบกวนการทำงานของ PostgreSQL server อีกด้วย

ดังนั้นไม่ต้องการติดตั้ง output plugin ใด ๆ
หรือไม่ต้องการ Kafka เหมือนกับ CDC อื่น ๆ
หรือพวก JSON serialization
หรือการแปลงรูปแบบของข้อมูล

โดย Architecture แบบละเอียดแสดงดังรูป

ลองนำมาเล่นกันได้ !!
และยังมีข้อจำกัดตามนี้ Current Limits

ปล. ก่อนนหน้านี้ทาง ClickHouse ก็ได้ rewrite project WAL-G มาเป็น WAL-RUS ด้วยเช่นกัน

Reference Websites