Otwartoźródłowy Deterministyczny Brzegowy Silnik Przetwarzania Sygnałów

Regularne strumienie.
Determinizm u podstawy.

RetractorDB scala i resampluje regularne szeregi czasowe bez błędu przybliżenia. Jego kluczowe operatory są dowiedzione jako poprawne w arytmetyce liczb wymiernych — oparte na ciągach Beatty’ego i twierdzeniu o podziale Fraenkla. Odtwórz nagranie, a za każdym razem otrzymasz te same dane.

arXiv:2607.07730  ·  licencja MIT

Δa = 2 Δb = 3 # Δc = 6/5
Idea

Scalenie, które zawsze można cofnąć

Większość systemów strumieniowych znakuje każde zdarzenie znacznikiem czasu i uzgadnia je w rozmytych oknach czasowych. RetractorDB zaczyna od czegoś prostszego: regularny strumień to po prostu zegar — punkt startowy i stały odstęp między taktami. Dwa zegary działające z różną częstotliwością można utkać w jeden połączony strumień, zachowując kolejność, bez straty danych.

Najważniejsze jest to, że ten połączony strumień zawsze można rozdzielić z powrotem na dokładnie te dwa zegary, z których powstał — bez przybliżeń, bez dryfu, bez zgadywania, który takt pochodził z którego strumienia. Scalanie i rozdzielanie są dokładnie odwrotnymi operacjami, dla dowolnej pary regularnych częstotliwości. Odtwórz to samo nagranie dwa razy, a wynik będzie identyczny co do bitu, bo operacja nigdy nie była projektowana jako przybliżenie.

Stąd też biorą się symoble graficzne systemu — znak nożyc to dosłownie narysowana operacja rozdzielenia.

strumień A strumień B

Formalny dowód — oparty na teorii liczb — znajduje się w artykule, dla ciekawskich.

Chcesz sam zobaczyć te reguły w działaniu? Wypróbuj operatory interlace i sum na własnych ciągach i częstotliwościach.

Gdzie się sprawdza

Każda maszyna, która strumieniuje dane, każdy sygnał, który się liczy

RetractorDB jest neutralny domenowo. Działa na brzegu sieci, tuż przy czujnikach, i zamienia surową telemetrię o różnych częstotliwościach próbkowania w dokładne, zredukowane, stabilne przy odtwarzaniu strumienie, zanim trafią do historiana, TSDB lub chmury. Wszędzie tam, gdzie sygnały o różnych częstotliwościach próbkowania trzeba scalać, resamplować i audytować, algebra działa bez zmian — różnią się jedynie współczynniki.

Ten sam wzorzec powtarza się wszędzie tam, gdzie regularna telemetria spotyka ślad audytowy: rejestratory danych kolejowych i morskich, sieci sejsmiczne, monitoring stanu konstrukcji mostów i budynków, sieci czujników środowiskowych.

Silnik

Trzy programy, jeden deterministyczny potok

Zadeklaruj strumienie źródłowe i ciągłe transformacje w RQL, deklaratywnym języku zapytań realizującym tę algebrę. Kompilator sprowadza każdy strumień do wymiernego interwału i buduje graf zależności DAG; silnik wykonawczy planuje sloty na wymiernej osi czasu. Identyczne dane wejściowe dają artefakty identyczne co do bajtu — właściwość stale sprawdzana w CI.

xretractor

Parser, kompilator i silnik wykonawczy dla planów RQL. Tryby tylko-kompilacji i zrzutu planu do inspekcji.

xqry

Odpytuje działające strumienie na żywo przez IPC — surowo lub sformatowane, gotowe do przekierowania do gnuplot.

xtrdb

Inspekcja i edycja artefaktów binarnych: schemat, metadane null/luk, deterministyczne dane testowe.

RQL w praktyce

Jeden przykład, ta sama algebra wszędzie

Każda z domen wymienionych wyżej sprowadza się do tego samego łańcucha operatorów. Jako przykład w artykule wybraliśmy wymagający, dobrze opisany potok z pierwotnej domeny silnika: detektor zespołów QRS Pan–Tompkinsa na danych EKG MIT-BIH — filtr pasmowoprzepustowy, pochodna, podniesienie do kwadratu, całkowanie, próg adaptacyjny — wszystko od początku do końca w tej algebrze. Zamień współczynniki, a ten sam łańcuch policzy obwiednię drgań albo cechę sygnału z magistrali. Bez funkcji użytkownika, bez proceduralnych furtek.

DECLARE MLII INTEGER, V1 INTEGER STREAM ecg, 1/360 FILE 'rec205'

# 1. filtr pasmowoprzepustowy 5–15 Hz — konwolucja FIR, 25 odczepów
SELECT * STREAM mlii_win FROM mlii@(1,25)
SELECT mlii_win[_]*bpf[_] STREAM bp_acc FROM mlii_win+bpf

# 2. pochodna   3. podniesienie do kwadratu   4. całkowanie w oknie ruchomym
SELECT d_out[0]*d_out[0]/1000 STREAM sq_out FROM d_out

# 5. próg adaptacyjny — średnia ruchoma 0,5 s
SELECT mlii[0]-900, mwi[0]*5, (mwi[0]-mwi_thr[0]*2)*5
STREAM qrs_out FROM mlii+mwi+mwi_thr
Rodowód

Stulecie matematyki, jeden silnik

1926

Beatty pokazuje, że dwa ciągi ⌊np⌋, ⌊nq⌋ dzielą ℕ dla niewymiernych częstotliwości.

1969

Fraenkel uogólnia kryterium podziału na parametry wymierneprzypadek obliczalny.

2003

Algebra operatorów i deklaratywny język zapytań zostają zdefiniowane w kontekście monitorowania płodu [JMIT t. 5–6].

2006

Most między systemami pokryć a wyrównywaniem strumieni zostaje ustanowiony w recenzowanej publikacji Det. method... .

2026

Pełna formalna semantyka, dowody i raport z silnika: arXiv:2607.07730.