Trek
Početna
Rubrike
Nalog
Trek
podrska@gosimple.space © 2026 Trek · gosimple.agency
Igre
Trek

Kako rešiti problem kompletnosti podataka u striming sistemima

Prelazak sa grupne obrade na striming donosi brže podatke, ali i gubi jasne granice završetka procesa. Pinterest je razvio inovativan mehanizam zasnovan na vremenu događaja koji omogućava nizvodnim sistemima da znaju kada je particija spremna za čitanje. Ovaj pristup uspešno balansira između brzine

Kratak odgovor

Pinterest je rešio problem kompletnosti podataka u striming arhitekturi uvođenjem vodenog žiga zasnovanog na vremenu događaja unutar metapodataka Apache Iceberg tabela.

Kako rešiti problem kompletnosti podataka u striming sistemima

Izazov prelaska sa grupne na striming obradu

Tradicionalni sistemi za obradu podataka dugo su se oslanjali na grupnu obradu gde se podaci prikupljaju tokom određenog perioda i odjednom upisuju. Za nizvodne sisteme koji analiziraju te podatke, trenutak završetka tog posla bio je jasan znak da su svi podaci spremni za analizu. Kada se grupni posao završi, tabela je kompletna i može se bezbedno čitati bez rizika da će se pojaviti novi podaci za taj vremenski period.

Savremeno poslovanje ipak zahteva informacije u realnom vremenu, zbog čega kompanije sve više prelaze na striming arhitekture gde se promene neprekidno prenose i upisuju. U ovom novom okruženju, podaci pristižu stalno, u malim paketima, što drastično smanjuje vreme kašnjenja. Ipak, ova prednost donosi i ozbiljan inženjerski izazov jer više ne postoji jedan veliki grupni posao koji se završava. Nizvodni sistemi gube jasan signal koji im govori kada mogu bezbedno da pokrenu svoje analitičke procese nad određenim vremenskim segmentom.

Anatomija particionisanja i pojam finalizacije

Da bi se razumelo zašto je ovaj problem kritičan, potrebno je definisati koncept particionisanja podataka. Particionisanje je tehnika organizovanja velikih tabela u manje, upravljive delove, najčešće na osnovu vremenskog žiga. Na primer, svi podaci koji su nastali između 13:00 i 14:00 sati smeštaju se u istu particiju. To omogućava analitičkim upitima da čitaju samo onaj deo tabele koji im je potreban, umesto da skeniraju stotine terabajta kroz celu bazu podataka, čime se štede resursi i ubrzava analiza.

Fizička implementacija particionisanja zavisi od tehnologije koja se koristi u sistemu. Stariji sistemi, poput Apache Hive platforme, koriste eksplicitno particionisanje gde svaka particija odgovara posebnom direktorijumu na sistemu za skladištenje podataka. Noviji formati tabela, kao što je Apache Iceberg, koriste skriveno particionisanje gde se informacije čuvaju u sloju metapodataka. Kod ovog naprednijeg pristupa, korisnici ne moraju da poznaju fizički raspored datoteka da bi efikasno pretraživali podatke.

Bez obzira na tehnologiju, ključno pitanje za svaki nizvodni proces jeste kada je određena particija finalizovana. Finalizacija označava trenutak u kojem je verovatnoća dolaska novih podataka za taj vremenski period izuzetno niska. Ako se analitički posao pokrene prerano, dok podaci još uvek pristižu, propustiće se kasniji unosi, što dovodi do netačnih poslovnih izveštaja i pogrešnih zaključaka.

Arhitektura novog rešenja kompanije Pinterest

Inženjeri kompanije Pinterest suočili su se sa ovim problemom prilikom migracije svojih sistema na novu generaciju platforme za unos podataka. Njihova nova arhitektura se oslanja na tehnologije Apache Kafka, Apache Flink, Apache Spark i Apache Iceberg. Unutar ovog sistema, Flink poslovi neprekidno upisuju promene iz izvornih baza podataka u Iceberg tabele. Kako bi rešili problem kompletnosti, inženjeri su uveli mehanizam finalizacije particija direktno u striming sloj.

