عن المشروع
FrankenSQLite إعادة تنفيذ مستقلة لـ SQLite من الصفر مكتوبة بلغة Rust، وتهدف إلى معالجة اختناق الكاتب المنفرد في SQLite ومخاوف المتانة. تقدم التحكم متعدد الإصدارات في التزامن (MVCC) على مستوى الصفحات للسماح بالكتّاب المتزامنين، مستبدلةً قفل مستوى الملف التقليدي. صُمم المحرك بنواة Rust آمنة، مع حصر كود `unsafe` في VFS وطبقة مواءمة C ABI الاختيارية.
الميزات الرئيسية:
- الكتّاب المتزامنون: MVCC على مستوى الصفحات مع عزل اللقطة القابل للتسلسل (SSI) افتراضيًا، مما يسمح للكتّاب الذين يلمسون صفحات مختلفة بالتداخل. تُجهض التعارضات على الصفحة نفسها حاليًا وتُعاد المحاولة مع `SQLITE_BUSY_SNAPSHOT`؛ وسلم دمج الكتابة الآمن خامل حاليًا.
- توافق تنسيق الملفات: يقرأ ويكتب قواعد بيانات SQLite 3.x القياسية، ويدعم ترميزات النصوص UTF-8 وUTF-16. التحقق من التكافؤ هو الأعمق في حالة UTF-8.
- محرك Rust آمن: نواة المحرك، ومدير الصفحات pager، والمحلل اللغوي، وVDBE، والحزم المرتبطة تمنع كود `unsafe`، مع استثناءات فقط في `fsqlite-vfs` (mmap/shm) و`fsqlite-c-api` (FFI).
- بنية متعددة الطبقات: مساحة عمل Cargo مكونة من 28 عضوًا تضم حزمًا للأنواع، والأخطاء، وVFS، وpager، وWAL، وMVCC، وB-tree، والمحلل اللغوي، والمخطط planner، وVDBE، والدوال، والامتدادات (FTS5، JSON1، R-tree، ICU، وغيرها).
- أبحاث المتانة: يتضمن لبنات بناء RaptorQ/ECS لتخزين محتمل ذاتي الإصلاح، لكن هذا يظل تصميمًا وتنفيذًا جزئيًا، وليس مفعّلًا بعد في وضع التوافق.
- قابلية مراقبة المعاملات: واجهات PRAGMA لإحصائيات المعاملات، والمعاملات النشطة، وتحذيرات المستشار، والخطوط الزمنية JSON.
الحالة الحالية: وقت التشغيل هجين، ويُعد وضع التوافق عبر ملفات SQLite القياسية هو المسار النشط. الوضع الأصلي وأقسام ECS عبارة عن تصميم وتنفيذ جزئي. واجهة CLI عبارة عن صدفة صغيرة، وليست واجهة أمامية كاملة لـ sqlite3. الامتدادات مثل FTS3/FTS4 موجودة على مستوى المساعد فقط؛ و`dbstat` و`carray` و`dbpage` غير منفذة. حزمة planner موجودة لكنها ليست المسار الساخن الأساسي لجميع الاستعلامات.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.