Device Detail
Bu sayfa, device:{device_id}:detail keyi icin V1 sozlesmesini tanimlar.
Ana hedef, cihazla ilgili gerekli operasyonel bilgileri tek key'de toplayip her istekte DB'ye gitmeden hizli cozmektir.
Dokuman Seti
- Genel omurga ve isletim mantigi: bu sayfa
- Kanonik alan/ownerlik sozlesmesi: Device Detail Contract
- Okuma/yazma/rebuild akis diyagrami: Device Detail Flow
- Referans sema dosyasi:
/project-qapu/services/redis/keyspace/device-detail/device-detail.schema.json
Key Pattern
device:{device_id}:detail
Ornek:
device:400000011D081B70:detail
Owner Service
- Primary readers: Ingest, Stream, Calibration, Communication, Observer
- Primary writer: Device lifecycle sahibi servis (API/Inventory)
- Secondary writer: Read-through yapan servisler (cache miss sonrasinda DB fallback + write-back)
Kural: Bu key'in icerigi DB'deki cihaz kaydinin cache kopyasidir; authoritative kaynak daima DB'dir.
Cache Govdesi (V1)
{
"device_id": "400000011D081B70",
"status": "active",
"project_id": 120,
"device_type": "multi_function_meter",
"created_at": "2025-11-01T08:00:00Z",
"last_data_at": "2026-03-12T12:10:00Z",
"updated_at": "2026-03-12T12:10:00Z",
"identity": {
"firmware": "1.0.7",
"iccid": "8946120802005507363",
"imei": "354485417650889"
},
"calibration": {
"ct_ratio": 200.0
},
"buffer_policy": {
"stream_buffer_ttl_sec": 172800,
"max_payload_bytes": 65535,
"duplicate_window_sec": 120
},
"command_policy": {
"default_timeout_ms": 20000,
"max_retry": 3
},
"cache_meta": {
"version": 18,
"db_updated_at": "2026-03-12T12:10:00Z",
"rebuilt_at": "2026-03-12T12:10:05Z"
}
}
Not: ct_ratio kritik bir alandir, ancak bu key yalnizca kalibrasyon icin degil cihazin tum operasyon profili icin kullanilir.
Read / Write Paths
Read Path
- Servis key'i Redis'ten okur.
- Hit varsa gerekli alanlar dogrudan kullanilir (
calibration,buffer_policy,identityvb.). - Miss veya sema uyumsuzsa DB fallback calisir.
Write Path
- Cihaz create/update/delete islemi DB'de tamamlanir.
- Ardindan key invalidate edilir veya yeni govde ile update edilir.
- Read-through yapan servislerde cache miss olursa DB'den yeniden olusturulup Redis'e write-back edilir.
CRUD Senkronizasyon Kurali
Create
- DB'ye cihaz kaydi acilir.
device:{device_id}:detailkey'i ilk govde ile yazilir.
Update
- DB guncellemesi basarili olur.
- Key ya atomik update edilir ya da
DELedilip read-through rebuild'e birakilir.
Delete
- DB'de cihaz pasif/silinmis duruma cekilir.
- Redis key aninda silinir.
- Sonraki okumada servisler DB durumuna gore "device inactive/not found" davranisina gecer.
Kural: Redis guncellemesi DB yazimindan once yapilamaz.
Write Order (DB -> Redis)
Bu key icin yazim duzeni:
- Kalici kaynak DB'dir (
devicesve iliskili cihaz detay kayitlari). - Redis bu kaydin turetilmis cache kopyasidir.
- Redis hicbir durumda DB'nin yerine gecmez.
Kural: Redis'e yazim yalniz DB'den dogrulanmis degerle yapilir.
TTL ve Invalidation
V1 onerisi:
- TTL:
24h - Soft refresh penceresi:
30m
Invaliation tetikleri:
- Cihaz detayinda degisiklik (ozellikle
ct_ratio,firmware,iccid,imei,buffer_policy) oldugunda key silinir veya guncellenir. - Sema uyumsuz govde tespit edilirse key invalid edilir.
- Drift kontrolunde DB-Redis farki tespit edilirse key yeniden yazilir.
- Cihaz pasif/silinmis duruma geldiyse key zorunlu silinir.
Not: TTL degeri operasyonel davranisa gore degistirilebilir; ilke degismez: DB authoritative, Redis cache.
Failure ve Drift Senaryolari
Senaryo A: Redis miss
- Beklenen davranis: DB fallback + write-back
- Etki: Ilk istekte ek DB latency, sonraki isteklerde hizli yanit
Senaryo B: Redis down
- Beklenen davranis: DB fallback ile isleme devam
- Etki: Performans duser ama dogruluk korunur
Senaryo C: Stale ct_ratio
- Beklenen davranis: Drift kontrolu ile tespit, key invalidate + rebuild
- Etki: Kalibrasyon dogrulugu korunur
Senaryo D: Stale buffer_policy
- Beklenen davranis: Drift kontrolu ile tespit, key invalidate + rebuild
- Etki: Ingest/observer tarafinda yanlis runtime davranisi onlenir
Senaryo E: Silinmis cihaz key'i Redis'te kaldi
- Beklenen davranis: Silme akisinda zorunlu
DEL; kacan durumda ilk okumada DB not found -> key temizligi - Etki: Silinmis cihazin islenmesi engellenir
Reconciliation ve Rebuild
Rebuild kaynaklari:
devicesve iliskili cihaz detay kayitlari (authoritative)- Cihaz envanter guncelleme akislarindan gelen yeni degerler
Rebuild adimlari:
- Redis key yoksa veya stale ise DB'den oku.
- Govdeyi normalize et (
identity,calibration,buffer_policy,cache_meta). SETEX device:{device_id}:detail <ttl>ile yaz.
Gozlemlenebilirlik Metrikleri
Asagidaki metrikler izlenmelidir:
device_detail_cache_hit_ratiodevice_detail_cache_miss_totaldevice_detail_db_fallback_latency_msdevice_detail_cache_rebuild_totaldevice_detail_drift_detected_totaldevice_detail_invalidation_totaldevice_detail_stale_after_update_total
Alarm onerisi:
- Cache hit ratio ani dusus
- DB fallback latency surekli yukselis
- Drift detected total ani artis
Kullanım Senaryolari
1) Kalibrasyon ct_ratio cozumleme
- Redis
device:{device_id}:detail-> hit calibration.ct_ratioalinir vevalue_ct = raw_value * ct_ratiouygulanir
2) Ingest veya Observer runtime policy kullanimi
- Redis
device:{device_id}:detail-> hit buffer_policyalanlari ile duplicate window/payload limiti/TTL davranisi uygulanir
3) Cache miss
- Redis miss -> DB fallback
- Sonuc Redis'e write-back edilir
4) ct_ratio bulunamadi
CT_CONFIG_MISSwarning uretilir- Fallback olarak
ct_ratio = 1kullanilir - Key kalici sema bozuksa invalidate edilir
5) Device update sonrasi tutarlilik
- DB update tamamlanir
- Key invalidate edilir veya guncellenir
- Bir sonraki okumada key yeni govde ile olusur
Capraz Referanslar
- Calibration CT ratio zinciri:
/projects/qapu/services/calibration - Calibration yazim sirasi:
/projects/qapu/services/calibration/data-layer-write-order-chart - Redis ana prensipleri:
/projects/qapu/services/redis