À propos du projet

RetractorDB to silnik przetwarzania sygnałów brzegowych do przetwarzania i rejestracji regularnych szeregów czasowych w czasie rzeczywistym. Celuje w ciągłe strumienie danych, przetwarzanie sygnałów, telemetrię i monitorowanie IoT, a jego autor opisuje go jako pracę w toku. System jest napisany w C++ i testowany na x64 i ARM64 pod Linuxem, z portem na macOS testowanym tylko na Apple silicon. Cechy projektowe wymienione w README obejmują działanie w czasie rzeczywistym, sekwencyjny deterministyczny wątek przetwarzania, ciągłe zapytania wykonywane od deklaracji do zakończenia systemu, pamięć współdzieloną do komunikacji międzyprocesowej oraz niestandardową algebrę dla regularnych szeregów czasowych. Projekt składa się z trzech współpracujących programów: - xretractor - silnik. Kompiluje zestawy zapytań .rql i wykonuje ciągłe plany zapytań, opcjonalnie jako usługa systemd z planowaniem w czasie rzeczywistym. - xqry - klient. Czyta wyniki z działającego silnika przez pamięć współdzieloną i oferuje kilka trybów wyjścia (w tym Graphite, InfluxDB i gnuplot) oraz tryb zapytań ad-hoc. - xtrdb - narzędzie inspekcyjne do odczytu binarnych artefaktów magazynowych i metadanych. Instalacja jest oferowana na dwa sposoby. Gotowe pakiety są publikowane w GitHub Releases: pakiet Debian/Ubuntu .deb dla x86-64, który instaluje binaria do /usr/bin i konfiguruje usługę systemd, oraz przenośne archiwa tar.gz dla x86-64 i AArch64. Instalator internetowy weryfikuje sumę SHA-256 wybranego zasobu i instaluje do ~/.local lub /usr/local, z opcjonalną konfiguracją usługi. Budowanie ze źródeł używa Conan 2, CMake i Ninja; na Linuxie wymaga GCC 14+ dla funkcji C++23, a na macOS narzędzi wiersza poleceń Xcode 16.3+ z docelowym systemem macOS 14.4 lub nowszym. Skrypty pomocnicze (scripts/buildrdb.sh, scripts/macos-build.sh) inicjują toolchain i prowadzą przez konfigurację, budowanie, instalację i testy. Lokalne cele pakowania produkują .deb i przenośne archiwa, w tym build ARM64 przez emulację Docker. Konfiguracja to opcjonalny TOML ładowany warstwami: plik systemowy w /etc/retractor, plik użytkownika w katalogu konfiguracyjnym XDG lub jawny plik przekazany przez --config, który staje się jedynym ładowanym plikiem. README zauważa, że brak pliku konfiguracyjnego jest prawidłowym stanem. Lokalizacja magazynu jest głównie kontrolowana przez dyrektywę :STORAGE w pliku RQL, a klucz konfiguracyjny storage.dir działa tylko jako domyślny. Pierwsze zapytanie jest demonstrowane z plikiem .rql deklarującym strumienie wejściowe czytane z /dev/urandom, kompilowanym z xretractor -c do walidacji, a następnie uruchamianym ciągle. Klient xqry listuje aktywne strumienie i wypisuje wyniki nazwanego strumienia; silnik można również zatrzymać przez xqry --kill. Zestawy zapytań mogą być dostarczane do już działającej usługi przez uruchomienie xretractor z plikiem .rql, który waliduje zapytania, zastępuje plik zapytań usługi i restartuje jednostkę. Kilka opcji CMake udostępnia niezależne optymalizacje planów zapytań (deduplikacja identycznych substratów, współdzielenie równoważnych obliczeń SELECT, obsługa przemiennego dodawania oraz faktoryzacja dopasowanych planów przesunięć czasu skrótu). Wszystkie domyślnie są włączone, a README dokumentuje, jak skonfigurować warianty ablacyjne w oddzielnych katalogach budowania. Istnieje również osobna opcja sondy pomiarowej, która jest wymuszona wyłączona w wersjach produkcyjnych i pakietach. Materiały badawcze znajdują się w niezależnym repozytorium rdb-experiment, zawierającym kampanie wydajnościowe na prawdziwym sprzęcie oraz eksperymenty walidacji semantycznej przeciwko niezależnym wyroczniom. Nie jest wymagane przez budowanie, testy, pakowanie ani CI i jest trzymane osobno, ponieważ dane eksperymentalne rosną monotonicznie i muszą pozostać odtwarzalne. Projekt jest licencjonowany na MIT i utrzymywany przez Michała Widerę. Dokumentacja jest dostępna na stronie projektu, z obszerną dokumentacją w języku polskim.