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
Przykład
test/IntegrationTest/simple/query.rql
STORAGE 'temp'
DECLARE a INTEGER STREAM core0, 0.1 FILE 'datafile2.dat'
DECLARE b INTEGER STREAM core1, 0.2 FILE 'datafile3.dat'
SELECT str1[0]*10,str1[1]*10,str1[1]*str1[0]+20 STREAM str1 FROM core0+core1
Idea

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

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.

Dokładność

Kluczowe operatory są dowiedzione w arytmetyce liczb wymiernych. Bez dryfu zmiennoprzecinkowego, bez przybliżeń - dla dowolnej pary regularnych odstępów.

Odwracalność

Połączony strumień zawsze da się rozdzielić na dokładnie te dwa zegary, z których powstał. Scalanie i rozdzielanie są operacjami odwrotnymi; znak nożyc to narysowane rozdzielenie.

Powtarzalność

Odtwórz to samo nagranie dwa razy, a wynik będzie identyczny co do bitu - właściwość stale sprawdzana w CI.

Formalny dowód znajduje się w artykule. Sprawdź reguły sam, używając operatorów interlace i sum.

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.

01 / 08

Lotnictwo

Telemetria z lotów testowych i awioniki: setki czujników o niezgodnych częstotliwościach scalane deterministycznie, z odtwarzaniem identycznym co do bitu na potrzeby analiz powypadkowych i po locie.

Częstotliwości deklaruje się raz, w zapytaniu, jako dokładne ułamki; jednostka inercyjna 400 Hz i pozycja GPS 1 Hz spotykają się na wspólnej osi czasu bez zgadywania przy przepróbkowaniu. Ten sam zapis odtworzony po roku daje te same bajty, więc wniosek z analizy lotu da się odtworzyć i sprawdzić.

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.

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

Przykład z artykułu to dłuższy łańcuch tych samych operatorów: detektor zespołów QRS Pan–Tompkinsa na danych EKG MIT-BIH, 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.

  1. 01Filtr pasmowy 5–15 Hz
  2. 02Pochodna
  3. 03Kwadrat
  4. 04Całkowanie w oknie ruchomym
  5. 05Próg adaptacyjny
Detektor QRS Pan–Tompkinsa · rekord MIT-BIH 205
DEFAULT VOLATILE
DECLARE MLII INTEGER, V1 INTEGER STREAM ecg, 1/360 FILE 'rec205'
DECLARE bp_coef INTEGER[25] STREAM bpf, 1 FILE 'bp_coef.txt'
DECLARE d_coef INTEGER[5] STREAM df, 1 FILE 'd_coef.txt'
SELECT ecg.MLII STREAM mlii FROM ecg
# 1. filtr pasmowoprzepustowy 5–15 Hz - splot FIR, 25 odczepów
SELECT mlii[_]*bpf[_] STREAM bp_acc FROM mlii@(1,25)+bpf
SELECT int(bp_acc[0]/1000) STREAM bp_out FROM SUMC(bp_acc)
# 2. różniczkowanie - FIR, 5 odczepów
SELECT bp_out[_]*df[_] STREAM d_acc FROM bp_out@(1,5)+df
SELECT int(d_acc[0]) STREAM d_out FROM SUMC(d_acc)
# 3. kwadrat
SELECT d_out[0]^2/1000 STREAM sq_out FROM d_out
# 4. całkowanie w oknie ruchomym - 30 próbek
SELECT int(sq_out[0]) STREAM mwi FROM AVG(sq_out@(1,30))
# 5. próg adaptacyjny - średnia ruchoma 180 próbek (0,5 s)
SELECT int(mwi[0]) STREAM mwi_thr FROM AVG(mwi@(1,180))
# wyjście: EKG wycentrowane, obwiednia ×5, detekcja ×5
SELECT mlii[0]-900, mwi[0]*5, (mwi[0]-mwi_thr[0]*2)*5 STREAM qrs_out FROM mlii+mwi+mwi_thr PERSISTENT
Rodowód

Stulecie matematyki, jeden silnik

  1. 1926

    Beatty pokazuje, że dwa ciągi ⌊np⌋, ⌊nq⌋ dzielą ℕ dla niewymiernych p, q.

  2. 1969

    Fraenkel uogólnia kryterium podziału na parametry wymierne — przypadek obliczalny.

  3. 2003

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

  4. 2006

    Most między systemami pokryć a wyrównywaniem strumieni zostaje ustanowiony w recenzowanej publikacji [Annales UMCS Informatica t. 4] — dziś na arXiv:2607.10444.

  5. 2026

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