这个项目能做什么

RetractorDB 是一个边缘信号处理引擎,用于实时处理和记录规则时间序列数据。它面向连续数据流、信号处理、遥测和物联网监控,其作者将其描述为进行中的工作。该系统使用 C++ 编写,并在 Linux 下的 x64 和 ARM64 上测试,macOS 移植仅在 Apple 芯片上测试。 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 上需要 GCC 14+ 以支持 C++23 特性,在 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 维护。文档可在项目网站上获取,并提供全面的波兰语文档。