انتشار DBMS libmdbx 0.11.7. پس از قفل شدن در GitHub توسعه را به GitFlic منتقل کنید

کتابخانه libmdbx 0.11.7 (MDBX) با پیاده سازی یک پایگاه داده فشرده و فشرده با ارزش کلیدی با کارایی بالا منتشر شده است. کد libmdbx تحت مجوز عمومی OpenLDAP توزیع شده است. تمام سیستم عامل ها و معماری های فعلی و همچنین Elbrus 2000 روسی پشتیبانی می شوند.

این انتشار به دلیل انتقال پروژه به سرویس GitFlic پس از حذف libmdbx توسط مدیریت GitHub به همراه تعداد زیادی از پروژه ها در 15 آوریل 2022 بدون هیچ اخطار یا توضیحی قابل توجه است، در حالی که به طور همزمان دسترسی بسیاری از توسعه دهندگان مرتبط با شرکت های سقوط کرده را مسدود کرد. تحت تحریم های آمریکا از دید کاربر، تمامی صفحات، مخزن و فورک های پروژه به یکباره بدون امکان ارتباط و اطلاع از دلایل به صفحه «404» تبدیل شدند.

متأسفانه تقریباً همه مسائل از بین رفته است که در آنها سؤالات زیادی با پاسخ دقیق و همچنین بحث های زیادی وجود داشت. از دست دادن این اطلاعات تنها آسیب عینی است که مدیریت GitHub توانسته به پروژه وارد کند. نسخه‌های جزئی از بحث‌ها در آرشیو archive.org موجود است.

از دست دادن اسکریپت‌ها و زیرساخت‌های داخلی CI (برای پروژه‌های OpenSource به صورت رایگان در دسترس است) ما را مجبور به بازبینی، یکسان سازی و حذف یک بدهی فنی کوچک کرد. اکنون CI تقریباً به همان میزان بازیابی شده است، به استثنای ساخت‌ها و اجرای آزمایشی برای همه انواع BSD و Solaris. واضح است که پس از اقدامات GitHub، به جز یادآوری نیاز به پرداخت و تلاش برای حذف پول، هیچ توضیح یا اطلاعیه ای دریافت نشد.

