프로젝트 소개
RetractorDB는 정규 시계열 데이터를 실시간으로 처리하고 기록하기 위한 엣지 신호 처리 엔진입니다. 연속 데이터 스트림, 신호 처리, 텔레메트리 및 IoT 모니터링을 대상으로 하며, 작성자에 따르면 아직 개발 진행 중인 작업입니다. 이 시스템은 C++로 작성되었고 Linux에서 x64와 ARM64로 테스트되었으며, macOS 포팅은 Apple silicon에서만 테스트되었습니다.
README에 명시된 설계 특징으로는 실시간 동작, 순차적 결정론적 처리 스레드, 선언 시점부터 시스템 종료 시까지 실행되는 연속 쿼리, 프로세스 간 통신을 위한 공유 메모리, 그리고 정규 시계열을 위한 사용자 정의 대수가 있습니다.
이 프로젝트는 서로 협력하는 세 가지 프로그램으로 구성됩니다:
- xretractor - 엔진입니다. .rql 쿼리 세트를 컴파일하고 연속 쿼리 계획을 실행하며, 선택적으로 실시간 스케줄링을 갖춘 systemd 서비스로 실행될 수 있습니다.
- xqry - 클라이언트입니다. 공유 메모리를 통해 실행 중인 엔진에서 결과를 읽고 여러 출력 모드(Graphite, InfluxDB, gnuplot 포함)와 애드혹 쿼리 모드를 제공합니다.
- xtrdb - 바이너리 저장 아티팩트와 메타데이터를 읽기 위한 검사 도구입니다.
설치는 두 가지 방식으로 제공됩니다. 사전 빌드된 패키지는 GitHub Releases에 게시됩니다: 바이너리를 /usr/bin에 설치하고 systemd 서비스를 연결하는 x86-64용 Debian/Ubuntu .deb, 그리고 x86-64와 AArch64용 이식 가능한 tar.gz 아카이브입니다. 웹사이트 설치 프로그램은 선택한 자산의 SHA-256 다이제스트를 검증하고 ~/.local 또는 /usr/local에 설치하며, 선택적 서비스 설정을 제공합니다. 소스에서 빌드하려면 Conan 2, CMake, Ninja를 사용합니다. Linux에서는 C++23 기능을 위해 GCC 14+가 필요하고, macOS에서는 배포 대상이 macOS 14.4 이상인 Xcode 16.3+ 명령줄 도구가 필요합니다. 도우미 스크립트(scripts/buildrdb.sh, scripts/macos-build.sh)는 툴체인을 부트스트랩하고 configure, build, install, test 단계를 구동합니다. 로컬 패키징 대상은 .deb와 이식 가능한 아카이브를 생성하며, Docker 에뮬레이션을 통한 ARM64 빌드도 포함합니다.
구성은 계층적으로 로드되는 선택적 TOML입니다: /etc/retractor 아래의 시스템 파일, XDG 구성 디렉터리 아래의 사용자 파일, 또는 --config로 전달된 명시적 파일이며, 이 경우 해당 파일만 로드됩니다. README는 구성 파일이 없는 것도 유효한 상태라고 명시합니다. 저장 위치는 주로 RQL 파일 내부의 :STORAGE 지시문으로 제어되며, storage.dir 구성 키는 기본값 역할만 합니다.
첫 번째 쿼리는 /dev/urandom에서 읽는 입력 스트림을 선언하는 .rql 파일로 시연됩니다. 이 파일은 검증을 위해 xretractor -c로 컴파일된 후 연속적으로 실행됩니다. xqry 클라이언트는 활성 스트림을 나열하고 명명된 스트림의 결과를 출력합니다. 엔진은 xqry --kill을 통해서도 중지할 수 있습니다. 쿼리 세트는 이미 실행 중인 서비스에 .rql 파일과 함께 xretractor를 시작하여 전달할 수 있으며, 이는 쿼리를 검증하고 서비스 쿼리 파일을 교체한 후 유닛을 재시작합니다.
여러 CMake 옵션이 독립적인 쿼리 계획 최적화(동일 기질의 중복 제거, 동등한 SELECT 계산의 공유, 교환 덧셈 처리, 일치하는 해시 시간 이동 계획의 인수 분해)를 노출합니다. 모두 기본값이 ON이며, README는 별도의 빌드 디렉터리에서 제거 변형을 구성하는 방법을 문서화합니다. 별도의 측정 프로브 옵션이 존재하며 프로덕션 릴리스 및 패키징 빌드에서는 강제로 꺼집니다.
연구 자료는 독립 저장소인 rdb-experiment에 있으며, 실제 하드웨어에서의 성능 캠페인과 독립 오라클에 대한 의미 검증 실험을 포함합니다. 이는 빌드, 테스트, 패키징 또는 CI에 필요하지 않으며, 실험 데이터가 단조롭게 증가하고 재현 가능성을 유지해야 하기 때문에 별도로 유지됩니다.
이 프로젝트는 MIT 라이선스이며 Michal Widera가 유지 관리합니다. 문서는 프로젝트 웹사이트에서 제공되며, 포괄적인 문서는 폴란드어로 되어 있습니다.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.