Hva er en datapipeline?

Av Weapp · Oppdatert

En datapipeline er den automatiserte kjeden som kontinuerlig flytter data fra en kilde til et mål: ETL satt i drift, etter en tidsplan eller styrt av hendelser. Der ETL beskriver mønsteret, er pipelinen maskineriet som kjører det om og om igjen. Den kan behandle data i batch eller som en strøm og trenger overvåking som slår alarm når flyten stopper.

Datapipeline er et begrep som ofte nevnes i samme åndedrag som ETL og datavarehus, og som like ofte blandes sammen med dem. Likevel er det pipelinen som avgjør om dere faktisk får dataene frem, i tide og i god stand. Her går vi gjennom hva en datapipeline er, hvordan den forholder seg til ETL, og hvorfor driften av den er minst like viktig som å bygge den.

Hva en datapipeline er

En datapipeline er den automatiserte kjeden som kontinuerlig flytter data fra en kilde til et mål. Den henter data der de oppstår, kjører dem gjennom nødvendige behandlingssteg og leverer dem til riktig sted. Det skjer om og om igjen uten at noen trenger å starte prosessen for hånd hver gang.

Bildet ligger i navnet: en rørledning. Akkurat som en fysisk ledning frakter vann fra kilde til kran, fører datapipelinen data fra kildesystemer til analysemiljøet i en jevn strøm. Den startes enten etter en tidsplan (for eksempel hver natt) eller av en hendelse (så snart nye data dukker opp).

Poenget er automatiseringen og kontinuiteten. En datapipeline er ikke en engangsflytting, men en flyt satt i permanent drift.

Forholdet til ETL

Datapipeline og ETL henger tett sammen, og å skille mellom dem gjør begge tydeligere. ETL er mønsteret: de tre stegene hente ut, transformere og laste inn, som beskriver hva som gjøres med dataene underveis. Datapipelinen er maskineriet som kjører det mønsteret automatisk og gjentatte ganger.

Man kan si at ETL er oppskriften, og at pipelinen er kjøkkenet som lager retten hver dag uten at kokken trenger å stå der. En pipeline utfører ofte nettopp ETL-stegene, men gjør dem til en løpende, produksjonssatt prosess i stedet for en manuell øvelse. Det er forskjellen på å beskrive foredlingen av data og faktisk å ha et anlegg som gjør den døgnet rundt.

Batch eller strømming

Datapipelines jobber i bunn og grunn på to måter, og valget mellom dem avhenger av hvor ferske dataene må være.

En batchpipeline samler opp data og behandler dem i puljer på bestemte tidspunkter. Et vanlig opplegg er å kjøre alt én gang per natt: Dagens ordrer, dagens transaksjoner og dagens logger behandles i én samlet omgang. Det passer når informasjonen ikke trenger å være oppdatert minutt for minutt. En salgsrapport som oppdateres hver morgen, er god nok.

En strømmende pipeline behandler i stedet hver hendelse så godt som med en gang den inntreffer, i en uavbrutt flyt. Det passer når dataene må være aktuelle i nær sanntid: en alarm som skal gå umiddelbart, et dashbord som skal vise situasjonen akkurat nå, en svindelkontroll som ikke kan vente til natten.

Et konkret scenario

En nettbutikk har to behov med ulike krav til hvor ferske dataene må være. Den daglige salgsrapporten til ledelsen trenger ikke å være mer oppdatert enn til morgenmøtet. Der holder det med en batchpipeline som hver natt samler døgnets ordrer og laster dem inn i datavarehuset.

Men lagerbeholdningen som vises i nettbutikken, må stemme i sanntid, ellers selges varer som allerede er utsolgt. Der bygges det i stedet en strømmende pipeline som oppdaterer beholdningen i samme øyeblikk som en vare kjøpes. Samme nettbutikk, samme slags data, men to ulike pipelines fordi kravene til hvor ferske dataene skal være, er forskjellige.

Driftsaspektet: overvåking og alarmer

Her ligger innsikten som skiller et fungerende datamiljø fra et skjørt. En datapipeline kjører automatisk, ofte uten at noen ser på den, og nettopp derfor er den farlig når den stopper i det stille.

Stopper flyten, uansett årsak (en kilde som slutter å svare, et steg som feiler, et format som er endret), slutter ferske data å komme frem. Uten overvåking kan det pågå i dagevis før noen lurer på hvorfor rapportene ser gamle ut, eller hvorfor beholdningen ikke stemmer. Da har skaden allerede skjedd.

Derfor hører overvåking og alarmer til selve pipelinen, ikke til noe man legger til etterpå:

  • Overvåking som holder øye med at flyten faktisk går, og at data kommer frem som forventet.
  • Alarmer som sier fra med en gang noe stopper eller ser feil ut slik at noen kan gripe inn mens problemet fortsatt er lite.

En pipeline uten overvåking er en rørledning uten trykkmåler: Den fungerer helt til den ikke gjør det, og da merkes det for sent.

Slik forholder du deg til det

Når dere bygger et datamiljø, bør dere tenke på pipelinen som en tjeneste i drift som må følges opp, ikke som et prosjekt som blir «ferdig». Spør hvordan flyten overvåkes, og hva som skjer når den stopper, for det avgjør om dere kan stole på dataene over tid. Vil dere ha en dataflyt som holder i drift og slår alarm i tide, tar vi i Weapp gjerne med den delen i systemutviklingen fra begynnelsen.

Ofte stilte spørsmål

Hva er forskjellen på en datapipeline og ETL?

ETL er mønsteret: de tre stegene hente ut, transformere og laste inn. En datapipeline er den automatiserte kjeden som setter mønsteret i drift og kjører det gjentatte ganger, etter en tidsplan eller styrt av hendelser. Grovt sagt: ETL beskriver hva som gjøres med dataene, pipelinen er maskineriet som utfører det gang på gang uten at noen starter det for hånd.

Hva er forskjellen på batch og strømming?

En batchpipeline samler opp data og behandler dem i puljer på bestemte tidspunkter, for eksempel hver natt. En strømmende pipeline behandler hver hendelse så godt som med en gang den inntreffer, i en kontinuerlig flyt. Batch passer når det ikke er kritisk med ferske data; strømming passer når informasjonen må være aktuell i nær sanntid.

Hvorfor trenger en datapipeline overvåking?

Fordi den kjører automatisk, ofte uten at noen følger med. Stopper flyten (en kilde svarer ikke, et steg feiler), slutter ferske data å komme frem, og det kan pågå ubemerket til noen lurer på hvorfor rapportene er gamle. Overvåking med alarmer gjør at dere får vite det med en gang flyten svikter, i stedet for å oppdage det for sent.

Hva skjer hvis en pipeline går i stykker?

Data slutter å flyte til målet, så rapporter, dashbord og alt annet som bygger på ferske data, blir utdaterte eller ufullstendige. Uten overvåking merkes det ofte ikke før noen reagerer på rare eller gamle tall. Med alarmer og rutiner for å kjøre flyten på nytt kan et stopp fanges opp og rettes før det rekker å gjøre skade.

Er en datapipeline det samme som et datavarehus?

Nei, de er ulike deler som virker sammen. Datavarehuset er stedet der data lagres og analyseres. Datapipelinen er rørledningen som fører data dit, kontinuerlig og automatisk. Pipelinen fyller varehuset; varehuset oppbevarer og gjør tilgjengelig det pipelinen leverer. Man trenger ofte begge deler for at et analysemiljø skal fungere.