الافراج عن مكتبات الإصدار 0.10.4 "libmdbx" في المجموع ، تم إجراء أكثر من 160 تغييرًا على 57 ملفًا ، وتمت إضافة 5000 سطر تقريبًا وإزالة 2500 سطر تقريبًا. بالنسبة لأولئك الذين ليسوا على دراية بـ libmdbx ، يجب أن تعلم أن هذه مجموعة من المكتبات التي تمثل تنفيذ قاعدة بيانات مدمجة عالية الأداء لفئة قيمة المفتاح.
تاريخيا ، libmdbx هو إعادة صياغة عميقة لنظام LMDB DBMS ويتفوق على سابقتها في الموثوقية ومجموعة الميزات والأداء. مقارنة بـ LMDB ، يركز libmdbx كثيرًا على جودة الكود واستقرار واجهة برمجة التطبيقات والاختبار والفحوصات الآلية. يتم توفير أداة مساعدة للتحقق من سلامة بنية قاعدة البيانات مع بعض خيارات الاسترداد.
من الناحية التكنولوجية ، يقدم libmdbx ACID ، وتسلسلًا صارمًا للتغيير ، وقراءات غير محظورة مع تحجيم خطي على النوى من وحدة المعالجة المركزية. يدعم الضغط التلقائي والتحكم التلقائي في حجم قاعدة البيانات وتقدير استعلام النطاق. منذ عام 2016 ، تم تمويل المشاريع من قبل شركة Positive Technologies وتم استخدامها في منتجاتها منذ عام 2017.
بالنسبة لـ libmdbx ، يتم تقديم واجهة برمجة تطبيقات C ++ ، بالإضافة إلى روابط صديقة للمتحمسين لـ Rust و Haskell و Python و NodeJS و Ruby و Go و Nim. بالنسبة إلى libfpta ، يتوفر فقط وصف API في شكل ملف رأس C / C ++ للجمهور.
بالإضافة إلى دعم Linux و Windows و MacOS و Android و iOS و FreeBSD و DragonFly و Solaris و OpenSolaris و OpenIndiana و NetBSD و OpenBSD وأنظمة أخرى متوافقة POSIX.1-2008.
الميزات الرئيسية الجديدة لـ libmdbx 0.10.4
في هذا الإصدار الجديد من libmdbx 0.10.4 عمل المطورون ليكونوا قادرين على توفير القدرة على الإنشاءات القابلة للتكرار ، بالإضافة إلى أنه تم تحسين الاختبارات وتم توسيع البرامج النصية للاختبار للتحقق من جميع الحالات غير المتشابهة التي يمكن الوصول إليها لشجرة الصفحة ومحتوى GC داخل قاعدة البيانات.
في C ++ API تم إصلاحه مرة واحدة "noexcept" ، إضافة حمل زائد لطريقة "cursor :: erase ()" ، يتم التخفيف من تنفيذ المخازن المؤقتة باستخدام "std :: string" لضمان المحاذاة (الحالية لـ CLANG libstdc ++)
بالإضافة إلى ذلك ، تم تسليط الضوء أيضًا على أن تم إجراء تحقق تدريجي مع إضافة سلسلة من عمليات التحقق لضمان الاستقرار في حالة الضرر المتعمد لقاعدة البيانات.
من ناحية أخرى ، تم تسليط الضوء على أن البحث عن مكونات المترجم الضرورية لـ LTO (تحسين وقت الارتباط) قد تم تحسينه في نصوص CMake ، بالإضافة إلى حقيقة أن الحد الأقصى لعدد القراء المتزامنين قد تم زيادته إلى 32.767 وكذلك تم تحسين الأداء عند استخدام Valgrind و AddressSanitizer.
بخصوص إصلاحات الشوائب التي تم صنعها في هذا الإصدار الجديد ، نذكر ما يلي:
- تم إصلاح الخلل حيث ، في حالات نادرة جدًا ، قد تحدث حلقة / عطل أثناء تنفيذ المعاملة. تم تحديد المشكلة من قبل متخصصين من شركة Positive Technologies أثناء الاختبارات الداخلية لمنتجاتهم الخاصة.
- تم إصلاح الانحدار في خوارزمية تسرب الصفحة القذرة (الإخلاء الانتقائي لصفحات قاعدة البيانات المتغيرة) التي تظهر في خطأ نادر غير متوقع MDBX_PROBLEM عند تغيير البيانات في المعاملات الكبيرة.
- تم إصلاح مشكلات UndefinedBehaviorSanitizer و Coverity Scan الثانوية.
تم إصلاح التحقق من وجود علامة داخلية مهملة وغير مستخدمة "P_DIRTY" على الصفحات المتداخلة في صور قاعدة البيانات التي تم إنشاؤها بواسطة الإصدارات القديمة من المكتبة. - الاستخدام المتكرر الثابت لقفل SRW على نظام التشغيل Windows عند العمل في وضع MDBX_NOTLS (بدون استخدام التخزين المحلي للخيط) ، وتوليد التمهيد الثابت عند تغيير وقت النظام ، وتحسين اكتشاف WSL1 و WSL2 ، تمت إضافة القدرة على فتح قاعدة بيانات Plan 9 المثبتة باستخدام DrvFS.
أخيرا إذا كنت مهتمًا بمعرفة المزيد عنها حول هذا الإصدار الجديد ، يمكنك التحقق من التفاصيل في الرابط التالي.