Arhitektura ovog rešenja ne menja osnovni tok podataka, već dodaje pametno upravljanje metapodacima. Dok Flink upisuje podatke, on istovremeno prati napredak vremena događaja i te informacije upisuje u Iceberg tabelu u obliku oznaka o finalizaciji. Nizvodni poslovi zatim koriste senzore koji proveravaju ove oznake pre nego što započnu obradu.

Ceo proces se odvija kroz nekoliko koraka koji osiguravaju tačnost i pouzdanost. Prvo se iz svakog zapisa izdvaja vreme kada je promena stvarno nastala na izvoru. Zatim se tokom svakog kontrolnog prozora prikupljaju statistički podaci o tim vremenima i upisuju u rezime snimka unutar Iceberg tabele. Na kraju, algoritam pretvara ove sirove statistike u jasan vodeni žig koji definiše do kog trenutka se particija smatra kompletnom.

Od sirovih statistika do pouzdanog vodenog žiga

Jedan od najvećih izazova u ovom procesu jeste kako efikasno pratiti i čuvati statistiku o milionima zapisa bez opterećivanja sistema. Pinterest je ovaj problem rešio korišćenjem t-digest algoritma. To je kompaktna matematička struktura koja omogućava aproksimaciju raspodele podataka u veoma malom, fiksnom prostoru. Bez obzira na to da li je tokom jednog kontrolnog prozora obrađeno hiljadu ili nekoliko miliona zapisa, statistički rezime zauzima svega nekoliko stotina bajtova.

Ovi rezimei se čuvaju direktno u metapodacima svakog snimka tabele, što eliminiše potrebu za spoljnim bazama podataka i garantuje da su podaci o vremenu uvek sinhronizovani sa samim zapisima. Nakon svakog uspešnog upisa, sistem analizira istoriju nedavnih snimaka i izračunava vodeni žig. Podrazumevani algoritam uzima minimalno vreme događaja zabeleženo u poslednjih nekoliko upisa i zaokružuje ga na prethodni pun sat.

Ovaj vodeni žig se čuva kao svojstvo same Iceberg tabele i dizajniran je tako da se može kretati isključivo unapred. Čak i ako se pojave zakasneli podaci koji bi teoretski povukli vodeni žig unazad, sistem zadržava trenutnu vrednost i šalje upozorenje korisnicima. Na taj način se garantuje stabilnost nizvodnih procesa koji se oslanjaju na informaciju da je određeni sat jednom za svagda završen.

Proširivi konektori kao temelj implementacije

Da bi se ova logika uspešno primenila na hiljade različitih cevovoda podataka, inženjeri su morali da kreiraju fleksibilno i proširivo rešenje. Standardni Flink-to-Iceberg konektor nije imao mogućnosti potrebne za prikupljanje metrika unutar upisivača i izvršavanje prilagođene logike nakon upisa. Zbog toga su uvedene dve ključne tačke proširenja, a to su akumulatori i procesori upisa.

Akumulatori rade unutar svakog pojedinačnog podzadatka za upisivanje podataka. Oni prate svaki zapis koji prođe kroz sistem i ažuriraju lokalne statistike o vremenu događaja. Kada dođe vreme za kontrolnu tačku, ovi lokalni podaci se šalju glavnom koordinatoru koji ih spaja u jedan globalni rezime. Pošto podzadaci mogu završiti obradu različitim redosledom, operacija spajanja je dizajnirana tako da redosled pristizanja ne utiče na krajnji rezultat.

Procesor upisa stupa na scenu neposredno pre i nakon što se podaci trajno upišu u tabelu. Pre samog upisa, on može dodati dodatna svojstva ili prekinuti proces ako uoči nepravilnosti. Nakon uspešnog upisa, procesor čita spojene statistike iz akumulatora, pokreće algoritam za izračunavanje vodenog žiga i ažurira svojstva tabele. Ako nema konfigurisanih proširenja, sistem automatski koristi standardne operatore, što znači da nema nikakvog dodatnog opterećenja za cevovode koji ne koriste ovu funkcionalnost.

