Si คุณกำลังมองหา DBMS แบบกระจาย ที่ใช้ SQLite เป็นเอ็นจิ้นการจัดเก็บข้อมูล ให้ฉันบอกคุณว่า rqlite คือสิ่งที่ใช่สำหรับคุณเนื่องจากช่วยให้จัดระเบียบงานของคลัสเตอร์จากที่เก็บข้อมูลที่ซิงโครไนซ์ระหว่างกันได้
จากคุณสมบัติ rqlite เน้นความง่ายในการติดตั้ง การใช้งาน และการบำรุงรักษา ของการจัดเก็บแบบกระจาย ทนต่อความผิดพลาดซึ่งค่อนข้างคล้ายกับ etcd และกงสุล แต่ใช้โมเดลข้อมูลเชิงสัมพันธ์แทนรูปแบบคีย์/ค่า
เกี่ยวกับ rqlite
อัลกอริธึมฉันทามติของ Raft ใช้เพื่อซิงค์โหนดทั้งหมด Rqlite ใช้ไลบรารี่ SQLite ดั้งเดิมและไดรเวอร์ go-sqlite3นอกจากจะรันเลเยอร์ที่ประมวลผลคำขอของไคลเอ็นต์แล้ว ยังจำลองตัวเองในโหนดอื่น ๆ และตรวจสอบฉันทามติถึงทางเลือกของโหนดหลัก
การเปลี่ยนแปลงฐานข้อมูลสามารถทำได้โดยโหนดที่เลือกเป็นผู้นำเท่านั้นแต่การเชื่อมต่อกับการดำเนินการเขียนสามารถส่งไปยังโหนดอื่นของคลัสเตอร์ได้ ซึ่งจะส่งคืนที่อยู่ของผู้นำเพื่อทำซ้ำคำขอ (ในเวอร์ชันถัดไป พวกเขาสัญญาว่าจะเพิ่มการส่งต่อสายอัตโนมัติไปยังผู้นำ)
จุดสนใจหลักอยู่ที่ความทนทานต่อข้อผิดพลาด ดังนั้น DBMS มาตราส่วนเฉพาะในการดำเนินการอ่าน และการดำเนินการเขียนเป็นคอขวด เป็นไปได้ที่จะเรียกใช้คลัสเตอร์ rqlite จากโหนดเดียว และสามารถใช้โซลูชันดังกล่าวเพื่อให้เข้าถึง SQLite ผ่าน HTTP ได้โดยไม่ต้องให้ความทนทานต่อข้อผิดพลาด
ข้อมูล SQLite ในแต่ละโหนดจะไม่ถูกเก็บไว้ในไฟล์ แต่อยู่ในหน่วยความจำ. ที่ระดับเลเยอร์ด้วยการใช้โปรโตคอล Raft บันทึกจะถูกเก็บไว้ของคำสั่ง SQLite ทั้งหมดที่นำไปสู่การเปลี่ยนแปลงในฐานข้อมูล
เรกคอร์ดนี้ใช้สำหรับการจำลองแบบ (การจำลองแบบที่ระดับการเล่นซ้ำของแบบสอบถามไปยังโหนดอื่น) เมื่อเริ่มต้นโหนดใหม่ หรือเพื่อกู้คืนจากการสูญเสียการเชื่อมต่อ
เพื่อลดขนาดของเรคคอร์ด ใช้บรรจุภัณฑ์อัตโนมัติ ซึ่งเริ่มต้นหลังจากจำนวนการเปลี่ยนแปลงที่ระบุและนำไปสู่การยืนยันสแน็ปช็อต ซึ่งเรกคอร์ดใหม่เริ่มต้นขึ้น (สถานะของฐานข้อมูลในหน่วยความจำเหมือนกับสแน็ปช็อต + บันทึกการเปลี่ยนแปลงสะสม)
จากคุณสมบัติ rqlite:
- ปรับใช้คลัสเตอร์ได้ง่ายโดยไม่จำเป็นต้องติดตั้ง SQLite แยกต่างหาก
- ความสามารถในการรับที่เก็บข้อมูล SQL ที่จำลองแบบได้อย่างรวดเร็ว
- พร้อมใช้งานในโครงการการผลิต
- ความพร้อมใช้งานของ HTTP (S) API ซึ่งอนุญาตให้อัปเดตข้อมูลในโหมดแบตช์และกำหนดโหนดผู้นำของคลัสเตอร์ นอกจากนี้ยังมีอินเทอร์เฟซบรรทัดคำสั่งและไลบรารีไคลเอ็นต์สำหรับภาษาการเขียนโปรแกรมต่างๆ
- การมีอยู่ของบริการเพื่อกำหนดโหนดอื่นๆ ที่ช่วยให้คุณสร้างคลัสเตอร์แบบไดนามิกได้
- รองรับการเข้ารหัสการแลกเปลี่ยนข้อมูลระหว่างโหนด
- ความสามารถในการปรับแต่งระดับการตรวจสอบความเกี่ยวข้องและความสอดคล้องของข้อมูลเมื่ออ่าน
- ความสามารถทางเลือกในการเชื่อมต่อโหนดแบบอ่านอย่างเดียวที่ไม่มีส่วนร่วมในการกำหนดฉันทามติ และใช้เพื่อเพิ่มความสามารถในการปรับขนาดของคลัสเตอร์สำหรับการดำเนินการอ่าน
- รองรับรูปแบบธุรกรรมดั้งเดิมตามคำสั่งรวมในคำขอเดียว (ไม่รองรับธุรกรรมตาม BEGIN, COMMIT, ROLLBACK, SAVEPOINT และ RELEASE)
เกี่ยวกับ rqlite 6.0
รุ่นใหม่ แนะนำการเปลี่ยนแปลงทางสถาปัตยกรรมที่สำคัญซึ่งมุ่งปรับปรุงความน่าเชื่อถือของคลัสเตอร์ โดยการปรับปรุงกระบวนการส่งคำขออ่านและเขียนไปยังโหนดคลัสเตอร์ที่ถูกต้อง
โหนด Rqlite ตอนนี้ สามารถมัลติเพล็กซ์การเชื่อมต่อแบบลอจิคัลหลายตัว ระหว่างกันโดยใช้การเชื่อมต่อ TCP ที่สร้างขึ้นระหว่างโหนดโดยโปรโตคอล Raft หากคำขอต้องการอำนาจของโหนดผู้นำ แต่ถูกส่งไปยังโหนดรอง โหนดรองสามารถกำหนดที่อยู่ของผู้นำและส่งไปยังไคลเอนต์โดยไม่ต้องทำการคำนวณฉันทามติของ Raft
การเปลี่ยนแปลงดังกล่าวยังลบองค์ประกอบที่แยกจากกันสำหรับการซิงค์ข้อมูลเมตาและลบการจัดการสถานะและข้อมูลเมตาของ Raft
โหนดรองจะส่งคำขอไปยังโหนดลูกค้าเป้าหมายเมื่อจำเป็นเท่านั้น เมื่อจำเป็นต้องค้นหาที่อยู่ของโหนดลูกค้าเป้าหมาย API ให้ความสามารถในการรับข้อมูลเกี่ยวกับสถานะของโหนดอื่นในคลัสเตอร์ เพิ่มคำสั่ง Sysdump ใน CLI
ในที่สุด หากคุณสนใจที่จะทราบข้อมูลเพิ่มเติม หรือศึกษาคำแนะนำในการติดตั้งและคู่มือผู้ใช้ คุณสามารถทำได้ จากลิงค์ด้านล่าง