Window — cheksiz event oqimini vaqt, event soni yoki faollik chegarasi bo‘yicha cheklangan guruhlarga ajratish mexanizmidir. Stream processing operatori har window uchun count, sum, join yoki boshqa hisobni bajaradi. Window ta’rifi vaqt semantikasi, trigger, kech event va natijani yangilash qoidasi bilan birga ko‘rsatilmasa, “real-time” agregatning ma’nosi noaniq qoladi.
Vaqt oynalari
Tumbling window teng uzunlikdagi, o‘zaro kesishmaydigan intervallar yaratadi. Besh daqiqalik windowda 10:00–10:05 va 10:05–10:10 alohida bo‘ladi; har event bittasiga tushadi. Sliding window uzunlik va qadamga ega. Uzunlik o‘n daqiqa, qadam bir daqiqa bo‘lsa, event o‘ntagacha oynaga kirib, har daqiqada so‘nggi o‘n daqiqalik ko‘rsatkich yangilanadi.
Session window bir key uchun eventlar orasidagi inactivity gapdan foydalanadi. Foydalanuvchi harakatlari 30 daqiqadan ko‘p uzilsa yangi session boshlanadi. Sessionlar oldindan qat’iy vaqt chegarasiga ega emas va kech event ikki sessionni birlashtirishi mumkin. Global window barcha eventni bitta guruhga qo‘yadi, lekin trigger va state cleanup bo‘lmasa cheksiz o‘sadi.
Event time va processing time
Processing-time window event operatorga qachon kelganiga qaraydi. U tez va sodda, ammo qayta ijro yoki klaster yukida natija o‘zgarishi mumkin. Event-time window manba timestampidan foydalanadi, tartibsiz kelishni watermark orqali boshqaradi. Bir xil input va timestamp bilan qayta ishlash ko‘proq deterministik natija beradi.
Count window har N eventni guruhlaydi. U vaqtga bog‘liq emas: trafik sust bo‘lsa bitta window uzoq ochiq qoladi. Evictor yoki custom policy elementlarni boshqa shart bilan chiqarishi mumkin, ammo fault tolerance uchun state va determinism talablarini oshiradi.
Trigger va natija
Trigger window qachon hisob chiqarishini belgilaydi. Watermark window oxiridan o‘tganda event-time trigger ishlaydi. Early trigger har ma’lum processing vaqtida taxminiy natija yuborishi, late trigger esa kech eventdan keyin update berishi mumkin. Natija append, update yoki retract semantikasida sinkka uzatiladi.
Incremental aggregation har eventda accumulatorni yangilab, barcha recordni saqlamasligi mumkin. Median yoki murakkab top-N ko‘proq state talab qiladi. Sliding window har oynani boshidan hisoblamasdan pane yoki invertible aggregate orqali umumiy qismlarni qayta ishlatadi.
State va operatsiya
Window state kalitlar soni, windowlar ustma-ustligi va allowed latenessga ko‘ra o‘sadi. Checkpoint uni durable saqlaydi. Watermark sust partition sabab to‘xtasa, yopilmagan windowlar yig‘iladi. TTL noto‘g‘ri qisqa bo‘lsa valid late event yo‘qoladi, juda uzun bo‘lsa disk va recovery vaqti oshadi.
Monitoring open window soni, state baytlari, watermark lag, late event, trigger soni va sink update kechikishini ko‘rsatadi. Window uzunligi biznes savoliga mos bo‘lishi kerak: kalendar kun timezone va daylight saving qoidalariga ega, oddiy 24 soatlik interval bilan har doim teng emas.
Calendar window
“Har oy” oynasi qat’iy sekund uzunligiga ega emas. Oylar 28–31 kun, mahalliy kun esa daylight saving o‘zgarishida 23 yoki 25 soat bo‘lishi mumkin. Calendar-aware window timezone va kalendar qoidasi bilan chegaralarni hisoblaydi. UTCda agregatsiya qilib keyin mahalliy label qo‘yish biznes kunini ikki oynaga ajratishi mumkin. Reprocessing ayni timezone database versiyasini saqlashi kerak.
Join window
Interval join ikki event vaqti orasidagi ruxsat etilgan masofani belgilaydi. Keng interval ko‘proq match va state, tor interval yo‘qolgan bog‘lanish keltiradi. Bir event bir nechta mos record topsa cardinality va deduplication qoidasi aniq bo‘ladi.
Bog‘liq tushunchalar
Tumbling window, Sliding window, Session window, Event time, Watermark, Trigger, Stream processing