การเปิดตัว DBMS libmdbx 0.9.1 แบบฝังขนาดกะทัดรัด

ปล่อยแล้ว ไลบรารี่เวอร์ชัน 0.9.1 libmdbx.libmdbx (MDBX) การใช้งานฐานข้อมูลคีย์-ค่าแบบฝังที่มีประสิทธิภาพสูงและมีขนาดกะทัดรัด รหัส libmdbx ได้รับการเผยแพร่ภายใต้ใบอนุญาต ใบอนุญาตสาธารณะ OpenLDAP.

เวอร์ชันปัจจุบันเป็นการประนีประนอมระหว่างความตั้งใจที่จะเผยแพร่เวอร์ชันเสถียรระยะยาว 1.0 พร้อมการรองรับ C++ เต็มรูปแบบ และความลังเลที่จะชะลอการเผยแพร่เนื่องจากไม่ได้เตรียมตัวสำหรับการแช่แข็ง C++ API ใหม่ รุ่นที่นำเสนอนี้เป็นผลมาจากการทำงาน 9 เดือนโดยมีเป้าหมายเพื่อรักษาเสถียรภาพของห้องสมุดและปรับปรุงการใช้งานและยังรวมถึงเวอร์ชันเบื้องต้นด้วย C++ API.

ไลบรารี libmdbx ไม่ได้เป็นเพียง "ทางแยก" แต่เป็นลูกหลานที่ได้รับการออกแบบใหม่อย่างสิ้นเชิง แอลเอ็มดีบี — DBMS แบบฝังทรานแซคชันของคลาส “คีย์-ค่า” ตาม ต้นไม้ B+ ไม่มี การบันทึกเชิงรุกซึ่งช่วยให้กระบวนการแบบมัลติเธรดทำงานได้อย่างมีประสิทธิภาพและแข่งขันกับฐานข้อมูลที่ใช้ร่วมกันในเครื่อง (ไม่ใช่เครือข่าย) โดยไม่ต้องใช้กระบวนการเซิร์ฟเวอร์เฉพาะ libmdbx โดยพื้นฐาน ขยาย ความสามารถของบรรพบุรุษในขณะเดียวกันก็ขจัดหรือบรรเทาข้อเสียไปพร้อม ๆ กัน ในขณะเดียวกันตามที่นักพัฒนาระบุว่า libmdbx นั้นเร็วกว่าเล็กน้อยและเชื่อถือได้มากกว่า LMDB อย่างมาก

libmdbx แนะนำ กรดการจัดลำดับการเปลี่ยนแปลงที่เข้มงวดและการอ่านแบบไม่บล็อกด้วยการปรับขนาดเชิงเส้นทั่วทั้งคอร์ CPU ผลการทดสอบประสิทธิภาพ (การส่งคำขออ่าน/ค้นหาแบบขนานในเธรด 1-2-4-8 บน CPU i7-4600U พร้อมด้วยฟิสิคัลคอร์ 2 คอร์ในโหมด HyperThread 4 เธรด):

การเปิดตัว DBMS libmdbx 0.9.1 แบบฝังขนาดกะทัดรัด

ความแตกต่างที่สำคัญที่สุดระหว่าง MDBX และ LMDB:

  • โดยพื้นฐานแล้ว เราให้ความสำคัญกับคุณภาพของโค้ด ความสอดคล้องของ API การทดสอบ และการตรวจสอบอัตโนมัติมากขึ้น
  • การควบคุมที่มากขึ้นระหว่างการดำเนินการ ตั้งแต่การตรวจสอบพารามิเตอร์ไปจนถึงการตรวจสอบโครงสร้างฐานข้อมูลภายใน
  • ย่อขนาดอัตโนมัติและจัดการขนาดฐานข้อมูลอัตโนมัติ
  • รูปแบบฐานข้อมูลเดียวสำหรับแอสเซมบลี 32 บิตและ 64 บิต
  • การประมาณปริมาณตัวอย่างตามช่วง (การประมาณค่าแบบสอบถามช่วง)
  • รองรับคีย์ที่ยาวเป็นสองเท่าและขนาดเพจฐานข้อมูลที่ผู้ใช้สามารถเลือกได้
  • ยูทิลิตี้สำหรับตรวจสอบความสมบูรณ์ของโครงสร้างฐานข้อมูลพร้อมความสามารถในการกู้คืนบางอย่าง

