เมื่อสัปดาห์ที่แล้ว Canonical ประกาศเปิดตัวโครงการ Dqlite 1.0 เวอร์ชันหลัก, คุณกำลังพัฒนาโปรแกรม SQL รองรับ SQLite ในตัวที่รองรับการจำลองข้อมูลการกู้คืนระบบอัตโนมัติและการยอมรับข้อผิดพลาดโดยครอบคลุมหลายโหนด
Dqlite เป็นไลบรารี C มันใช้เอ็นจิ้นฐานข้อมูลที่จำลองแบบและ SQL ที่มีความพร้อมใช้งานสูงและเฟลโอเวอร์อัตโนมัติ ตัวย่อ "dqlite" ย่อมาจาก "Distributed SQLite" ซึ่งหมายความว่า dqlite ขยาย SQLite ด้วยโปรโตคอลเครือข่ายที่สามารถเชื่อมต่อหลายอินสแตนซ์ของแอปพลิเคชันของคุณและทำให้พวกเขาทำหน้าที่เป็นคลัสเตอร์ที่พร้อมใช้งานสูงโดยไม่ต้องพึ่งพาฐานข้อมูลภายนอก
ดังกล่าวแล้ว DBMS ถูกนำไปใช้ในรูปแบบของไลบรารี C ที่แนบมากับแอ็พพลิเคชัน และเผยแพร่ภายใต้ใบอนุญาต Apache 2.0 (SQLite ดั้งเดิมมีให้ในโดเมนสาธารณะ) ไลบรารีเป็นปลั๊กอินบนฐานของโค้ด SQLite ที่มีอยู่ ซึ่งเพิ่มการสนับสนุนโปรโตคอลเครือข่ายเพื่อเชื่อมโยงหลายอินสแตนซ์ของแอปพลิเคชันที่ทำงานบนโฮสต์ที่แตกต่างกัน
แอปพลิเคชันที่สร้างด้วย Dqlite สามารถทำหน้าที่เป็นคลัสเตอร์เฟลโอเวอร์ได้ โดยความผิดพลาดอัตโนมัติโดยไม่ขึ้นกับ DBMS ภายนอก
ในทางปฏิบัติ Canonical ใช้ Dqlite ในระบบจัดการคอนเทนเนอร์ LXD. ในส่วนแอปพลิเคชันของห้องสมุดยังมีการกล่าวถึงการสร้างอุปกรณ์ Internet of Things และโปรเซสเซอร์ที่ทนต่อความผิดพลาดในระบบประมวลผล Edge
เพื่อให้แน่ใจว่ามีความสอดคล้องกันในการจำลองข้อมูลจึงใช้วิธีการฉันทามติตามอัลกอริทึม Raft ซึ่งใช้ในโครงการต่างๆเช่น etcd, RethinkDB, CockroachDB และ OpenDaylight Dqlite ใช้การใช้งาน C-raft แบบอะซิงโครนัสของตัวเองซึ่งเขียนด้วยภาษา C
ในการมัลติเพล็กซ์การประมวลผลการเชื่อมต่อและจัดการการเรียกใช้โครูทีนจะใช้ไลบรารีไลบรารีและ libco ที่เตรียมไว้
เมื่อเทียบกับโครงการ rqlite ที่คล้ายกัน Dqlite ให้การสนับสนุนธุรกรรมเต็มรูปแบบมันสามารถสื่อสารกับโปรเจ็กต์ C ใด ๆ ช่วยให้คุณใช้ฟังก์ชัน time () และใช้การจำลองแบบตามเฟรมแทนการจำลองตามการแปลนิพจน์ SQL
คุณสมบัติที่สามารถเน้นใน Dqlite มีดังต่อไปนี้:
- ดำเนินการดิสก์และเครือข่ายทั้งหมดในโหมดอะซิงโครนัส
- การมีชุดการทดสอบเพื่อยืนยันความถูกต้องของข้อมูล
- การใช้หน่วยความจำต่ำและการแลกเปลี่ยนข้อมูลที่มีประสิทธิภาพผ่านเครือข่าย
- พื้นที่จัดเก็บดิสก์ฐานข้อมูลถาวรและบันทึกธุรกรรม (พร้อมความสามารถในการแคชในหน่วยความจำ)
- การกู้คืนอย่างรวดเร็วหลังจากความล้มเหลว
- ไคลเอ็นต์ CLI ที่เสถียรในภาษา Go ซึ่งสามารถใช้เพื่อเริ่มต้นฐานข้อมูลกำหนดค่าการจำลองแบบและเชื่อมต่อ / ยกเลิกการเชื่อมต่อโหนด
- รองรับสถาปัตยกรรม ARM, X86, POWER และ IBM Z
- การใช้อัลกอริทึม Raft ได้รับการปรับให้เหมาะสมเพื่อลดเวลาแฝงของธุรกรรม
- การใช้งานเธรดเดี่ยวแบบอะซิงโครนัสโดยใช้ libuv เป็นลูปเหตุการณ์
- โปรโตคอลลวดแบบกำหนดเองได้รับการปรับให้เหมาะสมสำหรับข้อมูลพื้นฐานและชนิดข้อมูล
- การจำลองข้อมูลตามอัลกอริทึม Raft และการนำไปใช้อย่างมีประสิทธิภาพใน C-raft
จะติดตั้ง Dqlite บน Ubuntu และอนุพันธ์ได้อย่างไร?
Canonical ให้ข้อมูลเกี่ยวกับวิธีสร้างไคลเอนต์สำหรับการโต้ตอบกับ Dqlite คุณสามารถปรึกษาเรื่องนี้ได้ ในลิงค์ต่อไปนี้.
ตอนนี้สำหรับการติดตั้งไลบรารีบนระบบ สามารถติดตั้งได้สองวิธีสำหรับผู้ใช้ Ubuntu หรืออนุพันธ์อื่น ๆ ของมัน Canonical ให้ PPA จากที่ซึ่งสามารถหาได้ด้วยวิธีที่ค่อนข้างง่าย
PPA นี้สามารถเพิ่มได้จากเทอร์มินัลและดำเนินการคำสั่งต่อไปนี้:
sudo add-apt-repository ppa:dqlite/v1 sudo apt-get update sudo apt-get install libdqlite-dev
วิธีอื่นในการติดตั้งไลบรารีนี้คือการคอมไพล์ ของสิ่งนี้ในระบบดังนั้นนี่จึงเป็นวิธีการทั่วไปสำหรับทั้ง Ubuntu และลีนุกซ์รุ่นอื่น ๆ
ในการทำเช่นนี้พวกเขาจะต้องเปิดเทอร์มินัลและดำเนินการคำสั่งต่อไปนี้:
git clone --depth 100 https://github.com/canonical/sqlite.git cd sqlite ./configure --enable-replication make sudo make install cd .. git clone https://github.com/canonical/libco.git cd libco make sudo make install cd .. git clone https://github.com/canonical/raft.git cd raft autoreconf -i ./configure make sudo make install cd ..
เมื่อติดตั้งไลบรารีที่จำเป็นทั้งหมดแล้วเพื่อสร้างไลบรารีที่ใช้ร่วมกัน dqlite คุณสามารถเรียกใช้:
autoreconf -i ./configure make sudo make install