Telemetri ve Olcum Tablolari
Bu sayfa, Qapu backend icinde bir telemetry paketinin veritabani acisindan nasil yasadigini tanimlar. Amac yalniz tablo listesi vermek degil; her tablonun neden var oldugunu, kabul zincirindeki yerini, hangi veriyi tuttugunu, hangi veriyi bilerek tutmadigini ve hangi alanlarin ne amacla eklendigini netlestirmektir.
Bu dokuman koda baslamadan once veri sozlesmesini sabitlemek icindir. Bu nedenle burada yazilanlar sadece aciklama degil, davranis kontratidir.
Genel Akis
Bu akista temel roller sunlardir:
raw_data: ingress journalstreams: accepted telemetry eventmeasurements_*: segment odakli typed measurement persistencemeasurements: generic dusuk yogunluklu measurement persistencestate: son canli cihaz ozeti (runtime projection)ledger_transactions: best-effort integrity trail
Bu dokumanda state, Runtime State kapsamindaki anlik cihaz projeksiyonunu ifade eder. Bu ifade belirli bir fiziksel tablo adini zorunlu kilmaz; telemetry lifecycle dokumani yalnizca bu katmanin akis ve transaction etkisini tarifler.
Ledger fail olursa
Bu modelde ledger yazimi kabul zincirini geri almaz.
Sonuc:
- accepted stream kalir
- measurement kalir
- state kalir
- ledger eksik kalabilir
streams.ledger_status = failedolur
Duplicate Identity Spesifikasyonu
Duplicate karari su ucluden olusur:
device_iddevice_timecanonical_payload_hash
Bu ucu ayniysa paket duplicate kabul edilir.
Duplicate kontrolu parse + schema validation sonrasinda, streams insert oncesinde calisir.
Duplicate oldugunda
raw_datakaydi tutulurstream_id = nullkalirvalid_pack = falsevevalidation_code = DUPLICATE_PACKETolarak isaretlenir- stream olusmaz
- measurement yazilmaz
- state guncellenmez
- warning/log uretilebilir
Transaction Boundary
Boundary 1 - Journal
raw_data journal kaydi erken ve bagimsiz yazilir.
Boundary 2 - Accepted transaction
Asagidakiler ayni transaction icinde degerlendirilir:
streamsinsertmeasurements_*insertlerimeasurementsinsertleri- state update
raw_data.stream_idiliskisinin set edilmesi
Bu zincirin herhangi bir noktasinda hata olursa accepted transaction rollback olur.
Not: Variable-level routing uyusmazliklari (unknown/inactive/segment-column) teknik hata degil, veri kalitesi olayi olarak ele alinir; yalniz ilgili degisken atlanir ve transaction rollback tetiklenmez.
Boundary 3 - Best-effort sonrasi isler
- ledger write
- reaction side-effects
- bazi secondary projection'lar
Failure Matrix
| Durum | raw_data | streams | measurement | state | ledger | Sonuc |
|---|---|---|---|---|---|---|
| invalid JSON | var | yok | yok | yok | yok | journal kalir |
| schema fail | var | yok | yok | yok | yok | journal kalir |
| routing mismatch (unknown/inactive/segment-column) | var | var | kismi | kismi | yok | Hatali degiskenler atlanir, gecerli degiskenler yazilir, operasyonel log uretilir |
| duplicate | var | yok | yok | yok | yok | duplicate journal kalir |
| stream create fail | var | rollback | yok | yok | yok | raw failed isaretlenir |
| measurement fail | var | rollback | rollback | rollback | yok | raw failed isaretlenir |
| state fail | var | rollback | rollback | rollback | yok | raw failed isaretlenir |
| ledger fail | var | var | var | var | failed | accepted event korunur |
Sonuc
Telemetry lifecycle modeli, Qapu backend icindeki accepted veri akisinin veritabani sozlesmesini tanimlar. Burada raw_data giris jurnali, streams accepted event, measurements_* segment odakli typed persistence, measurements generic persistence, state tablosu latest state, ledger_transactions ise best-effort integrity trail olarak konumlanir.
Uctan uca tek senaryo dogrulama seti icin:
Bu ayrim, kod yazarken hangi veri hangi tabloda dogar, hangi veri rollback olur, hangisi tarihsel kanit olarak kalir ve hangisi yalniz en son durumu tasir sorularina net cevap uretir.
Tablolar
- variables: Degisken tanimlari.
- register_structure: Register yapi tanimlari.
- streams: Stream kayitlari.
- raw_data: Ham veri kayitlari.
- measurements: Ana olcum kayitlari.
- measurements_device: Cihaz olcum kayitlari.
- measurements_current: Akim olcum kayitlari.
- measurements_voltage: Gerilim olcum kayitlari.
- measurements_power: Guc olcum kayitlari.
- measurements_energy: Enerji olcum kayitlari.
- measurements_water: Su olcum kayitlari.
- measurements_environment: Cevresel olcum kayitlari.
- measurements_location: Konum olcum kayitlari.
- measurements_register: Register olcum kayitlari.
- calibration_profiles: Kalibrasyon profil tanimlari.
- calibration_assignments: Kalibrasyon atama kayitlari.
- ledger_transactions: Muhasebe iliskili hareket kayitlari.
- message_types: Mesaj tipi kayitlari.
- synthesis_rules: Sentez kural tanimlari.
- synthesis_assignments: Sentez kural atamalari.