นวัตกรรมหลักและการปรับปรุงหลังจากนั้น ข่าวก่อนหน้า ด้วยการเปิดตัวเวอร์ชัน 0.5 ในเดือนมกราคม 2020:

  • มีการสร้างระบบเปิดเพื่อรองรับและตอบคำถามอย่างรวดเร็ว กลุ่มโทรเลข.
  • ข้อผิดพลาดและข้อบกพร่องมากกว่าหนึ่งโหลได้ถูกกำจัดแล้ว (ดู บันทึกการเปลี่ยนแปลง).
  • การพิมพ์ผิดและการสะกดคำผิดจำนวนมากได้รับการแก้ไขแล้ว และมีการปรับปรุงรูปลักษณ์มากมาย
  • สถานการณ์การทดสอบได้รับการขยาย
  • รองรับ iOS, Android, บิวด์รูท, มุสล, ยูคลิบซี, WSL1 и ไวน์.
  • ตัวอย่าง C++ API เปิดตัวใน ไฟล์ส่วนหัวหนึ่งไฟล์.
  • เอกสารประกอบในตัวในรูปแบบ Doxygen และการสร้างอัตโนมัติ เอกสารออนไลน์.
  • มีการสร้างไฟล์เก็บถาวรอัตโนมัติพร้อมข้อความต้นฉบับที่รวมกัน
  • เพิ่มการรองรับสำหรับการเตรียมธุรกรรมและเคอร์เซอร์ บริบทผู้ใช้สำหรับธุรกรรมและเคอร์เซอร์
  • มีการใช้วิธีการเพิ่มเติมเพื่อควบคุมความสมบูรณ์ของการอ้างอิงในสแน็ปช็อต MVCC ของ B+tree
  • เพิ่มการรองรับสำหรับการตรวจสอบสแน็ปช็อต MVCC ของฐานข้อมูล ซึ่งสามารถเข้าถึงได้ผ่านหน้าเมตาใด ๆ ที่สามารถสลับสำหรับการกู้คืนได้
  • ดำเนินการสนับสนุนสำหรับการเปิดฐานข้อมูลอีกครั้งจากกระบวนการเดียวเพื่อการทดสอบ ฯลฯ
  • ใช้การประมวลผลอัตโนมัติของตัวเลือก MDBX_NOSUBDIR เมื่อเปิดฐานข้อมูล
  • เพิ่มฟังก์ชั่นสำหรับการสร้างคีย์จำนวนเต็มจากค่าทศนิยมและตัวเลข "สากล" ของ JavaScript
  • โดยรวมแล้วมีการเปลี่ยนแปลง 430 รายการซึ่งส่งผลต่อไฟล์ 93 ไฟล์ มีการเพิ่มมากกว่า 25 บรรทัด และมากกว่า 8.5 บรรทัดถูกลบ

การพัฒนาครั้งต่อไปของ libmdbx จะมุ่งเน้นไปที่ C++ API สุดท้าย, การรักษาเสถียรภาพของโค้ดฐานเพิ่มเติม, ปรับปรุงการใช้งานของไลบรารี และแพ็คเกจสำหรับการกระจาย Linux ยอดนิยม ในบรรดาการปรับปรุงที่นำเสนอ เป็นเรื่องน่าสังเกตว่ารองรับคีย์ในรูปแบบ MessagePack.

ที่มา: opennet.ru

เพิ่มความคิดเห็น