منصوبے کے بارے میں

RetractorDB ایک ایج سگنل پروسیسنگ انجن ہے جو ریگولر ٹائم سیریز ڈیٹا کو ریئل ٹائم میں پروسیس اور ریکارڈ کرتا ہے۔ یہ مسلسل ڈیٹا اسٹریمز، سگنل پروسیسنگ، ٹیلی میٹری اور IoT مانیٹرنگ کے لیے ہے، اور اس کے مصنف اسے زیرِ تکمیل کام قرار دیتے ہیں۔ یہ سسٹم C++ میں لکھا گیا ہے اور لینکس کے تحت x64 اور ARM64 پر ٹیسٹ کیا گیا ہے، جبکہ میک او ایس پورٹ صرف ایپل سلیکون پر ٹیسٹ کیا گیا ہے۔ README میں بیان کردہ ڈیزائن خصوصیات میں ریئل ٹائم آپریشن، ایک ترتیبی ڈیٹرمنسٹک پروسیسنگ تھریڈ، مسلسل کوئریز جو اعلان سے لے کر سسٹم کی بندش تک چلتی ہیں، بین العمل کمیونیکیشن کے لیے مشترکہ میموری، اور ریگولر ٹائم سیریز کے لیے ایک حسبِ ضرورت الجبرا شامل ہیں۔ یہ پروجیکٹ تین باہم تعاون کرنے والے پروگراموں پر مشتمل ہے: - xretractor - انجن۔ یہ .rql کوئری سیٹس کو کمپائل کرتا ہے اور مسلسل کوئری پلانز کو چلاتا ہے، اختیاری طور پر ریئل ٹائم شیڈولنگ کے ساتھ بطور systemd سروس۔ - xqry - کلائنٹ۔ یہ مشترکہ میموری کے ذریعے چل رہے انجن سے نتائج پڑھتا ہے اور کئی آؤٹ پٹ موڈز (بشمول Graphite، InfluxDB اور gnuplot) کے ساتھ ساتھ ایک ایڈہاک کوئری موڈ بھی پیش کرتا ہے۔ - xtrdb - بائنری اسٹوریج آرٹیفیکٹس اور میٹاڈیٹا پڑھنے کے لیے ایک معائنہ ٹول۔ تنصیب دو طریقوں سے پیش کی جاتی ہے۔ پہلے سے بنائے گئے پیکجز GitHub Releases پر شائع کیے جاتے ہیں: x86-64 کے لیے ایک Debian/Ubuntu .deb جو بائنریز کو /usr/bin میں انسٹال کرتا ہے اور ایک systemd سروس ترتیب دیتا ہے، نیز x86-64 اور AArch64 کے لیے پورٹیبل tar.gz آرکائیوز۔ ایک ویب سائٹ انسٹالر منتخب کردہ اثاثے کا SHA-256 ڈائجسٹ تصدیق کرتا ہے اور ~/.local یا /usr/local میں انسٹال کرتا ہے، اختیاری سروس سیٹ اپ کے ساتھ۔ سورس سے بلڈ کرنے میں Conan 2، CMake اور Ninja استعمال ہوتے ہیں؛ لینکس پر C++23 خصوصیات کے لیے GCC 14+ درکار ہے، اور میک او ایس پر Xcode 16.3+ کمانڈ لائن ٹولز کے ساتھ macOS 14.4 یا اس سے جدید تر ڈیپلائمنٹ ٹارگٹ درکار ہے۔ مددگار اسکرپٹس (scripts/buildrdb.sh، scripts/macos-build.sh) ٹول چین بوٹ اسٹریپ کرتے ہیں اور کنفیگر، بلڈ، انسٹال اور ٹیسٹ مراحل چلاتے ہیں۔ مقامی پیکیجنگ ٹارگٹس .deb اور پورٹیبل آرکائیوز بناتے ہیں، بشمول Docker ایمولیشن کے ذریعے ARM64 بلڈ۔ کنفیگریشن اختیاری TOML ہے جو تہوں میں لوڈ ہوتی ہے: /etc/retractor کے تحت ایک سسٹم فائل، XDG کنفگ ڈائریکٹری کے تحت ایک صارف فائل، یا --config کے ساتھ دی گئی ایک واضح فائل، جو پھر لوڈ ہونے والی واحد فائل بن جاتی ہے۔ README نوٹ کرتا ہے کہ کنفیگریشن فائل کا موجود نہ ہونا ایک درست حالت ہے۔ اسٹوریج کی جگہ بنیادی طور پر RQL فائل کے اندر :STORAGE ڈائریکٹو سے کنٹرول ہوتی ہے، جبکہ storage.dir کنفگ کلید صرف بطور ڈیفالٹ کام کرتی ہے۔ پہلی کوئری ایک .rql فائل کے ساتھ دکھائی گئی ہے جو /dev/urandom سے پڑھی جانے والی ان پٹ اسٹریمز کا اعلان کرتی ہے، جسے توثیق کے لیے xretractor -c سے کمپائل کیا جاتا ہے اور پھر مسلسل چلایا جاتا ہے۔ xqry کلائنٹ فعال اسٹریمز کی فہرست دیتا ہے اور کسی نامزد اسٹریم کے نتائج پرنٹ کرتا ہے؛ انجن کو xqry --kill کے ذریعے بھی روکا جا سکتا ہے۔ کوئری سیٹس پہلے سے چل رہی سروس کو .rql فائل کے ساتھ xretractor شروع کر کے پہنچائے جا سکتے ہیں، جو کوئریز کی توثیق کرتا ہے، سروس کی کوئری فائل کو بدلتا ہے اور یونٹ کو دوبارہ شروع کرتا ہے۔ کئی CMake آپشنز آزاد کوئری پلان آپٹیمائزیشنز کو ظاہر کرتے ہیں (یکساں سبسٹریٹس کی ڈیڈپلیکیشن، مساوی SELECT کمپیوٹیشنز کی شیئرنگ، کمیوٹیٹو ایڈیشن ہینڈلنگ، اور مماثل ہیش ٹائم موو پلانز کی فیکٹرنگ)۔ تمام بطور ڈیفالٹ ON ہیں، اور README دستاویز کرتا ہے کہ الگ بلڈ ڈائریکٹریز میں ایبلیشن ویریئنٹس کیسے کنفیگر کیے جائیں۔ ایک الگ میژرمنٹ پروب آپشن موجود ہے اور پروڈکشن ریلیز اور پیکیجنگ بلڈز میں اسے زبردستی بند کر دیا جاتا ہے۔ تحقیقی مواد ایک آزاد ریپوزٹری، rdb-experiment میں موجود ہے، جس میں حقیقی ہارڈویئر پر پرفارمنس مہمات اور آزاد اوریکلز کے خلاف سیمنٹک توثیقی تجربات شامل ہیں۔ یہ بلڈ، ٹیسٹس، پیکیجنگ یا CI کے لیے درکار نہیں ہے، اور اسے الگ رکھا گیا ہے کیونکہ تجرباتی ڈیٹا یک طرفہ طور پر بڑھتا ہے اور اسے دوبارہ قابلِ تولید رہنا چاہیے۔ یہ پروجیکٹ MIT لائسنس یافتہ ہے اور اسے Michal Widera برقرار رکھتے ہیں۔ دستاویزات پروجیکٹ کی ویب سائٹ پر دستیاب ہیں، جس میں پولش زبان میں جامع دستاویزات بھی شامل ہیں۔