SQLite ออกเวอร์ชั่น 3.47 เพิ่มคำสั่ง sqlite3_rsync ซิงก์ฐานข้อมูลข้ามเครื่อง อ่านระหว่างซิงก์ได้

by lew
28 October 2024 - 09:02

SQLite ฐานข้อมูลขนาดเล็กแบบทำงานเครื่องเดียวกับแอปพลิเคชั่น ออกเวอร์ชั่น 3.47.0 ปรับแก้บั๊กเล็กน้อยจำนวนมาก แต่เพิ่มฟีเจอร์สำคัญคือคำสั่ง sqlite3_rsync คำสั่ง rsync เวอร์ชั่นพิเศษที่เข้าใจ transaction ของฐานข้อมูลเพื่อให้สามารถซิงก์ฐานข้อมูลไปยังเครื่องสำรองได้

คำสั่ง rsync นั้นอาศัยการเทียบค่าแฮชข้อมูลทีละบล็อค หากพบว่ามีบล็อคใดที่ปลายทางมีอยู่แล้วก็ไม่ต้องส่งข้อมูลไปใหม่ ทำให้การซิงก์ไฟล์ขนาดใหญ่แต่มีความเปลี่ยนแปลงเล็กน้อย (เช่นฐานข้อมูลที่อาจจะเก็บข้อมูลมานาน แต่แต่ละวันกลับมีการเปลี่ยนแปลงไม่มากนัก) ได้เปรียบมาก อัตราการส่งข้อมูลจะลดลงมาก หากไม่มีความเปลี่ยนแปลงเลยจะใช้แบนวิดท์เพียง 0.5% ของข้อมูลเต็มเท่านั้น

sqlite3_rsync เป็นโปรแกรมที่เขียนขึ้นมาเฉพาะ ฟีเจอร์ไม่เท่ากับ rsync ตัวจริง แต่ความพิเศษคือมันเข้าใจไฟล์ WAL ของ SQLite ทำให้สามารถซิงก์ข้อมูลโดยไม่ทำฐานข้อมูลฝั่งใดพังเลย โดยฝั่งปลายทางของการซิงก์นั้นสามารถคิวรีข้อมูลไปได้เรื่อยๆ (แต่ห้ามเขียน) แนวทางนี้ทำให้บริการที่เน้นการอ่านข้อมูล เช่น เว็บบล็อก สามารถกระจายฐานข้อมูลไปได้ไม่จำกัด

ก่อนหน้านี้มีโครงการภายนอก SQLite พยายามทำระบบซิงก์แบบนี้มาก่อนแล้ว เช่น Litestream แต่ครั้งนี้โครงการหลักก็ออกมาทำเครื่องมือซัพพอร์ตโดยตรง แม้จะอยู่ในสถานะทดลองเท่านั้นในช่วงแรก

ที่มา - SQLite

Blognone Jobs Premium