منصوبے کے بارے میں
sled Rust میں لکھا ہوا ایک ایمبیڈڈ ڈیٹا بیس ہے، جسے اس کے مصنف نے بیٹا سافٹ ویئر قرار دیا ہے۔ اس کی API ایک تھریڈ سیف BTreeMap<[u8], [u8]> سے ملتی جلتی ہے، اس لیے بنیادی insert، get، range، remove اور compare-and-swap آپریشنز Rust ڈویلپرز کو واقف محسوس ہوتے ہیں۔
README میں درج اہم صلاحیتوں میں متعدد کی اسپیسز میں متعدد کلیدوں کو ایٹمی طور پر پڑھنے اور لکھنے کے لیے serializable ACID ٹرانزیکشنز، مکمل طور پر ایٹمک سنگل کلید آپریشنز، زیرو کاپی ریڈز، رائٹ بیچز، کلید پریفکسز پر تبدیلیوں کی سبسکرپشنز، متعدد کی اسپیسز، مرج آپریٹرز، آگے اور پیچھے کی رینج iterators، اور ایک کریش سیف monotonic ID جنریٹر شامل ہیں۔ اختیاری zstd کمپریشن ایک بلڈ فیچر کے پیچھے دستیاب ہے جو بطور ڈیفالٹ غیر فعال ہے۔
اس کا نفاذ ایک لاک فری ٹری کے طور پر بیان کیا گیا ہے جو لاک فری پیج کیش پر مبنی ہے اور لاک فری لاگ پر، فلیش آپٹیمائزڈ لاگ ساختہ اسٹوریج ڈیزائن کے ساتھ۔ یہ b-tree تکنیکوں جیسے پریفکس انکوڈنگ اور سفیکس ٹرنکیشن استعمال کرتا ہے تاکہ مشترکہ پریفکس والی لمبی کلیدوں کے اسٹوریج اخراجات کو کم کیا جا سکے۔ README کا دعوی ہے کہ LSM-ٹری جیسی رائٹ کارکردگی اور روایتی B+ ٹری جیسی ریڈ کارکردگی، اور نوٹ کرتا ہے کہ ڈیورابیلیٹی بطور ڈیفالٹ ہر 500ms میں ایک fsync ہوتی ہے، جو flush_every_ms یا دستی flush/flush_async کالز کے ذریعے کنفیگر کی جا سکتی ہے۔
قابل ذکر caveats: ٹرانزیکشنز optimistic ہوتی ہیں، اس لیے ٹرانزیکشن closures کو خارجی حالت یا IO سے گریز کرنا چاہیے جب تک کہ وہ idempotent نہ ہوں؛ sled ایک سے زیادہ کھلے instances کو سپورٹ نہیں کرتا، اس لیے اسے عمل کی زندگی بھر کھلا رہنا چاہیے؛ عددی کلیدوں کو درست lexicographic ترتیب کے لیے big-endian شکل میں محفوظ کیا جانا چاہیے؛ اور ڈسک پر موجود فارمیٹ 1.0.0 سے پہلے تبدیل ہونے کی توقع ہے، جس کے لیے دستی migration درکار ہے۔ README یہ بھی بتاتا ہے کہ SQLite اس وقت بہتر ہے جب بھروسے کی بنیادی حد ہو، RocksDB جب اسٹوریج کی قیمت کارکردگی معنی رکھتی ہو، اور LMDB ان ملٹی پروسیس ورک لوڈز کے لیے جو شاذ و نادر ہی لکھتے ہیں۔ کم از کم معاون Rust ورژن 1.62 ہے۔
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.