إصدار نظام إدارة قواعد البيانات المدمج عالي الأداء libmdbx 0.11.3

تم إصدار مكتبة libmdbx 0.11.3 (MDBX) مع تنفيذ قاعدة بيانات ذات قيمة رئيسية مدمجة عالية الأداء. تم ترخيص كود libmdbx بموجب ترخيص OpenLDAP العام. يتم دعم جميع أنظمة التشغيل والبنيات الحالية، بالإضافة إلى Elbrus 2000 الروسي. وفي نهاية عام 2021، سيتم استخدام libmdbx كواجهة تخزين خلفية في أسرع عميلين لـ Ethereum - Erigon و"Shark" الجديد، والذي، وفقًا لما هو متاح، المعلومات، هو عميل Ethereum الأعلى أداءً.

من الناحية التاريخية ، يعد libmdbx إعادة تصميم عميقة لنظام LMDB DBMS ويتفوق على أسلافه من حيث الموثوقية ومجموعة الميزات والأداء. مقارنةً بـ LMDB ، يركز libmdbx كثيرًا على جودة الكود واستقرار واجهة برمجة التطبيقات والاختبار والفحوصات الآلية. يتم توفير أداة مساعدة للتحقق من سلامة بنية قاعدة البيانات مع بعض خيارات الاسترداد.

من الناحية التقنية، يقدم libmdbx ACID، وتسلسلًا قويًا للتغيير، وقراءات غير محظورة مع مقياس خطي عبر مراكز وحدة المعالجة المركزية. يتم دعم الضغط التلقائي والإدارة التلقائية لحجم قاعدة البيانات وتقدير استعلام النطاق. منذ عام 2016، يتم تمويل المشروع من قبل شركة Positive Technologies ويتم استخدامه في منتجاتها منذ عام 2017.

يقدم libmdbx واجهة برمجة تطبيقات C++، بالإضافة إلى روابط اللغة المدعومة من قبل المتحمسين لـ Rust وHaskell وPython وNodeJS وRuby وGo وNim.

الابتكارات والتحسينات والتصحيحات الرئيسية التي تمت إضافتها منذ الأخبار السابقة في 11 أكتوبر:

  • تعتبر واجهة برمجة تطبيقات C++ جاهزة للاستخدام.
  • تم تسريع تحديث بيانات GC عند ارتكاب معاملات ضخمة بشكل كبير، وهو أمر مهم بشكل خاص عند استخدام libmdbx في النظام البيئي Ethereum.
  • تم تغيير التوقيع الداخلي لتنسيق قاعدة البيانات لدعم التحديث التلقائي، وهو أمر شفاف تمامًا للمستخدمين. يسمح لك هذا بإزالة الرسائل الإيجابية الخاطئة حول تلف قاعدة البيانات عند استخدام الإصدارات القديمة من المكتبة لقراءة المعاملات المسجلة بواسطة الإصدارات الحالية.
  • تمت إضافة الوظائف mdbx_env_get_syncbytes() وmdbx_env_get_syncperiod() و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 في حالة عدم وجود ملفات رأسية مع أوصاف للواجهات مع kernel.
  • تم إصلاح التعارض بين العلامة الداخلية MDBX_SHRINK_ALLOWED وخيار MDBX_ACCEDE.
  • تمت إزالة العديد من عمليات التحقق غير الضرورية.
  • تم إصلاح الإرجاع غير المتوقع لـ MDBX_RESULT_TRUE من وظيفة mdbx_env_set_option().
  • في المجمل، تم إجراء أكثر من 90 تغييرًا على 25 ملفًا، وتمت إضافة 1300 سطر تقريبًا، وتم حذف 600 سطر تقريبًا.

المصدر: opennet.ru

إضافة تعليق