Batch vs Stream: nə zaman
Niyə ümumiyyətlə seçmək lazımdır
Hər hansı bir məlumat sistemi təravət, dəyər, dəstək çətinliyi və etibarlılıq arasında balans təşkil edir.
Batch - yüksək bant genişliyi və aşağı rekord dəyəri ilə dövri məlumat «porsiyaları».
Stream - minimal gecikmə və yaddaş/lokal stores vəziyyəti ilə hadisələrin davamlı emalı.
Modellər haqqında qısa
Batch
Mənbə: fayllar/cədvəllər/snapshotlar.
Trigger: cədvəl (saat/gün) və ya şərt (yeni parket faylı).
Güclü cəhətləri: sadəlik, determinizm, məlumatların tam konteksti, ucuz böyük yenidən hesablamalar.
Zəif: heç bir «online», yüksək gizli, real vaxt siqnalları olmadan «pəncərələr».
Stream
Mənbə: brokerlər (Kafka/NATS/Pulsar), CDC, növbələr.
Trigger: hadisə.
Güclü: aşağı gecikmə, reaktivlik, məhsulla təbii inteqrasiya.
Zəif: vaxt mürəkkəbliyi (event vs processing), sifariş/dubli, vəziyyət, əməliyyat.
Həll: seçim matrisi
80/20 qaydası: Əgər SLA dəqiqəlik/saatlıq gecikmələrə imkan verirsə və heç bir reaktiv fiş yoxdursa, batch edin. «Burada və indi» reaksiyası kritik olarsa və ya canlı vitrinlərə ehtiyacınız varsa - stream (tez-tez + yoxlama üçün əlavə gecə batch).
Tipik ssenarilər
Batch - nə zaman daha yaxşı:- Gündəlik hesabat, billing dövrləri, ML-trening, böyük coins, «bütün dəst» deuplikasiyası.
- Dərin validasiyalarla medalyon modeli (bronze/silver/gold).
- Kütləvi backtest və vitrinlərin yenidən yığılması.
- Antifrod/monitorinq, SRE alertləri, real-time balans/missiyalar, «indi» tövsiyələr.
- «Hadisə kimi fakt» inteqrasiyası (EDC), materiallaşdırılmış təsəvvürlərin yenilənməsi (CQRS).
- Mikroservislər: notifikasiyalar, vebhuklar, biznes hadisələrinə reaksiyalar.
- Axın əməliyyat vitrinləri və siqnalları formalaşdırır; gecə batch yoxlama edir, toplu və ucuz tarixi yenidən hesablamalar.
Memarlıq
Lambda (Stream + Batch)
Inkrement və online üçün Stream; Batch tam və düzəlişlər üçün.
Üstünlüklər: çeviklik və SLA. Mənfi cəhətləri: ikili məntiq, kod dublyajı.
Kappa (все — Stream + Replay)
Həqiqət mənbəyi kimi vahid log; batch-yenidən hesablamalar = replay.
Üstünlüklər: bir kod bazası, vahid semantika. Mənfi cəhətləri: daha çətin əməliyyat, log saxlama tələbləri.
Hybrid-Pragmatic
Axın «əməliyyat» + ağır joins/ML/korreksiyalar üçün periodik batch joblar.
Praktikada - ən geniş yayılmış variant.
Vaxt, sifariş, pəncərələr (Stream üçün)
processing time deyil, event time güvənin.
watermark və 'allowed _ lateness' idarə edin; gec hadisələr üçün retractions/upserts saxlayın.
Aqreqatların açarlarına görə partiyalaşdırın, «qaynar açarları» planlaşdırın.
Etibarlılıq və semantika effektləri
Batch
BD əməliyyatları və ya partiyalar/cədvəllərin atom dəyişdirilməsi.
İdempotentlik - deterministik hesablamalar və overwrite/insert-overwrite vasitəsilə.
Stream
At-least-once + idempotent sinks (upsert/merge, aqreqatların versiyaları).
Effektə görə EOS üçün «oxu-qeyd-qeyd mövqeyi».
'event _ id '/' operation _ id' dedupunun cədvəlləri.
Saxlama və formatlar
Batch
Data Lake (Parquet/Delta/Iceberg), OLAP (ClickHouse/BigQuery), obyekt saxlama.
atomic replace, time travel üçün ACID cədvəlləri.
Stream
Brokerlərdə log/mövzular, state stores (RocksDB/embedded), KV/Redis, proyeksiyalar üçün OLTP.
Sxemlərin reyestri (Avro/JSON/Proto), uyğunluq rejimləri.
Qiymət və SLO
Batch: «paket» ödəyin - böyük həcmdə sərfəlidir, lakin ≥ cədvəlinin gecikməsi.
Stream: daimi rantaym resursları, yüksək QPS ilə pik dəyəri; lakin SLA saniyələrdə.
p95/p99 latency, keçici gecikmə, u.e./hadisə dəyəri və TCO dəstək hesab.
Test
Ümumi: qızıl-dəsti, property-based invariants, çirkli giriş generation.
Batch: determinasiya, idempotent yenidən başlamalar, «əvvəl/sonra» tağları müqayisə.
Stream: out-of-order/dublikatlar, effekt və ofset fiksasiyası arasında fault-injection, replay-testlər.
Observability
Batch: cob müddəti, fayl/retray payı, vitrin təravəti, skan-cost.
Stream: vaxt/mesajlar, watermark, late-rate, state ölçüsü/tezlik checkpoint, DLQ-bahis.
Hər yerdə: 'trace _ id', 'event _ id', sxemlərin/konveyerlərin versiyaları.
Təhlükəsizlik və məlumatlar
PII/PCI - minimuma endirmək, at-rest/in-flight şifrələmək, sxemlərdə sahələri təyin etmək ('x-pii').
Stream üçün - state/checkpoint 's qorunması, topiklərə ACL.
GDPR/unudulmaq hüququ: Stream - kriptovalyutası/proyeksiyalarda redaktə; Batch - partiyaların yenidən hesablanması.
Keçid strategiyaları
Batch → Stream: Hadisələrin (Outbox/CDC) nəşri ilə başlayın, mövcud qutuya toxunmadan kiçik bir real-time vitrin qaldırın.
Stream → Batch: hesabat/yoxlama və sinks axını yükünü azaltmaq üçün gündəlik yığımlar əlavə edin.
Anti-nümunələr
Moda üçün «Hər şey Stream»: real ehtiyac olmadan bahalı və çətin.
Tələblər altında «Bir nəhəng gecə batch» <5 dəqiqə.
İş metrləri üçün processing vaxtından istifadə.
İctimai hadisələr kimi xam CDC: sərt əlaqə, təkamül zamanı ağrı.
sinks heç bir idempotentlik → restart ikiqat təsiri.
Seçim siyahısı
- SLO təravəti: neçə saniyə/dəqiqə/saat icazə verilir?
- Giriş sabitliyi: out-of-order/dublikatlar varmı?
- Onlayn reaksiyalara/vitrinlərə ehtiyacınız varmı?
- Qiymət: rantaym 24/7 vs «pəncərə cədvəli».
- Düzəliş yolu: retract/upsert və ya gecə yenidən hesablanması.
- Komanda və əməliyyat yetkinlik (observability, on-call).
- «Tam bir effekt» üçün tələblər.
- PII/Retance/unudulmaq hüququ.
Referans nümunələri
Əməliyyat vitrini (Hybrid):- Stream: UI üçün EDC → proyeksiyaları (KV/Redis, OLTP), idempotent upsert.
- Batch: nightly OLAP, reconciliation, ML-ficking.
- Stream: session-pəncərələr, CEP-qaydaları, alertlər <1-5 s.
- Batch: modellərin yenidən hazırlanması, oflayn validasiya.
- Stream: triggerlər, real vaxt seqmentləri.
- Batch: skorinqlər, LTV modelləri, hesabatlar.
FAQ
batch-də «demək olar ki, real-time» almaq olarmı?
Bəli: mikrobatçı/tetikleyici joblar (hər 1-5 dəqiqədən bir) - güzəşt, lakin windows/late-events çətinlikləri olmadan.
Hər yerdə Lambda yanaşması lazımdır?
Yox. Əgər axın bütün tapşırıqları bağlayırsa və replay edə bilirsinizsə - Kappa uzun müddətdə daha asandır. Əks halda - hibrid.
Qiyməti necə hesablamaq olar?
compute + storage + ops. Stream üçün «24/7» fasilə qiymətini və təcili gecələri əlavə edin; Batch üçün - məlumatların «gecikmə» qiyməti.
Yekun
Aşağı qiymət, sadəlik və periodik yığınlar vacib olduqda Batch seçin; Stream - reaktivlik və təravət kritik olduqda. Praktikada hibrid qalib gəlir: axın - onlayn və siqnallar üçün, batch - doluluq və ucuz tarixi yenidən hesablamalar üçün. Əsas odur ki, SLO təyin edin, idempotentlik/müşahidə olunma təmin edin və korreksiyaların yolunu əvvəlcədən tərtib edin.