การเปิดตัว DBMS libmdbx 0.11.3 แบบฝังประสิทธิภาพสูง

ไลบรารี libmdbx 0.11.3 (MDBX) เปิดตัวพร้อมกับการใช้งานฐานข้อมูลคีย์-ค่าแบบฝังขนาดกะทัดรัดประสิทธิภาพสูง รหัส libmdbx ได้รับอนุญาตภายใต้ OpenLDAP Public License รองรับระบบปฏิบัติการและสถาปัตยกรรมปัจจุบันทั้งหมด เช่นเดียวกับ Russian Elbrus 2000 ณ สิ้นปี 2021 libmdbx จะถูกใช้เป็นแบ็กเอนด์พื้นที่เก็บข้อมูลในไคลเอนต์ Ethereum ที่เร็วที่สุดสองตัว - Erigon และ “Shark” ใหม่ ซึ่งตามข้อมูลที่มีอยู่ ข้อมูลเป็นไคลเอนต์ Ethereum ที่มีประสิทธิภาพสูงสุด

ในอดีต libmdbx เป็นการนำ LMDB DBMS มาใช้ใหม่อย่างลึกซึ้ง และเหนือกว่ารุ่นก่อนในด้านความน่าเชื่อถือ ชุดคุณลักษณะ และประสิทธิภาพ เมื่อเปรียบเทียบกับ LMDB แล้ว libmdbx ให้ความสำคัญกับคุณภาพของโค้ด ความเสถียรของ API การทดสอบ และการตรวจสอบอัตโนมัติเป็นอย่างมาก มียูทิลิตี้สำหรับตรวจสอบความสมบูรณ์ของโครงสร้างฐานข้อมูลพร้อมความสามารถในการกู้คืนบางอย่าง

ด้วยเทคโนโลยีที่ชาญฉลาด libmdbx นำเสนอ ACID, การเปลี่ยนแปลงซีเรียลไลเซชันที่แข็งแกร่ง และการอ่านแบบไม่บล็อกพร้อมการปรับขนาดเชิงเส้นทั่วคอร์ CPU รองรับการย่อขนาดอัตโนมัติ การจัดการขนาดฐานข้อมูลอัตโนมัติ และการประมาณค่าแบบสอบถามช่วง ตั้งแต่ปี 2016 โครงการได้รับทุนจาก Positive Technologies และถูกนำมาใช้ในผลิตภัณฑ์ตั้งแต่ปี 2017

libmdbx มี C++ API รวมถึงการผูกภาษาที่ผู้สนใจรองรับสำหรับ Rust, Haskell, Python, NodeJS, Ruby, Go และ Nim

นวัตกรรมที่สำคัญ การปรับปรุง และการแก้ไขที่เพิ่มเข้ามานับตั้งแต่ข่าวก่อนหน้าเมื่อวันที่ 11 ตุลาคม:

  • C++ API ถือว่าพร้อมใช้งานแล้ว
  • การอัปเดตข้อมูล GC เมื่อทำธุรกรรมขนาดใหญ่ได้รับการเร่งความเร็วอย่างมาก ซึ่งมีความสำคัญอย่างยิ่งเมื่อใช้ libmdbx ในระบบนิเวศ Ethereum
  • ลายเซ็นภายในของรูปแบบฐานข้อมูลมีการเปลี่ยนแปลงเพื่อรองรับการอัปเดตอัตโนมัติซึ่งโปร่งใสต่อผู้ใช้อย่างสมบูรณ์ วิธีนี้ช่วยให้คุณสามารถกำจัดข้อความที่เป็นเท็จเกี่ยวกับความเสียหายของฐานข้อมูลได้ เมื่อมีการใช้ไลบรารีเวอร์ชันเก่าเพื่ออ่านธุรกรรมที่บันทึกโดยเวอร์ชันปัจจุบัน
  • เพิ่มฟังก์ชัน mdbx_env_get_syncbytes(), mdbx_env_get_sync period() และ mdbx_env_get_syncbytes() เพิ่มการสนับสนุนสำหรับการดำเนินการ MDBX_SET_UPPERBOUND
  • คำเตือนทั้งหมดเมื่อสร้างด้วยคอมไพเลอร์ที่รองรับทั้งหมดในโหมด C++ 11/14/17/20 ได้ถูกกำจัดออกไปแล้ว รับประกันความเข้ากันได้กับคอมไพเลอร์รุ่นเก่า: clang เริ่มต้นจาก 3.9, gcc เริ่มต้นจาก 4.8 รวมถึงการประกอบโดยใช้ cdevtoolset-9 สำหรับ CentOS/RHEL 7
  • แก้ไขความเป็นไปได้ของข้อขัดแย้งของหน้าเมตาหลังจากสลับไปยังหน้าเมตาเฉพาะด้วยตนเองโดยใช้ยูทิลิตี้ mdbx_chk
  • แก้ไขข้อผิดพลาด MDBX_PROBLEM ที่ไม่คาดคิดที่ส่งคืนเมื่อเขียนทับหน้าเมตาดั้งเดิม
  • แก้ไขการส่งคืน MDBX_NOTFOUND ในกรณีที่การจับคู่ไม่ตรงกันเมื่อประมวลผลคำขอ MDBX_GET_BOTH
  • แก้ไขข้อผิดพลาดในการคอมไพล์บน Linux ในกรณีที่ไม่มีไฟล์ส่วนหัวพร้อมคำอธิบายอินเทอร์เฟซกับเคอร์เนล
  • แก้ไขข้อขัดแย้งระหว่างการตั้งค่าสถานะภายใน MDBX_SHRINK_ALLOWED และตัวเลือก MDBX_ACCEDE
  • การตรวจสอบยืนยันที่ไม่จำเป็นหลายอย่างได้ถูกยกเลิกไปแล้ว
  • แก้ไขการส่งคืน MDBX_RESULT_TRUE ที่ไม่คาดคิดจากฟังก์ชัน mdbx_env_set_option()
  • โดยรวมแล้ว มีการเปลี่ยนแปลงมากกว่า 90 รายการใน 25 ไฟล์ มีการเพิ่มประมาณ 1300 บรรทัด และลบประมาณ 600 บรรทัด

ที่มา: opennet.ru

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