اعلی کارکردگی ایمبیڈڈ DBMS libmdbx 0.10.4 اور libfpta 0.3.9 کی ریلیز

libmdbx 0.10.4 (MDBX) لائبریری کو ایک اعلی کارکردگی والے کمپیکٹ ایمبیڈڈ کلیدی ویلیو ڈیٹا بیس کے نفاذ کے ساتھ جاری کیا گیا تھا، اور متعلقہ libfpta 0.3.9 (FPTA) لائبریری، جو ثانوی اور جامع اشاریہ جات کے ساتھ ڈیٹا کی ٹیبلر نمائندگی کو نافذ کرتی ہے۔ MDBX کے اوپر۔ دونوں لائبریریاں OSI منظور شدہ لائسنس کے تحت تقسیم کی جاتی ہیں۔ تمام موجودہ آپریٹنگ سسٹمز اور فن تعمیرات کے ساتھ ساتھ روسی ایلبرس 2000 کی حمایت کی جاتی ہے۔

تاریخی طور پر، libmdbx LMDB DBMS کا ایک گہرا کام ہے اور قابل اعتماد، فیچر سیٹ اور کارکردگی میں اپنے آباؤ اجداد سے برتر ہے۔ LMDB کے مقابلے، libmdbx کوڈ کے معیار، API استحکام، جانچ، اور خودکار جانچ پر بہت زیادہ زور دیتا ہے۔ کچھ وصولی کی صلاحیتوں کے ساتھ ڈیٹا بیس کے ڈھانچے کی سالمیت کو جانچنے کے لیے ایک افادیت فراہم کی جاتی ہے۔

ٹیکنالوجی کے لحاظ سے، libmdbx ACID، مضبوط تبدیلی سیریلائزیشن، اور سی پی یو کور میں لکیری اسکیلنگ کے ساتھ نان بلاکنگ ریڈز پیش کرتا ہے۔ آٹو کمپیکٹیفیکیشن، خودکار ڈیٹا بیس سائز مینجمنٹ، اور رینج کے استفسار کا تخمینہ تعاون یافتہ ہے۔ 2016 سے، پراجیکٹس کو مثبت ٹیکنالوجیز کی طرف سے فنڈ کیا گیا ہے اور 2017 سے اس کی مصنوعات میں استعمال کیا جا رہا ہے۔

libmdbx ایک C++ API پیش کرتا ہے، نیز رسٹ، ہاسکل، ازگر، نوڈ جے ایس، روبی، گو، اور نِم کے لیے پرجوش تعاون یافتہ لینگویج بائنڈنگز۔ libfpta کے لیے، صرف API کی تفصیل C/C++ ہیڈر فائل کی شکل میں عوامی طور پر دستیاب ہے۔

9 مئی کو پچھلی خبروں کے بعد سے اہم اختراعات، بہتری اور اصلاحات شامل کی گئیں:

  • دوبارہ پیدا کرنے کے قابل بناتا ہے۔
  • ایک بگ کو ٹھیک کیا جس کی وجہ سے، بہت ہی غیر معمولی حالات میں، لین دین کے عہد کے دوران ایک لوپ/فریز ہو سکتا ہے۔ اس مسئلے کی نشاندہی مثبت ٹیکنالوجیز کے ماہرین نے اپنی مصنوعات کی اندرونی جانچ کے دوران کی۔
  • ٹیسٹوں کو بہتر بنایا گیا ہے اور ڈیٹا بیس کے اندر صفحہ ٹری اور GC کے مواد کی تمام قابل رسائی غیر آئسومورفک حالتوں کو چیک کرنے کے لیے ٹیسٹ کے منظرناموں کو بڑھا دیا گیا ہے۔
  • C++ API میں، ایک اضافی "noexcept" کو طے کیا گیا ہے، "cursor::erase()" طریقہ کے لیے اضافی اوورلوڈز شامل کیے گئے ہیں، بفرز کے نفاذ کو سیدھ کو یقینی بنانے کے لیے "std::string" کے استعمال سے بچایا گیا ہے۔ (CLANG libstdc++ کے لیے متعلقہ)۔
  • گندے صفحے کے پھیلنے والے الگورتھم میں ایک رجعت (تبدیل شدہ ڈیٹا بیس کے صفحات کا انتخابی اخراج) جو کہ بڑی ٹرانزیکشنز میں ڈیٹا کو تبدیل کرتے وقت ایک غیر متوقع غلطی MDBX_PROBLEM سے ظاہر ہوا تھا، ختم کر دیا گیا ہے۔
  • ڈیٹا بیس کو جان بوجھ کر نقصان پہنچنے کی صورت میں استحکام کو یقینی بنانے کے لیے متعدد چیکوں کے اضافے کے ساتھ ایک مرحلہ وار ٹیسٹ کیا گیا۔
  • فکسڈ معمولی انتباہات Undefined Behavior Sanitizer اور Coverity Scan کے مسائل۔
  • لائبریری کے پرانے ورژنز کے ذریعے تخلیق کردہ ڈیٹابیس امیجز کے اندر نیسٹڈ پیجز میں پرانے اور اب استعمال نہ ہونے والے اندرونی جھنڈے "P_DIRTY" کی جانچ کرنا درست ہے۔
  • CMake اسکرپٹس میں، LTO (لنک ٹائم آپٹیمائزیشن) کے لیے درکار کمپائلر اجزاء کی تلاش کو بہتر بنایا گیا ہے۔
  • بیک وقت پڑھنے والوں کی زیادہ سے زیادہ تعداد 32767 کردی گئی ہے۔
  • Valgrind اور Address Sanitizer استعمال کرتے وقت بہتر کارکردگی۔
  • ونڈوز پر، MDBX_NOTLS موڈ میں کام کرتے وقت SRW-lock کا بار بار استعمال کرنا (تھریڈ لوکل سٹوریج کے استعمال کے بغیر) کو ختم کر دیا گیا ہے، اگر سسٹم کا وقت بدل گیا ہے تو بوٹائڈ جنریشن کو ٹھیک کر دیا گیا ہے، WSL1 اور WSL2 کا پتہ لگانے کی صلاحیت کو بہتر بنایا گیا ہے، اور DrvFS کے ذریعے نصب پلان 9 پر ایک ڈیٹا بیس کھولنا شامل کیا گیا ہے۔
  • مجموعی طور پر، 160 فائلوں میں 57 سے زیادہ تبدیلیاں کی گئیں، ~ 5000 لائنیں شامل کی گئیں، ~ 2500 کو حذف کر دیا گیا۔

میں خاص طور پر Erigon پروجیکٹ ٹیم (Ethereum ecosystem) کا انتہائی استعمال کے حالات میں جانچ میں مدد کے لیے شکریہ ادا کرنا چاہوں گا۔ یہ بات اہم ہے کہ libmdbx v0.10.0 کی ریلیز کے بعد سے پانچ مہینوں میں، ہر Erigon انسٹالیشن میں 1-2 TB کے ڈیٹا بیس والیوم کے ساتھ (7٪ Ethereum نوڈس پر استعمال کیا جاتا ہے)، ڈیٹا بیس میں بدعنوانی کی صرف تین رپورٹیں موصول ہوئیں، سبھی جن میں سے بیرونی وجوہات کی وجہ سے ہوا، نہ کہ سافٹ ویئر کی خرابیوں کی وجہ سے: دو صورتوں میں وجہ RAM کی ناکامی تھی، تیسرے میں BTRFS کا استعمال کرتے ہوئے سٹوریج سب سسٹم کی مخصوص کنفیگریشن میں ڈیٹا کو دوبارہ ترتیب دینے میں غلطی۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں