Preskoči na sadržaj
Na tamnoj mreži gust snop tankih tirkiznih okomitih crtica; iz njega izlazi tačka od koje ide jedna ravna vodoravna linija, a desno stoje tri pravougaonika u nizu — dva samo obrisana, posljednji ispunjen.

„Rub je jedino mjesto gdje se arhitektura stvarno testira.“

Upisi, živo čitanje i godina istorije — izaberi troje

Dva miliona upisa dnevno, čitano živo u kontrolnoj ploči klijenta, sa godišnjim izvještajem koji se vraća ispod sekunde — za naloge sa devet stotina oglasa.

Kontaktirajte nas
Američki marketplace za usluge kamionima · tehničko vodstvo · tim od 12 · 2022–2026 · isti angažman
2M+
upisa dnevno
< 1 s
godišnji izvještaj na 900+ oglasa
365
pročitanih redova, ne 700 miliona
Ukratko

Projektovali smo i izgradili analitički sloj za oglasni marketplace. Primao je preko dva miliona upisa dnevno, hranio kontrolnu ploču koja se osvježavala živo, i odgovarao na punu godinu istorije u manje od sekunde.

Te tri osobine se inače međusobno isključuju. Baza brza u primanju upisa spora je na složenim upitima. Godina sirovih podataka pri tom tempu su stotine miliona redova. Rješenje nije bila brža baza — bilo je odbijanje da jedna baza radi sva tri posla.

Problem

Na oglasnoj platformi klijent ne kupuje softver, kupuje dokaz da je bio vidljiv. Kad servis za popravke plati oglas, jedino pitanje koje pri obnovi znači jeste koliko ga je ljudi vidjelo i koliko je pozvalo. To znači da analitika jeste opravdanje fakture.

Ograničenje

Tri stvari morale su biti istinite istovremeno: primati upise pri punom obimu, čitati živo i agregirati godinu brzo. Svaka pojedinačno je lahka. I isključuje kupovinu gotovog rješenja — opšta web analitika mjeri saobraćaj ka sajtu, ne vrijednost dostavljenu jednom oglašivaču, i ne može tu brojku vratiti u njegov nalog.

Šta smo uradili

  1. Vremenska baza za upise, namjerno sa malim indeksom

    Identifikatori — oglas, korisnik, uređaj — išli su u polja, ne u tagove. U vremenskoj bazi tagovi su indeksirani a polja nisu; stavljanje ID-a oglasa u tag znači da svaki novi oglas stvara novu seriju i indeks se na kraju uguši. To je najčešći način na koji ove instalacije umiru.

    Cijena: nema grupisanja po oglasu
  2. Dnevni rollup u relacijsku bazu

    Sirovi događaji žive sedam dana, sa dnevnim izvozom u objektno skladište kao arhivom. Dnevni sažetak po oglasu slijeće u relacijsku bazu, i to je ono što kontrolna ploča i fakture pitaju. Godišnji izvještaj zato nikad ne dira sirovi red.

    365 redova po oglasu
  3. Mjereno na najgorem slučaju, ne na prosjeku

    Ispod sekunde drži za naloge sa preko 900 oglasa — godina dnevnih sažetaka za devet stotina oglasa je oko 330.000 redova agregiranih u jednom upitu. „Ispod sekunde“ ne znači ništa ako nalog ima tri oglasa; rub je jedino mjesto gdje se arhitektura stvarno testira.

    330.000 redova u jednom upitu
  4. Ukupne i jedinstvene brojke u odvojenim kantama

    Jedinstveni pregledi ključevani po sesiji i po URL-u stranice, da neko ko traži u dva grada ne bude prebrojan kao jedan pregled — tražio je dvije različite stvari. Ukupne su veća brojka i bolje izgledaju; jedinstvene su ono što oglašivaču stvarno kaže koliko ga je različitih ljudi vidjelo. Držanje obje znači da nema šta skrivati.

    Nema šta skrivati
  5. Botovi filtrirani na tri sloja

    Firewall, poznate adrese, user agent. Na oglasnoj platformi naduta brojka pregleda nije problem tačnosti, nego problem povjerenja. Oglašivač koji vidi pet stotina pregleda i nijedan poziv prestane vjerovati brojci, a onda prestane vjerovati i fakturi.

    Povjerenje, ne tačnost
TOK PODATAKA — TRI POSLA, TRI SLOJA
Jedan tok događaja ulazi u vremensku bazu, koja se cijepa na dvije grane: websocket sloj vodi u živu ploču, a dnevni rollup u godišnji izvještaj ispod sekunde.Sajt, aplikacija, ploča2M događaja dnevnoVremenska bazamali indeks, sirovo 7 danaWebsocket slojsamo svježi podaciDnevni rollupjedan red po oglasuŽiva pločačita kako se upisujeGodišnji izvještajispod jedne sekunde365 redova, ne 700Mpo oglasu, po godini
Godišnji izvještaj nikad ne dira sirovi red.
TRI POSLA KOJI SE MEĐUSOBNO ISKLJUČUJU
Primanje upisa vremenska baza

Dva miliona upisa dnevno traži bazu projektovanu za upis. Cijena je što je spora na složenim upitima, pa se posao čitanja ne smije ostaviti njoj. Identifikatori idu u polja a ne tagove: tag po oglasu znači nova serija po oglasu, i indeks se na kraju uguši.

Rezultat

  • Preko 2 miliona upisa dnevno
  • Živo čitanje u kontrolnoj ploči oglašivača
  • Godišnji izvještaj ispod sekunde na 900+ oglasa
  • Isti podaci hrane godišnji izvještaj koji ide pred obnovu
Za kontekst — zašto ispod sekunde
0,1 s
djeluje trenutno
1 s
granica neprekinutog toka misli
10 s
granica zadržane pažnje

Nielsenovi pragovi odziva, nepromijenjeni od 1993. Ispod sekunde nije proizvoljna meta — to je granica ispod koje korisnik ne izgubi nit.

Šta bismo uradili drugačije

Sedam dana zadržavanja sirovih podataka izabrano je rano i nikad revidirano. Skoro sigurno je bilo ispravno, ali nikad nismo provjerili šta smo time izgubili — je li ikome trebalo ponovno obraditi prozor duži od sedmice, i šta bi koštalo zadržati trideset dana. Izabrali smo broj i krenuli dalje.

Srodno
Četiri smjene bez prekida, tehničko vodstvoAngažman unutar kojeg je ovaj sloj nastao.Izvještaj od 15 minuta do 0,2 sIsti potez — preračunaj unaprijed — pod nepromjenjivim sučeljem.
Svih 18 projekata
  • InfluxDB
  • MySQL
  • WebSockets
  • Node.js
  • AWS

Jedna baza radi tri posla?

Kontaktirajte nas

Sistemi koji ne smiju stati — od arhitekture do produkcije.

© 2026 Micro Tech, Sarajevo