از آنجا که آخرین اخبار در مورد انتشار libmdbx v0.11.3، علاوه بر بازیابی از اقدامات GitHub، بهبودها و اصلاحات زیر قابل ذکر است:

  • راه‌حلی برای اثر/نقص ناسازگاری شناسایی شده در صفحه ترکیبی و حافظه پنهان در هسته لینوکس اضافه شده است. در سیستم‌هایی که صفحه و کش بافر واقعاً یکپارچه هستند، برای هسته بی‌معنی است که هنگام نوشتن روی یک فایل از قبل نقشه‌برداری شده حافظه، حافظه را روی دو نسخه از داده‌ها تلف کند. بنابراین، داده های در حال نوشتن از طریق نقشه برداری حافظه قبل از تکمیل فراخوانی سیستم نوشتن () قابل مشاهده می شوند، حتی اگر داده ها هنوز روی دیسک نوشته نشده باشند.

    در مجموع، رفتارهای دیگر منطقی نیست، زیرا با ادغام تاخیری، همچنان باید قفل لیست صفحات را بگیرید، داده ها را کپی کنید یا PTE را تنظیم کنید. بنابراین، قاعده ناگفته انسجام از سال 1989، زمانی که حافظه پنهان بافر یکپارچه در SRV4 ظاهر شد، اعمال شده است. بنابراین، یافتن شکست های عجیب در سناریوهای تولید شلوغ libmdbx مستلزم کار زیادی بود. ابتدا با بازتولید مسئله، سپس با تأیید فرضیه ها و بررسی پیشرفت ها.

    اکنون می‌توانیم با اطمینان بگوییم که با وجود پیچیدگی و خاص بودن سناریوی پخش، مشکل به‌طور قابل اعتماد شناسایی، بومی‌سازی و با اطمینان از بین رفته است. علاوه بر این، کار مکانیزم بای پس توسط یکی از توسعه دهندگان Erigon (اتریوم) تایید شد، در مورد او، در ساخت اشکال زدایی، حفاظت به عنوان یک رگرسیون به دلیل بررسی ادعای اضافی فعال شد.

    لازم به ذکر است که در زمینه استفاده گسترده از libmdbx در پروژه‌های کاری، اطمینان از عملکرد قابل اعتماد، به جای اینکه بفهمیم «این یک اشکال است یا یک ویژگی» و اینکه آیا می‌توان به چنین انسجامی می‌توان اعتماد کرد، اساساً مهم‌تر است. به خصوص پیدا نکردن دلایل عدم انسجام در هسته لینوکس. بنابراین، در اینجا ما در مورد رفع مشکلی صحبت می کنیم که می تواند کاربران را تحت تأثیر قرار دهد.

  • رفع رگرسیون خطای EXDEV (پیوند بین دستگاه) هنگام کپی کردن داغ یک پایگاه داده بدون فشرده سازی در سیستم فایل دیگر، هم از طریق API و هم با استفاده از ابزار mdbx_copy.
  • Kris Zyp پشتیبانی از libmdbx را در Deno پیاده سازی کرده است. Kai Wetlesen RPM ها را برای فدورا بسته بندی کرده است. دیوید بویسی اتصالات را برای اسکالا اجرا کرد.
  • پردازش ثابت مقدار تعیین شده توسط گزینه MDBX_opt_rp_augment_limit هنگام پردازش تراکنش های بزرگ در پایگاه های داده بزرگ. پیش از این، به دلیل وجود یک باگ، اقدامات غیرضروری می‌توانست انجام شود که گاهی اوقات بر عملکرد پیاده‌سازی‌های اتریوم (Erigon/Akula/Silkworm) و پروژه‌های زنجیره بایننس تأثیر می‌گذارد.
  • بسیاری از باگ‌ها از جمله موارد موجود در C++ API برطرف شده‌اند. رفع بسیاری از مشکلات ساخت در پیکربندی های کمیاب و عجیب و غریب. فهرست کاملی از تمام پیشرفت‌های مهم در ChangeLog موجود است.
  • در مجموع 185 تغییر در 89 فایل ایجاد شد، ≈3300 خط اضافه شد، ≈4100 حذف شد. بیشتر به دلیل پاکسازی فایل های فناوری بی فایده مرتبط با GitHub و سرویس های وابسته حذف شده است.

از لحاظ تاریخی، libmdbx یک طراحی مجدد عمیق از LMDB DBMS است و از نظر قابلیت اطمینان، مجموعه ویژگی‌ها و عملکرد از پیشینیان خود پیشی می‌گیرد. در مقایسه با LMDB، libmdbx تاکید زیادی بر کیفیت کد، پایداری API، تست و بررسی خودکار دارد. ابزاری برای بررسی یکپارچگی ساختار پایگاه داده با برخی از گزینه های بازیابی ارائه شده است.

از نظر فناوری، libmdbx ACID، سریال‌سازی تغییرات دقیق و خواندن‌های غیر مسدود را با مقیاس‌گذاری خطی در هسته‌های CPU ارائه می‌دهد. فشرده سازی خودکار، مدیریت اندازه پایگاه داده خودکار، و تخمین پرس و جوی محدوده پشتیبانی می شود. از سال 2016، این پروژه توسط Positive Technologies تامین مالی شده و از سال 2017 در محصولات خود استفاده شده است.

libmdbx یک API توسعه یافته C++ و همچنین اتصالات پشتیبانی شده توسط علاقه مندان به Rust، Haskell، Python، NodeJS، Ruby، Go، Nim، Deno، Scala ارائه می دهد.

منبع: opennet.ru

اضافه کردن نظر