عن المشروع

LevelDB هي مكتبة تخزين مفتاح-قيمة مدمجة طوّرت في Google بواسطة Sanjay Ghemawat وJeff Dean. وهي توفر تعيينًا مرتبًا من المفاتيح النصية إلى القيم النصية، ومصممة لتُربط مباشرةً مع التطبيق بدلاً من تشغيلها كخدمة منفصلة. القدرات الرئيسية الموصوفة في ملف README: - المفاتيح والقيم هي مصفوفات بايت عشوائية، ويتم تخزين البيانات مرتبة حسب المفتاح. - يمكن للمستدعين توفير دالة مقارنة مخصصة لتجاوز ترتيب الفرز الافتراضي. - العمليات الأساسية هي Put(key,value) وGet(key) وDelete(key). - يمكن تطبيق تغييرات متعددة في دفعة واحدة ذرية. - يمكن للمستخدمين إنشاء لقطة مؤقتة للحصول على عرض متسق للبيانات. - يُدعم التكرار الأمامي والخلفي عبر البيانات. - يتم ضغط البيانات تلقائيًا باستخدام Snappy، مع دعم Zstd أيضًا. - يتم تمرير النشاط الخارجي مثل عمليات نظام الملفات عبر واجهة افتراضية بحيث يمكن تخصيص تفاعلات نظام التشغيل. القيود المهمة التي يذكرها المشروع: أنها ليست قاعدة بيانات SQL، ولا تحتوي على نموذج علائقي أو استعلامات SQL أو دعم فهارس؛ يمكن لعملية واحدة فقط (ربما متعددة الخيوط) الوصول إلى قاعدة البيانات في كل مرة؛ ولا يوجد دعم مدمج لخادم-عميل، لذا يجب على التطبيقات التي تحتاج ذلك أن تغلّف الخادم الخاص بها حول المكتبة. المستودع قيد صيانة محدودة للغاية. يقول المشرفون إنهم سيراجعون فقط إصلاحات الأخطاء الحرجة مثل فقدان البيانات أو تلف الذاكرة، والتغييرات الضرورية تمامًا لعملاء LevelDB المدعومين داخليًا، عادةً لإصلاح الأعطال الناتجة عن تحديثات اللغة أو المكتبة القياسية أو نظام التشغيل. من المتوقع أن تستهدف المساهمات المنصات المختبرة (POSIX لنظامي Linux وmacOS، أو Windows)، وأن تحافظ على واجهة برمجة تطبيقات مستقرة، وأن تتضمن اختبارات، وأن تتبع دليل أسلوب Google C++؛ ومن غير المرجح قبول تغييرات إعداد البناء. تتطلب طلبات السحب توقيع اتفاقية ترخيص المساهم من Google وتوحيد الالتزامات أو إعادة تأسيسها على الفرع الرئيسي. يستخدم البناء CMake مباشرة. على POSIX، البداية السريعة النموذجية هي إنشاء دليل بناء، وتشغيل cmake بنوع بناء Release، ثم البناء. على Windows، يمكن لـ CMake توليد ملفات مشروع/حل Visual Studio 2017، مع خيار للأهداف 64-بت، ويمكن بناء الحل من سطر الأوامر أو داخل Visual Studio. يتضمن README تقرير أداء من برنامج db_bench المرفق باستخدام قاعدة بيانات تحتوي على مليون إدخال بمفاتيح 16 بايت وقيم 100 بايت. ويقدم معايير الكتابة (fillseq, fillsync, fillrandom, overwrite) ومعايير القراءة (readrandom, readseq, readreverse)، مشيرًا إلى أن النتائج مشوشة وأن الضغط الخلفي يحسن أداء القراءة. توجد الواجهة العامة في include/leveldb/*.h، حيث db.h هو نقطة الدخول الرئيسية، وoptions.h لسلوك قاعدة البيانات وسلوك كل عملية، وcomparator.h للترتيب المخصص، وiterator.h للتكرار، وwrite_batch.h للتحديثات الذرية، وslice.h وstatus.h كأدوات مساعدة، وenv.h لتجريد نظام التشغيل، وtable.h/table_builder.h كوحدات منخفضة المستوى لن يستخدمها معظم العملاء مباشرة. الوثائق مرفقة في شجرة المصدر تحت doc/.