Arhitektūra

ClickHouse datu noliktavas izveide no gadiem uzkrātiem vēsturiskiem datiem

Lielākajai daļai uzņēmumu ir gadiem uzkrāta darījumu vēsture, kas praktiski nav izmantojama vaicājumiem. Stāstām, kā izstrādājam shēmu un datu ielādes (backfill) stratēģiju, lai šos datus atkal padarītu noderīgus.

2026. gada 2. aprīlis · 8 min lasīšanai · AG Data komanda

Lielākajai daļai uzņēmumu ar kaut cik ilgu darbības vēsturi ir uzkrāti gadiem ilgi darījumu dati, kas praktiski nav izmantojami vaicājumiem — tie ir ieslodzīti OLTP datubāzē, kas aizrijas ar analītiskiem vaicājumiem, vai vēl sliktāk, guļ aukstās rezerves kopijās, ko neviens negrib atjaunot. Padarīt šo vēsturi par kaut ko, ko datu komanda tiešām var izmantot, vispirms ir dizaina jautājums un tikai pēc tam — migrācijas jautājums.

Kāpēc tieši ClickHouse

Kolonnu veida glabāšana un agresīva saspiešana padara ClickHouse par lielisku risinājumu tieši šāda veida slodzei: lieli apjomi vēsturisku, gandrīz tikai pievienojamu (append-only) datu, kurus vaicā ar agregācijām, nevis atsevišķu rindu meklējumiem. Vaicājumi, kas rindu orientētā OLTP datubāzē pie miljardiem rindu ilgtu minūtēm, kolonnu dzinējam pārveidotiem datiem parasti izpildās dažu sekunžu laikā — ar nosacījumu, ka shēma tiešām ir veidota atbilstoši tam, kā dati tiek vaicāti, nevis vienkārši kopēta no avota shēmas.

Pieeja, kas tiešām darbojas

  1. Sāc ar to, kas tiešām tiek vaicāts. Noliktavā ievietot pilnīgi visu bez izšķiršanas ir lēnāk jāveido un grūtāk jāvalidē nekā noliktavot to, par ko biznesam tiešām jāspēj uzdot jautājumus. Pirms shēmas izstrādes parunājies ar cilvēkiem, kas šos vaicājumus veiks.
  2. Projektē pēc vaicājumu modeļiem, nevis pēc avota shēmas. OLTP shēma tika normalizēta darījumu integritātes, nevis analītiskā ātruma labad. ClickHouse noliktava parasti tiek apzināti denormalizēta, un kārtošanas atslēgas (ClickHouse ORDER BY) izvēle ietekmē vaicājumu veiktspēju tikpat lielā mērā, cik jebkura indeksa izvēle tradicionālā datubāzē.
  3. Sadali partīcijās pēc laika datiem, kuriem ir dabiska laika dimensija — tas nodrošina ātru izpildi vaicājumiem, kas skar tikai nesenus datus, un padara dzīves cikla pārvaldību (veco partīciju arhivēšanu vai dzēšanu) par vienkāršu darbību, nevis par visas tabulas operāciju.
  4. Ielādē datus (backfill) pa daļām un padari to atsākamu. Desmit gadu vēsturi nevar pārvietot vienā transakcijā. Sadali to partijās, fiksē progresu ar kontrolpunktiem un validē katru partiju pret avotu, pirms ķeries pie nākamās — ne tikai pēc rindu skaita, bet ar saskaņotām summām un izlases veida rindu līmeņa salīdzinājumiem.
  5. Izlem, cik svaigiem jābūt datiem noliktavā turpmāk. Pakešu (batch) ETL pēc grafika ir vienkāršāk izveidot un uzturēt; change-data-capture straumēšana ir sarežģītāka, taču notur noliktavu tuvu reālajam laikam. Izvēlies, pamatojoties uz to, ko tiešām prasa analītika, nevis pēc noklusējuma.

Vienā no nesenajiem projektiem šī pieeja pārvērta vairāk nekā desmit gadu loģistikas uzņēmuma vēsturiskos ierakstus — iepriekš izkaisītus pa vairākām sistēmām tā, ka jebkas vairāk par pamata meklēšanu bija nepraktisks — vienotā noliktavā, kurā analītiķi varēja vaicāt tieši, ar atbildes laikiem, kas pietiekami ātri interaktīviem informācijas paneļiem, nevis nakts pakešu atskaitēm.

Kļūdas, kas parādās vēlāk, nevis uzreiz

Galvenās atziņas

Arhitektūra ClickHouse Analītika Datu noliktava
Sadarbojies ar mums

Vai jums ir gadiem uzkrāti dati, ko neviens nevar izvaicāt?

Mēs jau esam pārvērtuši desmit gadu nepieejamus vēsturiskus ierakstus ātrā, centralizētā analītikas noliktavā. Parunāsim, kas jūsu gadījumā tiešām ir vērts noliktavot.

Sazināties Vairāk emuāra rakstu