پانچ سال کی ترقی کے بعد، دوسرا libmdbx 1.0 ریلیز امیدوار شائع کیا گیا ہے۔

دستیاب لائبریری ریلیز کے لیے دوسرے امیدوار کی جانچ کے لیے libmdbx ایک اعلی کارکردگی، کمپیکٹ ایمبیڈڈ کلیدی ویلیو ڈیٹا بیس کے نفاذ کے ساتھ۔ موجودہ ورژن (0.5) ایک تکنیکی ریلیز ہے، جو کسی بھی بہتری کی تکمیل اور عوامی حتمی جانچ اور استحکام کے مرحلے میں منتقلی کی نشاندہی کرتا ہے، جس کے بعد لائبریری کی پہلی مکمل ریلیز کی تشکیل ہوتی ہے۔ libmdbx کوڈ نے بانٹا OpenLDAP پبلک لائسنس کے تحت لائسنس یافتہ۔

MDBX لائبریری نمایاں طور پر نظر ثانی شدہ فورک ہے۔ ایل ایم ڈی بی - کی بنیاد پر "کلیدی قدر" کلاس کا لین دین ایمبیڈڈ DBMS درخت B+ بغیر فعال لاگنگ، جو ملٹی تھریڈڈ پروسیسز کو مقامی طور پر مشترکہ (نیٹ ورک نہیں) ڈیٹا بیس کے ساتھ مسابقتی اور مؤثر طریقے سے کام کرنے کی اجازت دیتا ہے۔ بدلے میں، MDBX LMDB سے تیز اور زیادہ قابل اعتماد ہے، اور ایک ہی وقت میں اپنے آباؤ اجداد کی تمام اہم خصوصیات کو برقرار رکھتا ہے، جیسے ایسڈ اور سی پی یو کور میں لکیری اسکیلنگ کے ساتھ نان بلاکنگ ریڈز۔

MDBX اور LMDB کے درمیان سب سے اہم فرق:

  • بنیادی طور پر، کوڈ کے معیار، جانچ اور خودکار جانچ پر زیادہ توجہ دی جاتی ہے۔
  • آپریشن کے دوران نمایاں طور پر زیادہ کنٹرول، پیرامیٹرز کی جانچ سے لے کر ڈیٹا بیس ڈھانچے کے اندرونی آڈٹ تک۔
  • آٹو کمپیکٹیفیکیشن اور خودکار ڈیٹا بیس سائز کا انتظام۔
  • 32 بٹ اور 64 بٹ اسمبلیوں کے لیے ایک واحد ڈیٹا بیس فارمیٹ۔
  • رینجز کے لحاظ سے نمونے کے حجم کا تخمینہ (حد کے استفسار کا تخمینہ)۔
  • پینکیکس سے دوگنا بڑی چابیاں اور صارف کے لیے قابل انتخاب ڈیٹا بیس صفحہ کے سائز کے لیے سپورٹ۔

libmdbx ریلیز امیدوار اگست 2019 میں MDBX اور MithrilDB پروجیکٹس کو الگ کرنے کے فیصلے کا نتیجہ ہے۔ اسی وقت، libmdbx نے (عقلی) زیادہ سے زیادہ تکنیکی قرض کو ختم کرنے اور لائبریری کو مستحکم کرنے کا فیصلہ کیا۔ درحقیقت، ابتدائی اندازے اور منصوبہ بندی کے مقابلے میں مقررہ سمت میں 2-3 گنا زیادہ کام کیا گیا ہے:

  • macOS اور دوسرے درجے کے پلیٹ فارمز کے لیے سپورٹ کو لاگو کیا گیا ہے: FreeBSD، Solaris، DragonFly BSD، OpenBSD، NetBSD۔ ضرورت کے مطابق AIX اور HP-UX سپورٹ شامل کی جا سکتی ہے۔
  • کوڈ کو Undefined Behavior Sanitizer اور Address Sanitizer کا استعمال کرتے ہوئے صاف کیا گیا تھا، "-Wpedantic" کے ساتھ تعمیر کرتے وقت تمام انتباہات، تمام Coverity Static Analyzer وارننگز وغیرہ کو ختم کر دیا گیا تھا۔
  • اپ ڈیٹ API کی تفصیل.
  • ایمبیڈنگ میں آسانی کے لیے سورس کوڈ کا انضمام (انضمام)۔
  • CMake سپورٹ۔
  • نیسٹڈ ٹرانزیکشنز کے لیے سپورٹ۔
  • بوٹائڈ کا استعمال اس بات کا تعین کرنے کے لیے کہ آیا OS ریبوٹ ہو گیا ہے (ڈرٹی ڈیٹا بیس سٹاپ)۔
  • تازہ ترین/پرانے صفحات اور توسیعی لین دین کی معلومات کی آخر سے آخر تک گنتی۔
  • مطابقت پذیر موڈ میں پہلے سے کھلے ڈیٹا بیس سے منسلک ہونے کے لیے آپشن MDBX_ACCEDE۔
  • استعمال کریں OFD بلاک کرنا جب دستیاب ہو.
  • پائپ میں گرم بیک اپ۔
  • خصوصی آپٹمائزڈ اندرونی چھانٹی الگورتھم ("qsort()" سے 2-3 گنا تیز اور "std::sort()" سے 30% تک تیز)۔
  • کلید کی زیادہ سے زیادہ لمبائی بڑھا دی گئی ہے۔
  • آگے پڑھنے کا خودکار کنٹرول (میموری میں ڈیٹا بیس فائل کیشنگ کی حکمت عملی)۔
  • زیادہ جارحانہ اور تیز آٹو کمپیکٹیفیکیشن۔
  • B+ درخت کے صفحات کو ضم کرنے کے لیے ایک زیادہ بہترین حکمت عملی۔
  • غلط طریقے سے استعمال ہونے پر ڈیٹا بیس کو پہنچنے والے نقصان کو روکنے کے لیے غیر مقامی فائل سسٹم (NFS، Samba، وغیرہ) کا کنٹرول۔
  • ٹیسٹوں کے سیٹ کو بڑھا دیا گیا ہے۔

