Об этом проекте
RetractorDB — это движок обработки сигналов на периферии для обработки и записи регулярных временных рядов в реальном времени. Он ориентирован на непрерывные потоки данных, обработку сигналов, телеметрию и IoT-мониторинг, а его автор описывает его как незавершённую работу. Система написана на C++ и протестирована на x64 и ARM64 под Linux, порт для macOS протестирован только на Apple silicon.
Среди заявленных в README особенностей дизайна — работа в реальном времени, последовательный детерминированный поток обработки, непрерывные запросы, выполняющиеся с момента объявления до завершения работы системы, разделяемая память для межпроцессного взаимодействия и собственная алгебра для регулярных временных рядов.
Проект состоит из трёх взаимодействующих программ:
- xretractor — движок. Он компилирует наборы запросов .rql и выполняет планы непрерывных запросов, опционально как служба systemd с планированием в реальном времени.
- xqry — клиент. Он читает результаты из работающего движка через разделяемую память и предлагает несколько режимов вывода (включая Graphite, InfluxDB и gnuplot), а также режим ad-hoc запросов.
- xtrdb — инструмент инспекции для чтения бинарных артефактов хранения и метаданных.
Установка предлагается двумя способами. Готовые пакеты публикуются на GitHub Releases: .deb для Debian/Ubuntu для x86-64, который устанавливает бинарные файлы в /usr/bin и настраивает службу systemd, а также портативные архивы tar.gz для x86-64 и AArch64. Установщик с сайта проверяет дайджест 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) загружают инструментарий и управляют этапами configure, build, install и test. Цели локальной упаковки создают .deb и портативные архивы, включая сборку ARM64 через эмуляцию Docker.
Конфигурация — это опциональный TOML, загружаемый слоями: системный файл в /etc/retractor, пользовательский файл в каталоге конфигурации XDG или явный файл, переданный с --config, который затем становится единственным загружаемым файлом. В README отмечено, что отсутствие файла конфигурации является допустимым состоянием. Расположение хранилища в первую очередь контролируется директивой :STORAGE внутри файла RQL, а ключ конфигурации storage.dir действует только как значение по умолчанию.
Первый запрос демонстрируется с помощью файла .rql, объявляющего входные потоки, читаемые из /dev/urandom, скомпилированного с xretractor -c для проверки и затем запускаемого непрерывно. Клиент xqry перечисляет активные потоки и печатает результаты именованного потока; движок также можно остановить через xqry --kill. Наборы запросов можно доставить уже работающей службе, запустив xretractor с файлом .rql, который проверяет запросы, заменяет файл запросов службы и перезапускает юнит.
Несколько опций CMake открывают независимые оптимизации планов запросов (дедупликация идентичных подложек, совместное использование эквивалентных вычислений SELECT, обработка коммутативного сложения и вынесение общих множителей в совпадающих планах перемещения времени по хешу). Все они по умолчанию включены, и в README описано, как настраивать варианты абляции в отдельных каталогах сборки. Существует отдельная опция измерительного зонда, которая принудительно отключается в производственных релизных и упаковочных сборках.
Исследовательские материалы находятся в независимом репозитории rdb-experiment, содержащем кампании по производительности на реальном оборудовании и эксперименты по семантической валидации против независимых оракулов. Он не требуется для сборки, тестов, упаковки или CI и хранится отдельно, поскольку экспериментальные данные монотонно растут и должны оставаться воспроизводимыми.
Проект распространяется под лицензией MIT и поддерживается Михалом Видерой. Документация доступна на сайте проекта, при этом исчерпывающая документация представлена на польском языке.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.