Datapipeline

En datapipeline er en række databehandlingstrin. Hvis dataene ikke er indlæst i dataplatformen i øjeblikket, indlæses de i begyndelsen af pipelinen. Derefter er der en række trin, hvor hvert trin leverer et output, som er input til det næste trin. Dette fortsætter, indtil pipelinen er færdig. I nogle tilfælde kan uafhængige trin køres parallelt.

Datapipelines består af tre nøgleelementer: en kilde, et eller flere behandlingstrin og en destination. I nogle datapipelines kan destinationen kaldes en sink. Datapipelines muliggør datastrømmen fra en applikation til et datawarehouse, fra en datasø til en analysedatabase eller f.eks. til et betalingsbehandlingssystem. Datapipelines kan også have den samme kilde og sink, således at pipelinen udelukkende handler om at ændre datasættet. Hver gang data behandles mellem punkt A og punkt B (eller punkt B, C og D), er der en datapipeline mellem disse punkter.

I takt med at organisationer søger at opbygge applikationer med små kodebaser, der tjener et meget specifikt formål (disse typer applikationer kaldes “microservices”), flytter de data mellem flere og flere applikationer, hvilket gør effektiviteten af datapipelines til en afgørende overvejelse i deres planlægning og udvikling. Data, der genereres i ét kildesystem eller én applikation, kan fodre flere datapipelines, og disse pipelines kan have flere andre pipelines eller applikationer, der er afhængige af deres output.

Tænk på en enkelt kommentar på sociale medier. Denne hændelse kan generere data til en rapport i realtid, der tæller omtaler på sociale medier, et program til analyse af følelser, der udsender et positivt, negativt eller neutralt resultat, eller et program, der viser hver enkelt omtale på et verdenskort. Selv om dataene i alle tilfælde stammer fra den samme kilde, er hver af disse applikationer bygget på unikke datapipelines, der skal gennemføres gnidningsløst, før slutbrugeren ser resultatet.

De almindelige trin i datapipelines omfatter datatransformation, forøgelse, berigelse, filtrering, gruppering, aggregering og kørsel af algoritmer mod disse data.

Hvad er en Big Data Pipeline?

Da mængden, variationen og hastigheden af data er steget dramatisk i de seneste år, har arkitekter og udviklere været nødt til at tilpasse sig til “big data”. Udtrykket “big data” antyder, at der er en enorm mængde, der skal håndteres. Denne datamængde kan åbne muligheder for anvendelsestilfælde som prædiktiv analyse, realtidsrapportering og varsling blandt mange eksempler.

Som mange komponenter i dataarkitekturen har datapipelines udviklet sig til at understøtte big data. Big data-pipelines er datapipelines, der er bygget til at rumme et eller flere af de tre karaktertræk ved big data. Hastigheden af big data gør det attraktivt at opbygge streaming datapipelines til big data. Så kan data opfanges og behandles i realtid, så der derefter kan ske en vis handling. Mængden af big data kræver, at datapipelines skal være skalerbare, da mængden kan være variabel over tid. I praksis vil der sandsynligvis være mange big data-hændelser, der forekommer samtidig eller meget tæt på hinanden, så big data-pipelinen skal kunne skaleres til at behandle betydelige datamængder samtidig. Variationen af big data kræver, at big data-pipelines skal kunne genkende og behandle data i mange forskellige formater – strukturerede, ustrukturerede og semistrukturerede.

Data Pipeline vs. ETL

ETL henviser til en specifik type datapipeline. ETL står for “extract, transform, load” (udtrække, transformere, indlæse). Det er processen med at flytte data fra en kilde, f.eks. en applikation, til en destination, som regel et datawarehouse. “Extract” henviser til at trække data ud af en kilde; “transform” handler om at ændre dataene, så de kan indlæses i destinationen, og “load” handler om at indsætte dataene i destinationen.

ETL er historisk set blevet brugt til batcharbejdsbelastninger, især i stor skala. Men en ny type af streaming ETL-værktøjer er ved at dukke op som en del af pipelinen til realtidsstreaming af hændelsesdata.

Datapipelineovervejelser

Datapipelinearkitekturer kræver mange overvejelser. Har din pipeline f.eks. brug for at håndtere streaming data? Hvilken hastighed af data forventer du? Hvor meget og hvilke typer behandling skal der ske i datapipelinen? Bliver dataene genereret i skyen eller på stedet, og hvor skal de sendes hen? Har du planer om at opbygge pipelinen med mikrotjenester? Er der specifikke teknologier, som dit team allerede er velbevandret i at programmere og vedligeholde?

Arkitektureksempler

Datapipelines kan være arkitektonisk opbygget på flere forskellige måder. Et almindeligt eksempel er en batchbaseret datapipeline. I det eksempel har du måske et program som f.eks. et kassesystem, der genererer et stort antal datapunkter, som du skal skubbe til et datawarehouse og en analysedatabase. Her er et eksempel på, hvordan det ville se ud:

Eksempel på datapipeline
Et grundlæggende eksempel på en datapipeline.

Et andet eksempel er en streaming datapipeline. I en streaming datapipeline vil data fra salgsstedssystemet blive behandlet, efterhånden som de genereres. Streambehandlingsmotoren kan sende output fra pipelinen til datalagre, marketingapplikationer og CRM’er blandt andre applikationer samt tilbage til selve salgssystemet.

Streaming datapipeline-diagram
Dette diagram modellerer en streaming datapipeline. Datastrømmen administreres af stream processing-rammen, hvor den kan behandles og leveres til apps og/eller løsninger.

Et tredje eksempel på en datapipeline er Lambda-arkitekturen, som kombinerer batch- og streaming-pipelines i én arkitektur. Lambda-arkitekturen er populær i big data-miljøer, fordi den gør det muligt for udviklere at tage højde for både streaming-brugstilfælde i realtid og historiske batch-analyser. Et vigtigt aspekt af denne arkitektur er, at den tilskynder til at lagre data i råformat, så du løbende kan køre nye datapipelines for at rette eventuelle kodefejl i tidligere pipelines eller for at oprette nye datadestinationer, der muliggør nye typer forespørgsler.

Lambda arkitekturdiagram
Lambdaarkitekturen tager højde for både en traditionel batchdatapipeline og en realtidsdatastreaming-pipeline. Den har også et serveringslag, der reagerer på forespørgsler.

Relaterede emner

Streaming ETL

Lambda-arkitektur

Stream Processing

Skriv en kommentar