Sobre el proyecto

RetractorDB es un motor de procesamiento de señales en el borde diseñado para procesar y grabar series temporales regulares en tiempo real. Está orientado a flujos de datos continuos, procesamiento de señales, telemetría y monitoreo IoT, y su autor lo describe como trabajo en progreso. El sistema está escrito en C++ y probado en x64 y ARM64 bajo Linux, con un puerto para macOS probado solo en silicio de Apple. Las características de diseño indicadas en el README incluyen operación en tiempo real, un hilo de procesamiento secuencial determinista, consultas continuas que se ejecutan desde la declaración hasta la terminación del sistema, memoria compartida para comunicación entre procesos y un álgebra personalizada para series temporales regulares. El proyecto consta de tres programas cooperativos: - xretractor: el motor. Compila conjuntos de consultas .rql y ejecuta planes de consulta continua, opcionalmente como un servicio systemd con programación en tiempo real. - xqry: el cliente. Lee los resultados del motor en ejecución a través de memoria compartida y ofrece varios modos de salida (incluyendo Graphite, InfluxDB y gnuplot) además de un modo de consulta ad-hoc. - xtrdb: una herramienta de inspección para leer artefactos de almacenamiento binario y metadatos. La instalación se ofrece de dos maneras. Los paquetes precompilados se publican en GitHub Releases: un .deb para Debian/Ubuntu en x86-64 que instala binarios en /usr/bin y configura un servicio systemd, además de archivos tar.gz portátiles para x86-64 y AArch64. Un instalador web verifica el resumen SHA-256 del activo elegido e instala en ~/.local o /usr/local, con configuración opcional del servicio. La compilación desde el código fuente utiliza Conan 2, CMake y Ninja; en Linux requiere GCC 14+ para características de C++23, y en macOS las herramientas de línea de comandos de Xcode 16.3+ con un objetivo de implementación de macOS 14.4 o más reciente. Los scripts auxiliares (scripts/buildrdb.sh, scripts/macos-build.sh) inician la cadena de herramientas y gestionan los pasos de configuración, compilación, instalación y prueba. Los objetivos de empaquetado local producen .deb y archivos portátiles, incluyendo una compilación ARM64 mediante emulación Docker. La configuración es opcional y se carga en capas TOML: un archivo del sistema bajo /etc/retractor, un archivo de usuario bajo el directorio de configuración XDG, o un archivo explícito pasado con --config, que entonces se convierte en el único archivo cargado. El README señala que la ausencia de un archivo de configuración es un estado válido. La ubicación de almacenamiento se controla principalmente mediante la directiva :STORAGE dentro del archivo RQL, actuando la clave de configuración storage.dir solo como valor predeterminado. Una primera consulta se demuestra con un archivo .rql que declara flujos de entrada leídos de /dev/urandom, compilado con xretractor -c para validación y luego ejecutado de forma continua. El cliente xqry lista los flujos activos e imprime los resultados de un flujo nombrado; el motor también puede detenerse mediante xqry --kill. Los conjuntos de consultas pueden entregarse a un servicio ya en ejecución iniciando xretractor con el archivo .rql, que valida las consultas, reemplaza el archivo de consultas del servicio y reinicia la unidad. Varias opciones de CMake exponen optimizaciones independientes del plan de consulta (deduplicación de sustratos idénticos, compartición de cálculos SELECT equivalentes, manejo de suma conmutativa y factorización de planes de movimiento temporal de hash coincidente). Todas están activadas por defecto, y el README documenta cómo configurar variantes de ablación en directorios de compilación separados. Existe una opción separada de sonda de medición que está desactivada por defecto en las compilaciones de lanzamiento y empaquetado de producción. El material de investigación reside en un repositorio independiente, rdb-experiment, que contiene campañas de rendimiento en hardware real y experimentos de validación semántica contra oráculos independientes. No es requerido por la compilación, pruebas, empaquetado o CI, y se mantiene separado porque los datos experimentales crecen monótonamente y deben permanecer reproducibles. El proyecto tiene licencia MIT y es mantenido por Michal Widera. La documentación está disponible en el sitio web del proyecto, con documentación completa en polaco.