
„Izvještaj se više ne naručuje. Otvara se.“
ThoughtSpot izvještaj od 15 minuta sada se otvara za 0,2 sekunde
Skladište podataka ispod sučelja koje se nije smjelo mijenjati — bez ijedne izmjene upita ili sheme, na preko 200 miliona proizvoda.
Američki dobavljač maloprodajnim lancima drži preko 200 miliona artikala u skladištu podataka i čita ih kroz ThoughtSpot. Izvještaj kojem je trebalo petnaest minuta danas se otvara za 0,2 sekunde, a drugi, od četiri minute, za 0,1.
Ograničenje je bilo dvostruko: upite generiše BI alat kupca i ne mogu se mijenjati, a shema se ne smije dirati jer o njoj ovise sačuvani izvještaji koje kupac koristi svaki dan. Ubrzanje je moralo doći ispod nepromijenjene površine — kroz distribution i sort ključeve, materialized viewove koji se osvježavaju dnevno, i pretakanje izvoza u objektnu pohranu.
Kupac nije promijenio ništa. Sačuvani izvještaji radili su isti dan, istim upitima.
Problem
Ograničenje
Šta smo uradili
Redshift — jer klijent ionako seli sve na AWS
Izbor skladišta ne po listi mogućnosti nego po pravcu klijenta. Podaci iz izvornog sistema stižu kroz poslove izvoza na S3, odakle se upisuju u skladište.
200M+ proizvodaShema netaknuta — radimo ispod nje
Distribution i sort ključevi birani prema upitima koje ThoughtSpot stvarno generiše, ne prema pretpostavkama. Sačuvani izvještaji kupaca rade isti dan.
Nula izmjena na strani kupcaNajteži izvještaji preračunati unaprijed
Inkrementalno osvježivi materialized viewovi sa zavisnim viewovima, dnevno osvježavanje i validaciona skripta koja provjerava da se predizračunato ne razilazi od izvornog.
15 min → 0,2 s
BI alat kupaca sam generiše SQL — nijedan upit nismo smjeli mijenjati. Podaci iz izvornog sistema stižu izvoznim poslovima na S3, odakle se pune u skladište.
Rezultat
Izvještaj od petnaest minuta bio je devedeset puta iznad prve granice. Sada je unutar druge.
Šta bismo uradili drugačije
Izmjerili bismo više izvještaja. Imamo dva mjerenja i oba su dramatična, ali dvadeset mjerenja bi pokazalo raspodjelu — gdje ubrzanje radi, a gdje mu je granica.
Materialized viewove bismo od početka vezali za praćenje osvježavanja. Dnevni ciklus je dovoljan za ovaj slučaj, ali kad se jednom promaši, greška se vidi u izvještaju, a ne u logu.
- Amazon Redshift
- S3
- MySQL
- ThoughtSpot
- Materialized views
- Sort / dist keys