الافراج عن DBMS libmdbx 0.11.7. انقل التطوير إلى GitFlic بعد الإغلاق على GitHub

تم إصدار مكتبة libmdbx 0.11.7 (MDBX) مع تنفيذ قاعدة بيانات مدمجة ذات قيمة مفتاح مدمجة عالية الأداء. يتم توزيع كود libmdbx بموجب ترخيص OpenLDAP العام. يتم دعم جميع أنظمة التشغيل والبنيات الحالية ، بالإضافة إلى الروسية Elbrus 2000.

يتميز الإصدار بترحيل المشروع إلى خدمة GitFlic بعد أن قامت إدارة GitHub بإزالة libmdbx مع مجموعة من المشاريع الأخرى في 15 أبريل 2022 دون أي تحذير أو تفسير ، مع حظر الوصول في نفس الوقت إلى العديد من المطورين المرتبطين بالشركات التي سقطت تحت العقوبات الأمريكية. من وجهة نظر المستخدم ، تحولت جميع الصفحات والمستودعات والشوكات الخاصة بالمشروع فجأة إلى صفحة "404" ، دون إمكانية الاتصال ومعرفة الأسباب.

لسوء الحظ ، فقدت جميع القضايا تقريبًا ، حيث كان هناك العديد من الأسئلة مع إجابات مفصلة ، بالإضافة إلى الكثير من المناقشات. يعد فقدان هذه المعلومات هو الضرر الموضوعي الوحيد الذي تمكنت إدارة GitHub من إلحاقه بالمشروع. تظل النسخ الجزئية من المناقشات متاحة في أرشيف archive.org.

أجبرنا فقدان نصوص CI المدمجة والبنية التحتية (المتاحة لمشاريع OpenSource مجانًا) على القيام بمراجعة وتوحيد وإزالة الديون الفنية الصغيرة. الآن تمت استعادة CI إلى نفس الحد تقريبًا ، باستثناء عمليات الإنشاء والتجارب لجميع متغيرات BSD و Solaris. بصراحة ، بعد إجراءات GitHub ، لم يتم تلقي أي توضيحات أو إخطارات ، باستثناء التذكير بالحاجة إلى الدفع ومحاولات شطب الأموال.

منذ آخر الأخبار حول إصدار libmdbx v0.11.3 ، بالإضافة إلى التعافي من إجراءات GitHub ، تجدر الإشارة إلى التحسينات والإصلاحات التالية:

  • تمت إضافة حل بديل لتأثير / عيب عدم الترابط المكتشف في الصفحة المدمجة وذاكرة التخزين المؤقت في Linux kernel. في الأنظمة التي تكون فيها ذاكرة التخزين المؤقت للصفحة والمخزن المؤقت موحدة حقًا ، ليس من المنطقي أن تضيع النواة الذاكرة على نسختين من البيانات عند الكتابة إلى ملف معين للذاكرة بالفعل. لذلك ، تصبح البيانات التي تتم كتابتها مرئية عبر تعيين الذاكرة قبل اكتمال استدعاء نظام الكتابة () ، حتى إذا لم تتم كتابة البيانات على القرص بعد.

    في المجمل ، السلوك الآخر ليس عقلانيًا ، لأنه مع الدمج المتأخر ، لا يزال يتعين عليك الحصول على أقفال لقوائم الصفحات أو نسخ البيانات أو ضبط PTE. لذلك ، كانت قاعدة التماسك غير المعلنة سارية المفعول منذ عام 1989 ، عندما ظهرت ذاكرة التخزين المؤقت الموحدة في SRV4. لذلك ، فإن العثور على إخفاقات غريبة في سيناريوهات إنتاج libmdbx المزدحم يتطلب الكثير من العمل. أولاً ، عن طريق إعادة إنتاج المشكلة ، ثم بالتحقق من الفرضيات والتحقق من التحسينات.

    يمكننا الآن أن نقول بثقة أن المشكلة قد تم تحديدها بشكل موثوق ، وتوطينها وحلها بشكل موثوق ، على الرغم من تعقيد وخصوصية سيناريو التشغيل. بالإضافة إلى ذلك ، تم تأكيد عمل آلية الالتفاف من قبل أحد مطوري Erigon (Ethereum) ، في حالته ، في بناء التصحيح ، تم تشغيل الحماية على أنها انحدار بسبب فحص تأكيد إضافي.

    وتجدر الإشارة إلى أنه في سياق الاستخدام الواسع النطاق لـ libmdbx في مشاريع العمل ، من المهم بشكل أساسي ضمان التشغيل الموثوق به ، بدلاً من اكتشاف "هل هذا خطأ أو ميزة" وما إذا كان يمكن الاعتماد على هذا الاتساق ، خاصة عدم العثور على أسباب عدم الترابط داخل نواة Linux. لذلك ، نتحدث هنا عن إصلاح مشكلة قد تؤثر على المستخدمين.

  • تم إصلاح انحدار خطأ EXDEV (ارتباط عبر الأجهزة) عند النسخ السريع لقاعدة البيانات دون ضغط إلى نظام ملفات آخر ، سواء من خلال API أو باستخدام الأداة المساعدة mdbx_copy.
  • نفذ Kris Zyp دعمًا لـ libmdbx في Deno. قام Kai Wetlesen بتعبئة RPMs لـ Fedora. نفذ David Bouyssié عمليات الربط لـ Scala.
  • معالجة ثابتة للقيمة المحددة بواسطة خيار MDBX_opt_rp_augment_limit عند معالجة المعاملات الضخمة في قواعد البيانات الكبيرة. في السابق ، نظرًا لوجود خطأ ، كان من الممكن تنفيذ إجراءات غير ضرورية ، والتي أثرت أحيانًا على الأداء في تطبيقات Ethereum (Erigon / Akula / Silkworm) ومشروعات Binance Chain.
  • تم إصلاح الكثير من الأخطاء ، بما في ذلك تلك الموجودة في واجهة برمجة تطبيقات C ++. تم إصلاح العديد من مشكلات الإنشاء في التكوينات النادرة والغريبة. تتوفر قائمة كاملة بجميع التحسينات الهامة في سجل التغيير.
  • تم إجراء ما مجموعه 185 تغييرًا على 89 ملفًا ، وأضيف 3300 سطرًا ، وتم حذف 4100. تمت الإزالة أكثر في الغالب بسبب مسح الملفات التقنية غير المفيدة بالفعل المرتبطة بـ GitHub والخدمات التابعة.

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

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

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

المصدر: opennet.ru

إضافة تعليق