มีคนมาปรึกษาเรื่องการพัฒนาระบบ Clearing House โจทย์ยากกว่าปกติตรงที่เป็นเรื่องของ การ Synchronize ข้อมูล Spatial Database ที่ตรงการแชร์และแลกเปลี่ยนกันโดยตรงระหว่างโหนดที่ทำงานร่วมกัน ถ้าเป็นเฉพาะ Textfile หรือ XML แบบ Metadata คงไม่ยากเท่าไหร่ แต่พอมาเรื่องข้อมูลจำนวนมากๆ อันนี้เริ่มมีปัญญาแล้ว ช่องทางหนึ่งที่แนะนำและอยากให้ลองคือช่องทางของเรื่องการ Replication  บน Database Server แต่ก็มีข้อจำกัดที่ต้องออกแรงไม่สามารถทำงานได้ทันทีทันใด บน Postgresql เองมี Replicate engine ที่น่าสนใจหลายตัว ผมเองเคยศึกษา Pgpool และ Slony-I แต่โดยส่วนตัวชอบ Slony มากกว่าเพราะมันค่อนข้างไม่ซับซ้อนและมีประสิทธิภาพที่ดี

 

Postgresql 9.0 มาพร้อม streaming replication แต่ Slony(synchronous replication) ก็ยังเป็นอีกช่องทางที่สามารถนำมาเสริมได้อีก เพราะ ยังมีข้อจำกัดที่ตัว Slave ที่ต้องอยู่บน Version เดียวกันระบบเดียวกัน รองรับแค่ 1 salve และที่สำคัญ Slave นั้นทำได้แค่ Read only ดังนั้นตอนนี้ถ้าเน้นปฏิบัติจริง Slony ก็ยังมีความจำเป็นอยู่ครับ

Slony คือ package สำหรับการทำ  synchronous database replication สามารถสำเนาข้อมูลหรือสำรองข้อมูล สามารถช่วยในการกระจายโหลด การสำรองระบบกรณีตัวแม่เสีย ตัวลูกสามารถทำงานแทนได้ หรือจะสำรองข้อมูลแบบทันทีทันใดก็ได้ โดยสามารถกำหนดการทำงานแบบ master to multiple slaves replication system หลักการทำงาน ใช้ trigger ฝั่งใน database แล้วสำรองข้อมูลตารางต่างๆ โดยมีการสร้าง key อ้างอิงร่วมกับ Primary key

การติดตั้งไม่ยากครับ บน linux แต่บน windows ค่อนข้างมีปัญหานิดหน่อย มาดูขั้นตอนคราวๆครับ คู่มือการติดตั้งอ่านได้จาก

http://slony.info/documentation/2.0/tutorial.html#FIRSTDB

ติดตัั้งตัว Master Database

ติดตั้งตัว slave บน Database Server

 

add ticker เข้าไปบนตารางที่เก็บข้อมูล Spatial Data

สั่ง Run Service บน Windows เพื่อทำการ Replicate ข้อมูลจาก Database ทั้งสอง

 

ทดลองเรียกข้อมูล Geometry บนตาราง Province บน Slave1 ผ่าน QGIS