Batch vs Stream: качан эмне
Эмне үчүн тандоо керек
Ар кандай маалымат системасы сергектик (latency), наркы, колдоо татаалдыгы жана ишенимдүүлүк ортосунда балансталат.
Batch - жазуу үчүн жогорку өткөрүү жөндөмдүүлүгү жана төмөн наркы менен мезгил-мезгили менен берилүүчү "порциялар".
Stream - минималдуу кечигүү жана эс/жергиликтүү stores абалы менен окуяларды үзгүлтүксүз иштетүү.
Моделдер жөнүндө кыскача
Batch
Булак: файлдар/таблицалар/снапшоттор.
Триггер: тартиби (саат/күн) же шарты (жаңы паркет-файл).
Күчтүү жактары: жөнөкөйлүк, детерминизм, толук маалымат контекст, арзан чоң кайра эсептөөлөр.
алсыз: эч кандай "онлайн", жогорку жашыруун, реалдуу убакыт сигналдары жок "терезелер".
Stream
Булак: брокерлер (Kafka/NATS/Pulsar), CDC, кезек.
Триггер: окуя.
Күчтүү: төмөн кечигүү, реактивдүүлүк, продукт менен табигый интеграция.
Алсыз: убакыттын татаалдыгы (event vs processing), тартиби/дубль, абалы, иштетүү.
Чечим: тандоо матрицасы
Эреже 80/20: SLA мүнөт/саат кечигүү жана эч кандай реактивдүү fich берет болсо, анда - batch. Эгерде "бул жерде жана азыр" деген реакция критикалык болсо же тирүү витриналар керек болсо - агым (көбүнчө текшерүү үчүн кошумча түнкү батч).
Типтүү сценарийлер
Batch - качан жакшы:- Күнүмдүк отчеттуулук, мезгил-мезгили менен биллинг, ML-тренинг, ири joins, "бардык топтомун".
- Медальон модели (bronze/silver/gold) терең валидациялар менен.
- Массалык бектесталар жана витриналарды кайра чогултуу.
- Antifrod/мониторинг, SRE, реалдуу убакыт балансы/миссиясы, сунуштар "азыр".
- Интеграция "иш-чара-чындык" (EDC), материалдык түшүнүктөрдү жаңыртуу (CQRS).
- Микросервистер: ноталар, вебхактар, бизнес окуяларга реакциялар.
- Агым иштеп терезелерди жана сигналдарды түзөт; Nightbatch эсептөө кылат, куплет жана арзан тарыхый кайра эсептөөлөр.
Архитектура
Lambda (Stream + Batch)
инкремент жана онлайн үчүн агым; толук жана түзөтүү үчүн Batch.
Артыкчылыктары: ийкемдүүлүк жана SLA. Кемчиликтери: кош логика, кодду кайталоо.
Kappa (все — Stream + Replay)
чындыктын булагы катары бирдиктүү лог; batch-кайра эсептөөлөр = replay.
Артыкчылыктары: бир коддук база, бирдиктүү семантика. Минустар: татаал иштетүү, сактоо сактоо талаптары.
Hybrid-Pragmatic
Агымы "операциялык" + оор joins/ML/коррекциялар үчүн мезгил-мезгили менен батч-джобдор.
Иш жүзүндө - эң кеңири таралган вариант.
Убакыт, тартип, терезелер (үчүн Stream)
event time таянуу, processing time эмес.
watermark жана 'allowed _ lateness' башкаруу; кеч окуялар үчүн retractions/upserts колдоо.
Агрегаттардын ачкычтары боюнча партиялаштыруу, "ысык ачкычтарды" пландаштыруу.
Ишенимдүүлүк жана семантика таасирлери
Batch
БД транзакциялары же партияларды/таблицаларды атомдук алмаштыруу.
Демпотенттүүлүк - deterministic-эсептөө жана overwrite/insert-overwrite аркылуу.
Stream
At-least-once + emempotent sinks (upsert/merge, агрегаттардын нускасы).
Транзакциялык "окуган-жазылган-жазылган позиция" эффект боюнча EOS үчүн.
'event _ id '/' operation _ id' Дедуптун таблицалары.
Сактоо жана форматтар
Batch
Data Lake (Parquet/Delta/Iceberg), OLAP (ClickHouse/BigQuery), объект сактоо.
ACID таблицалар үчүн atomic replace, time travel.
Stream
брокерлердин Логи/темалар, мамлекеттик stores (RocksDB/embedded), KV/Redis, проекциялар үчүн OLTP.
схемалар реестри (Euro/JSON/Proto), шайкештик режимдери.
Наркы жана SLO
Batch: "пачка" менен төлөйсүң - чоң көлөмдө пайдалуу, бирок ≥ графиктин кечигиши.
Stream: туруктуу ижаралык ресурстар, жогорку QPS боюнча жогорку наркы; бирок SLA секунд.
p95/p99 latency, кечигүү, u.e. наркы/окуя жана TCO колдоо карап көрөлү.
Тестирлөө
Жалпы: алтын-топтомдор, property-based инварианттар, кир кириш өндүрүү.
Batch: аныктоо, idempotent кайра баштоо, "чейин/кийин" такталарын салыштыруу.
Stream: out-of-order/дубликаттар, fault-injection offset таасир жана бекитүү ортосунда, replay-тесттер.
Обсервация
Batch: джоб узактыгы, фейлер/ретрайлардын үлүшү, витриналардын сергектиги, скан-cost.
Агым: убакыт/билдирүүлөр боюнча артта, watermark, late-rate, мамлекеттик көлөмү/жыштык checkpoint, DLQ-коюм.
Бардык жерде: 'trace _ id', 'event _ id', схемалар/конвейерлердин версиялары.
Коопсуздук жана маалыматтар
PII/PCI - минималдаштыруу, at-rest/in-flight шифрлөө, схемаларда талааларды белгилөө ('x-pii').
Stream үчүн - state/checkpoint's коргоо, топик боюнча ACL.
GDPR/унутуу укугу: Stream - крипто-өчүрүү/проекцияларда редакция; менен - партияларды кайра эсептөө.
Өткөөл стратегиялар
Batch → Stream: окуяларды жарыялоо менен баштоо (Outbox/CDC), учурдагы жыйнакка тийбестен, реалдуу убакытта кичинекей витринаны көтөрүү.
Stream → Batch: отчеттуулук/текшерүү жана агымдык sinks боюнча жүктү азайтуу үчүн күнүмдүк топтомдорду кошуу.
Анти-үлгүлөрү
мода үчүн "Бардык Stream": кымбат жана реалдуу муктаждыктары жок кыйын.
"Бир гигант түнкү батч" <5 мүнөт.
бизнес-метрика үчүн processing убакыт колдонуу.
коомдук иш-чаралар катары чийки CDC: катуу байланыш, эволюция учурунда оору.
Синкте эч кандай демпотенттүүлүк жок → Кайра курууда кош эффекттер.
Тандоо тизмеси
- SLO сергектик: канча секунд/мүнөт/саат жол?
- Кирүү туруктуулугу: out-of-order/дубликаттары барбы?
- онлайн жооп/терезелер керек?
- Баасы: rantayim 24/7 vs "терезе тартиби боюнча".
- Оңдоо ыкмасы: retract/upsert же түнкү кайра эсептөө.
- Команда жана операциялык жетилгендик (обсервация, on-call).
- "так бир таасир" үчүн талаптар.
- PII/Retence/унутуу укугу.
Референттик үлгүлөр
Иштетүү дисплей (гибрид):- Stream: EDC → проекциялар (KV/Redis, OLTP) үчүн UI, демпотенттик upsert.
- Batch: nightly OLAP топтому, reconciliation, ML-Fich.
- Агым: сессия-терезелер, CEP-эрежелери, алерталар <1-5 б.
- Batch: моделдерди кайра даярдоо, оффлайн валидация.
- Агым: триггерлер, реалдуу убакыт сегменттери.
- Batch: эсептери, LTV моделдер, отчеттор.
FAQ
batch боюнча "дээрлик реалдуу убакыт" алууга болобу?
Ооба: микробатчи/триггер Jobs (ар бир 1-5 мүнөт) - компромисс, бирок эч кандай кыйынчылыктар терезе/late-events.
Бардык жерде Lambda ыкмасы керекпи?
Жок. Эгерде агым бардык милдеттерди жабат жана сиз replay кантип билебиз - Kappa узак жөнөкөй. Болбосо - гибрид.
Кантип баалоо керек?
compute + storage + ops. Stream үчүн "24/7" жана авариялык түндөрдүн баасын кошуңуз; Batch үчүн - маалыматтардын "кечиктирилген" баасы.
Жыйынтык
төмөн наркы, жөнөкөйлүгү жана мезгил-мезгили менен топтомдорду маанилүү болгондо, Batch тандоо; Агым - реактивдүүлүк жана сергектик критикалык болгондо. Иш жүзүндө гибрид жеңет: агым - онлайн жана сигналдар үчүн, батч - толук жана арзан тарыхый эсептөөлөр үчүн. Эң негизгиси - SLOну коюу, демпотенттикти/байкоону камсыз кылуу жана оңдоо жолун алдын ала долбоорлоо.