প্রকল্প সম্পর্কে

RetractorDB হলো একটি এজ সিগন্যাল প্রসেসিং ইঞ্জিন, যা রিয়েল-টাইমে নিয়মিত টাইম সিরিজ ডেটা প্রসেস ও রেকর্ড করার জন্য ব্যবহৃত হয়। এটি ধারাবাহিক ডেটা স্ট্রিম, সিগন্যাল প্রসেসিং, টেলিমেট্রি এবং IoT মনিটরিংকে লক্ষ্য করে তৈরি, এবং এর লেখক এটিকে কাজ চলমান (work in progress) হিসেবে বর্ণনা করেছেন। সিস্টেমটি C++ এ লেখা এবং Linux-এ x64 ও ARM64-এ পরীক্ষিত, macOS পোর্ট শুধুমাত্র Apple silicon-এ পরীক্ষা করা হয়েছে। 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 ব্যবহার করা হয়; Linux-এ C++23 ফিচারের জন্য GCC 14+ প্রয়োজন, এবং macOS-এ 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 দ্বারা রক্ষণাবেক্ষণ করা হয়। ডকুমেন্টেশন প্রকল্পের ওয়েবসাইটে উপলব্ধ, সাথে পোলিশ ভাষায় বিস্তৃত ডকুমেন্টেশন রয়েছে।