libmdbx کے "اگلے" ورژن کی ترقی ایک الگ پروجیکٹ کے طور پر جاری رہے گی۔ MithrilDB، جبکہ MDBX کے "موجودہ" ورژن کے ترقیاتی ویکٹر کا مقصد فیچر سیٹ کو منجمد کرنا اور اسے مستحکم کرنا ہے۔ یہ فیصلہ تین وجوہات کی بنا پر کیا گیا:

  • مکمل طور پر غیر موافق: MithrilDB کو تمام منصوبہ بند خصوصیات کو نافذ کرنے کے لیے ایک مختلف (غیر مطابقت پذیر) ڈیٹا بیس فائل فارمیٹ اور ایک مختلف (غیر مطابقت پذیر) API کی ضرورت ہوتی ہے۔
  • نیا سورس کوڈ: MithrilDB سورس کوڈ کو LMDB سے آزاد لائسنس یافتہ بنا دیا گیا ہے، اور اس پروجیکٹ کو خود ایک مختلف لائسنس کے تحت شائع کرنے کا منصوبہ ہے (منظور شدہ او ایس آئی اپاچی 2.0 لائسنس، نہیں۔ اوپن ایل ڈی اے پی پبلک لائسنس).
  • علیحدگی ممکنہ الجھنوں سے بچتی ہے، زیادہ یقین کا تعارف کراتی ہے اور منصوبوں کے لیے ایک آزاد راستہ کو یقینی بناتی ہے۔

MithrilDB، MDBX کی طرح، بھی پر مبنی ہے درخت B+ اور MDBX اور LMDB کے بہت سے بنیادی نقصانات کو ختم کرتے ہوئے انتہائی اعلیٰ کارکردگی بھی پیش کرے گا۔ خاص طور پر، "لانگ ریڈز" کا مسئلہ، جو ڈیٹا بیس کی "سوجن" کے طور پر ظاہر ہوتا ہے اس حقیقت کی وجہ سے کہ کوڑے کی پروسیسنگ طویل پڑھنے کے لین دین سے مسدود ہوتی ہے، کو ختم کر دیا جائے گا۔ MithrilDB کی نئی خصوصیات میں شامل ہیں:

  • ڈیٹا بیس کو متعدد متفاوت میڈیا پر رکھنے کے لیے معاونت: HDD، SSD اور غیر مستحکم میموری۔
  • "گرم"، "گرم" اور "سرد" ڈیٹا کے لیے "قیمتی" اور "کم قدر" کے لیے بہترین حکمت عملی۔
  • ڈیٹا بیس کی سالمیت کی نگرانی کے لیے مرکل ٹری کا استعمال۔
  • WAL کا اختیاری استعمال اور ڈیٹا کی سالمیت کی ضمانتوں کے ساتھ تحریری منظرناموں میں نمایاں طور پر بہتر کارکردگی۔
  • ڈسکوں پر ڈیٹا کو سست پکڑنا۔

ماخذ: opennet.ru

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