عن المشروع

sled هي قاعدة بيانات مدمجة مكتوبة بلغة Rust، ويصفها مؤلفها بأنها برنامج تجريبي (beta). واجهة برمجتها تشبه BTreeMap<[u8], [u8]> الآمنة للخيوط، لذا فإن العمليات الأساسية مثل الإدراج والحصول والنطاق والحذف وقارن-وتبديل تبدو مألوفة لمطوري Rust. تشمل القدرات الرئيسية المذكورة في README معاملات ACID القابلة للتسلسل للقراءة والكتابة الذرية لمفاتيح متعددة عبر مساحات مفاتيح متعددة، وعمليات ذرية بالكامل لمفتاح واحد، وقراءات بدون نسخ، ودفعات كتابة، واشتراكات للتغييرات على بادئات المفاتيح، ومساحات مفاتيح متعددة، وعوامل دمج، ومكررات نطاق أمامية وعكسية، ومولّد معرفات رتيب آمن ضد الانهيار. يتوفر ضغط zstd اختياري خلف ميزة بناء معطلة افتراضيًا. يوصف التنفيذ بأنه شجرة خالية من الأقفال فوق مخزن صفحات (pagecache) خالٍ من الأقفال فوق سجل خالٍ من الأقفال، مع تصميم تخزين منظم بالسجلات محسّن للذاكرة الومضية. يستخدم تقنيات شجرة B مثل ترميز البادئات واقتطاع اللواحق لتقليل تكاليف التخزين للمفاتيح الطويلة ذات البادئات المشتركة. يدعي README أداء كتابة مشابهًا لأشجار LSM مع أداء قراءة مشابهًا لأشجار B+ التقليدية، ويشير إلى أن المتانة الافتراضية هي fsync كل 500 مللي ثانية، ويمكن ضبطها عبر flush_every_ms أو استدعاءات flush/flush_async اليدوية. ملاحظات هامة: المعاملات تفاؤلية، لذا يجب أن تتجنب دوال المعاملات الحالة الخارجية أو الإدخال/الإخراج إلا إذا كانت عملياتها عديمة الأثر (idempotent)؛ لا يدعم sled فتح نسخ متعددة من قاعدة البيانات، لذا يجب أن تبقى مفتوحة طوال عمر العملية؛ يجب تخزين المفاتيح الرقمية بترتيب البايت الكبير (big-endian) لضمان ترتيب معجمي صحيح؛ ومن المتوقع أن يتغير التنسيق على القرص قبل الإصدار 1.0.0، مما يتطلب ترحيلًا يدويًا. ينص README أيضًا على أن SQLite هو الخيار الأفضل عندما تكون الموثوقية هي القيد الأساسي، وRocksDB عندما تكون كفاءة سعر التخزين مهمة، وLMDB لأحمال العمل متعددة العمليات التي نادرًا ما تكتب. الحد الأدنى المدعوم لإصدار Rust هو 1.62.