Upravljanje kompromisom između brzine i tačnosti

U svetu velikih podataka, uvek postoji napetost između brzine pristizanja informacija i njihove kompletne tačnosti. Različiti poslovni procesi imaju različite zahteve u pogledu ovog kompromisa. Na primer, finansijski izveštaji zahtevaju apsolutnu tačnost i ne smeju propustiti nijedan jedini zakasneli zapis, dok su marketinškim analizama često važniji brzi trendovi, čak i ako se zanemari mali procenat podataka koji kasne.

Zahvaljujući tome što se u metapodacima čuva kompletna raspodela vremena događaja, a ne samo jedna fiksna vrednost, ovaj sistem omogućava svakom timu da prilagodi politiku finalizacije svojim potrebama. Konzervativni pristup čeka da svi podaci budu sigurno upisani pre nego što označi particiju kao završenu. Sa druge strane, timovi kojima je važna svežina podataka mogu konfigurisati sistem da koristi određeni percentil, na primer 99. ili 95. percentil, čime svesno prihvataju rizik da će zanemarljiv broj ekstremno zakasnelih zapisa stići nakon što je particija proglašena spremnom.

Ova fleksibilnost čini rešenje primenjivim daleko izvan okvira unosa baza podataka. Bilo koji striming cevovod koji koristi Flink i Iceberg može usvojiti ovaj mehanizam jednostavnim definisanjem načina na koji se vreme događaja izdvaja iz zapisa. To otvara vrata za standardizaciju upravljanja kompletnošću podataka na nivou cele organizacije, donoseći red i predvidljivost u svet kontinualnih tokova informacija.

Zaključak i praktične smernice

Prelazak na striming sisteme donosi ogromne prednosti u brzini donošenja odluka, ali zahteva i promenu načina na koji razmišljamo o granicama podataka. Rešenje koje je razvio Pinterest pokazuje da se problem kompletnosti može elegantno rešiti unutar same infrastrukture, bez potrebe za uvođenjem komplikovanih spoljnih servisa. Ključ uspeha leži u pametnom korišćenju metapodataka i proširivanju postojećih alata za obradu podataka.

Za inženjere i lidere koji razvijaju moderne platforme za podatke u regionu, ovo rešenje nudi važnu lekciju o važnosti metapodataka. Umesto da se oslanjaju na spoljne baze podataka za praćenje stanja cevovoda, korišćenje formata kao što je Apache Iceberg omogućava da sami podaci nose informacije o svojoj kompletnosti. Implementacija sličnih mehanizama može značajno smanjiti troškove infrastrukture i povećati pouzdanost analitičkih sistema u svakoj organizaciji koja teži donošenju odluka na osnovu podataka u realnom vremenu.

Izvor: Pinterest Engineering · Fotografija: Pexels / Freepik (ilustracija)

Imaš pitanje za autora?

Pošalji ga direktno autoru (Trek). Odgovor stiže na tvoj imejl.

67 pregleda
Trek
Autor

Trek

0 pratilaca

Trek je poslovni magazin i platforma za autore: startapi, firme, inovacije, ekonomija, marketing, propisi i karijera. Pod ovim potpisom izlaze tekstovi redakcije, vodiči i analize koje ne potpisuje jedno ime.

Izvori

  1. Pinterest Engineering
Prijavi ovaj tekst redakciji
Prijave pregleda redakcija. Zloupotreba obrasca vodi u blokadu.

Komentari (0)

Budi prvi koji komentariše ovaj članak.

Ostavi komentar

Imaš nalog? Prijavi se ili nastavi preko Google-a, ili komentariši kao gost:

Stigao si do kraja ovog lanca čitanja.

Otkrij još tekstova