پانچ سال کی ترقی کے بعد libmdbx v1.0 کے لیے دوسرا ریلیز امیدوار۔

لائبریری libmdbx LMDB کا نمایاں طور پر دوبارہ ڈیزائن کیا گیا نسل ہے - ایک انتہائی اعلی کارکردگی، کمپیکٹ ایمبیڈڈ کلیدی ویلیو ڈیٹا بیس۔
موجودہ ورژن v0.5 ایک تکنیکی ریلیز ہے، جو کسی بھی بہتری کی تکمیل اور عوامی حتمی جانچ اور استحکام کے مرحلے میں منتقلی کی نشاندہی کرتا ہے، جس کے بعد لائبریری کی پہلی مکمل ریلیز کی تشکیل ہوتی ہے۔

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

LMDB کی نسبت libmdbx کے فرق اور بہتری کی تفصیل ایک علیحدہ مضمون کا مستحق ہے (Habré اور Medium پر شائع کرنے کا منصوبہ بنایا گیا ہے)۔ یہاں سب سے اہم اور قابل توجہ کا ذکر کرنا مناسب ہے:

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

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

  • Mac OS اور دوسرے درجے کے پلیٹ فارمز کے لیے سپورٹ نافذ کر دی گئی ہے: 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 کا اختیاری استعمال اور تحریری منظرناموں میں نمایاں طور پر اعلی کارکردگی اور ڈیٹا کی سالمیت کی ضمانت دیتا ہے۔
  • ڈسکوں پر ڈیٹا کی سستی کیچ اپ طے کرنا۔

ماخذ: linux.org.ru

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