About this project

RetractorDB is an edge signal processing engine for processing and recording regular time series data in real time. It targets continuous data streams, signal processing, telemetry and IoT monitoring, and is described by its author as work in progress. The system is written in C++ and tested on x64 and ARM64 under Linux, with a macOS port tested only on Apple silicon. Design characteristics stated in the README include real-time operation, a sequential deterministic processing thread, continuous queries that execute from declaration until system termination, shared memory for inter-process communication, and a custom algebra for regular time series. The project consists of three cooperating programs: - xretractor - the engine. It compiles .rql query sets and executes continuous query plans, optionally as a systemd service with real-time scheduling. - xqry - the client. It reads results from the running engine through shared memory and offers several output modes (including Graphite, InfluxDB and gnuplot) plus an ad-hoc query mode. - xtrdb - an inspection tool for reading binary storage artifacts and metadata. Installation is offered two ways. Prebuilt packages are published on GitHub Releases: a Debian/Ubuntu .deb for x86-64 that installs binaries into /usr/bin and wires up a systemd service, plus portable tar.gz archives for x86-64 and AArch64. A website installer verifies the SHA-256 digest of the chosen asset and installs into ~/.local or /usr/local, with optional service setup. Building from source uses Conan 2, CMake and Ninja; on Linux it requires GCC 14+ for C++23 features, and on macOS the Xcode 16.3+ command-line tools with a deployment target of macOS 14.4 or newer. Helper scripts (scripts/buildrdb.sh, scripts/macos-build.sh) bootstrap the toolchain and drive configure, build, install and test steps. Local packaging targets produce .deb and portable archives, including an ARM64 build via Docker emulation. Configuration is optional TOML loaded in layers: a system file under /etc/retractor, a user file under the XDG config directory, or an explicit file passed with --config, which then becomes the only file loaded. The README notes that a missing configuration file is a valid state. Storage location is primarily controlled by the :STORAGE directive inside the RQL file, with the storage.dir config key acting only as a default. A first query is demonstrated with a .rql file declaring input streams read from /dev/urandom, compiled with xretractor -c for validation and then run continuously. The xqry client lists active streams and prints results of a named stream; the engine can also be stopped through xqry --kill. Query sets can be delivered to an already running service by starting xretractor with the .rql file, which validates the queries, replaces the service query file and restarts the unit. Several CMake options expose independent query-plan optimizations (deduplication of identical substrates, sharing of equivalent SELECT computations, commutative addition handling, and factoring of matched hash time-move plans). All default to ON, and the README documents how to configure ablation variants in separate build directories. A separate measurement probe option exists and is forced off in production release and packaging builds. Research material lives in an independent repository, rdb-experiment, containing performance campaigns on real hardware and semantic validation experiments against independent oracles. It is not required by the build, tests, packaging or CI, and is kept separate because experimental data grows monotonically and must remain reproducible. The project is MIT licensed and maintained by Michal Widera. Documentation is available on the project website, with comprehensive documentation in Polish.