عن المشروع

RetractorDB هو محرك معالجة إشارات طرفي لمعالجة وتسجيل بيانات السلاسل الزمنية المنتظمة في الوقت الفعلي. يستهدف تدفقات البيانات المستمرة ومعالجة الإشارات والقياس عن بعد ومراقبة إنترنت الأشياء، ويصفه مؤلفه بأنه عمل قيد التطوير. النظام مكتوب بلغة C++ ومُختبر على x64 وARM64 تحت Linux، مع نسخة macOS مُختبرة فقط على شرائح Apple. تشمل خصائص التصميم المذكورة في README التشغيل في الوقت الفعلي، وخيط معالجة تسلسلي حتمي، واستعلامات مستمرة تُنفَّذ من لحظة الإعلان حتى إنهاء النظام، وذاكرة مشتركة للتواصل بين العمليات، وجبر مخصص للسلاسل الزمنية المنتظمة. يتكون المشروع من ثلاثة برامج متعاونة: - xretractor - المحرك. يترجم مجموعات استعلامات .rql وينفذ خطط الاستعلامات المستمرة، ويمكن تشغيله كخدمة systemd مع جدولة في الوقت الفعلي. - xqry - العميل. يقرأ النتائج من المحرك قيد التشغيل عبر الذاكرة المشتركة ويوفر عدة أنماط إخراج (بما في ذلك Graphite وInfluxDB وgnuplot) بالإضافة إلى نمط استعلام مخصص. - xtrdb - أداة فحص لقراءة مخلفات التخزين الثنائية والبيانات الوصفية. يُتاح التثبيت بطريقتين. تُنشر حزم جاهزة على GitHub Releases: حزمة .deb لنظام Debian/Ubuntu لمعمارية x86-64 تثبّت الملفات التنفيذية في /usr/bin وتهيئ خدمة systemd، بالإضافة إلى أرشيفات tar.gz محمولة لمعماريتي x86-64 وAArch64. يقوم مثبّت الموقع بالتحقق من ملخص SHA-256 للأصل المختار ويثبّت في ~/.local أو /usr/local، مع إعداد خدمة اختياري. يستخدم البناء من المصدر Conan 2 وCMake وNinja؛ على Linux يتطلب GCC 14+ لميزات C++23، وعلى macOS يتطلب أدوات سطر أوامر Xcode 16.3+ مع هدف نشر macOS 14.4 أو أحدث. تقوم سكربتات مساعدة (scripts/buildrdb.sh، scripts/macos-build.sh) بتهيئة سلسلة الأدوات وتدير خطوات التكوين والبناء والتثبيت والاختبار. تنتج أهداف التغليف المحلية حزم .deb وأرشيفات محمولة، بما في ذلك بناء ARM64 عبر محاكاة Docker. التكوين اختياري بصيغة TOML يُحمَّل على طبقات: ملف نظام تحت /etc/retractor، أو ملف مستخدم تحت دليل تكوين XDG، أو ملف صريح يُمرَّر عبر --config، والذي يصبح عندئذ الملف الوحيد المحمَّل. يذكر README أن غياب ملف التكوين حالة صالحة. يتحكم موقع التخزين بشكل أساسي عبر توجيه :STORAGE داخل ملف RQL، مع كون مفتاح التكوين storage.dir مجرد قيمة افتراضية. يُعرض استعلام أول باستخدام ملف .rql يعلن تدفقات إدخال تُقرأ من /dev/urandom، يُترجم باستخدام xretractor -c للتحقق ثم يُشغَّل بشكل مستمر. يسرد عميل xqry التدفقات النشطة ويطبع نتائج تدفق مسمّى؛ ويمكن أيضًا إيقاف المحرك عبر xqry --kill. يمكن تسليم مجموعات الاستعلامات إلى خدمة قيد التشغيل بالفعل عن طريق تشغيل xretractor مع ملف .rql، الذي يتحقق من الاستعلامات ويستبدل ملف استعلامات الخدمة ويعيد تشغيل الوحدة. تكشف عدة خيارات CMake عن تحسينات مستقلة لخطة الاستعلام (إزالة تكرار الركائز المتطابقة، ومشاركة حسابات SELECT المتكافئة، ومعالجة الجمع التبادلي، وتحليل خطط نقل الوقت بالتجزئة المتطابقة). جميعها مفعّلة افتراضيًا، ويوثّق README كيفية تكوين متغيرات الاستئصال في أدلة بناء منفصلة. يوجد خيار مسبار قياس منفصل ويُفرض إيقافه في إصدارات الإنتاج وبناء التغليف. توجد المواد البحثية في مستودع مستقل، rdb-experiment، يحتوي على حملات أداء على أجهزة حقيقية وتجارب تحقق دلالي مقابل أوراكل مستقلة. وهو غير مطلوب للبناء أو الاختبارات أو التغليف أو CI، ويُحفظ منفصلًا لأن البيانات التجريبية تنمو بشكل مطرد ويجب أن تبقى قابلة لإعادة الإنتاج. المشروع مرخّص بموجب MIT ويصونه Michal Widera. التوثيق متاح على موقع المشروع، مع توثيق شامل باللغة البولندية.