การเปิดตัว DBMS libmdbx 0.13.6 แบบฝัง

มีการเปิดตัวไลบรารี libmdbx 0.13.6 (MDBX) ซึ่งใช้งานฐานข้อมูลคีย์-ค่าแบบฝังตัวขนาดกะทัดรัดและประสิทธิภาพสูง โค้ด libmdbx ได้รับการเผยแพร่ภายใต้ใบอนุญาต Apache 2.0 รองรับระบบปฏิบัติการและสถาปัตยกรรมปัจจุบันทั้งหมด รวมถึง Elbrus 2000 ของรัสเซีย สำหรับ libmdbx นั้น มี API ขั้นสูงสำหรับ C++ รวมถึงการผูกมัดที่รองรับโดยผู้ที่ชื่นชอบกับภาษา Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala โปรเจ็กต์ที่ใช้ libmdbx ได้แก่ Isar, Erigon และ Reth เช่นเดียวกับการพัฒนาโดย StarkWare และ Positive Technologies

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

การเปลี่ยนแปลงที่สำคัญ:

  • การเปลี่ยนแปลงพฤติกรรม: เมื่อเคอร์เซอร์ไม่สามารถยกเลิกการเชื่อมโยงจากธุรกรรมปัจจุบันได้ mdbx_cursor_bind() จะส่งกลับ MDBX_EINVAL แทน MDBX_BAD_TXN
  • เพื่อหลีกเลี่ยงปัญหาที่อาจเกิดขึ้น การใช้งานฟังก์ชัน copy_file_range() ในเคอร์เนลจึงถูกปิดใช้งาน Linux 5.3 - 5.18.
  • การโยน std::invalid_argument เสร็จสิ้นแล้วด้วยข้อความ MDBX_EINVAL ที่ชัดเจน
  • แก้ไขการถดถอยเมื่อใช้เคอร์เซอร์สำหรับ DBI=0 (หรือที่เรียกว่า GC/FreeDB) ในธุรกรรมการอ่าน
  • แก้ไขการถดถอยในรูปแบบของข้อผิดพลาด EAGAIN เมื่อคัดลอกฐานข้อมูลไปยัง NFS และ CIFS/SMB
  • ระหว่างการปรับปรุง/พัฒนา API ได้มีการเพิ่มการได้มาซึ่งการล็อกไฟล์ลงในฟังก์ชันคัดลอกโดยใช้ทั้ง fcntl() และ flock() อย่างไรก็ตาม เวอร์ชันของเคอร์เนลระยะไกลอาจแตกต่างกันไปขึ้นอยู่กับเวอร์ชันของเคอร์เนลในเครื่อง เซิร์ฟเวอร์ ตัวเลือก NFS และการเมานต์ อาจส่งผลให้เกิดข้อผิดพลาด POSIX EAGAIN (11) บนแพลตฟอร์มส่วนใหญ่ รวมถึง Linux).
  • แก้ไขข้อผิดพลาดในการผสาน/รีเบสภายใน mdbx_txn_release_all_cursors_ex() ซึ่งอาจทำให้เกิดข้อผิดพลาด MDBX_EBADSIGN ที่ไม่คาดคิดตามมา และการรั่วไหลของหน่วยความจำ
  • การตรวจสอบยืนยันแบบคงที่ในเส้นทางการเสร็จสิ้นธุรกรรมแบบซ้อนกัน
  • แก้ไขความเป็นไปได้ในการส่งคืนข้อผิดพลาดที่ไม่คาดคิด MDBX_BUSY จาก mdbx_txn_lock (dont_wait=false)
  • เพื่อให้เข้ากันได้กับ GCC 15.x ในโหมด C23 ลำดับการระบุแอตทริบิวต์ของฟังก์ชันจึงได้รับการเปลี่ยนแปลง

ที่มา: opennet.ru

ซื้อโฮสติ้งที่เชื่อถือได้สำหรับไซต์ที่มีการป้องกัน DDoS เซิร์ฟเวอร์ VPS VDS 🔥 ซื้อบริการเว็บโฮสติ้งที่เชื่อถือได้ พร้อมระบบป้องกัน DDoS และเซิร์ฟเวอร์ VPS/VDS | ProHoster