En datapipeline är en serie databehandlingssteg. Om data för närvarande inte är inlästa i dataplattformen tas de in i början av pipelinen. Därefter följer en serie steg där varje steg ger ett resultat som är indata till nästa steg. Detta fortsätter tills pipelinen är klar. I vissa fall kan oberoende steg köras parallellt.
Datapipelines består av tre nyckelelement: en källa, ett eller flera bearbetningssteg och en destination. I vissa datarörledningar kan destinationen kallas för en sänka. Datapipelines möjliggör flödet av data från en applikation till ett datalager, från en datasjö till en analysdatabas eller till exempel till ett betalningshanteringssystem. Data pipelines kan också ha samma källa och sänka, så att pipelinen enbart handlar om att ändra datamängden. Varje gång data behandlas mellan punkt A och punkt B (eller punkterna B, C och D) finns det en datapipeline mellan dessa punkter.
I takt med att organisationer strävar efter att bygga tillämpningar med små kodbaser som tjänar ett mycket specifikt syfte (dessa typer av tillämpningar kallas ”mikrotjänster”), flyttar de data mellan allt fler tillämpningar, vilket gör att datapipelineernas effektivitet blir ett kritiskt övervägande i deras planering och utveckling. Data som genereras i ett källsystem eller en applikation kan ge matning till flera datapipelines, och dessa pipelines kan ha flera andra pipelines eller applikationer som är beroende av deras utdata.
Tänk på en enda kommentar på sociala medier. Denna händelse kan generera data för att mata en realtidsrapport som räknar omnämnanden i sociala medier, ett program för sentimentanalys som ger ett positivt, negativt eller neutralt resultat, eller ett program som kartlägger varje omnämnande på en världskarta. Även om uppgifterna kommer från samma källa i alla fall, bygger var och en av dessa tillämpningar på unika datapipelines som måste slutföras smidigt innan slutanvändaren ser resultatet.
De vanligaste stegen i datapipelines är datatransformation, ökning, berikning, filtrering, gruppering, aggregering och körning av algoritmer mot dessa uppgifter.
Vad är en pipeline för stora data?
I takt med att volymen, variationen och hastigheten på data har ökat dramatiskt under de senaste åren har arkitekter och utvecklare varit tvungna att anpassa sig till ”stora data”. Termen ”stora data” innebär att det finns en enorm volym att hantera. Denna datavolym kan öppna möjligheter för användningsfall som prediktiv analys, realtidsrapportering och varningar, bland många exempel.
Som många komponenter i dataarkitekturen har datapipelines utvecklats för att stödja stora datamängder. Pipelines för stora data är datapipelines som byggs för att tillgodose en eller flera av de tre egenskaperna hos stora data. Hastigheten hos stora data gör det tilltalande att bygga strömmande datapipelines för stora data. Då kan data samlas in och bearbetas i realtid så att någon åtgärd sedan kan vidtas. Volymen av stora data kräver att datapipelines måste vara skalbara, eftersom volymen kan variera över tiden. I praktiken är det troligt att det finns många big data-händelser som inträffar samtidigt eller mycket nära varandra, så big data-pipelinen måste kunna skalas för att bearbeta betydande datamängder samtidigt. Variationen av stora data kräver att pipelines för stora data kan känna igen och bearbeta data i många olika format – strukturerade, ostrukturerade och halvstrukturerade.
Datapipeline vs. ETL
ETL hänvisar till en specifik typ av datapipeline. ETL står för ”extrahera, omvandla och ladda”. Det är processen att flytta data från en källa, t.ex. en applikation, till en destination, vanligtvis ett datalager. ”Extrahera” avser att hämta data från en källa, ”omvandla” avser att ändra data så att de kan laddas in i destinationen, och ”ladda” avser att infoga data i destinationen.
ETL har historiskt sett använts för batcharbetsbelastningar, särskilt i stor skala. Men en ny typ av strömmande ETL-verktyg dyker upp som en del av pipelinen för strömmande händelsedata i realtid.
Datapipelineöverväganden
Datapipelinearkitekturer kräver många överväganden. Behöver din pipeline till exempel hantera strömmande data? Vilken hastighet på data förväntar du dig? Hur mycket och vilka typer av bearbetning måste ske i datapipelinen? Genereras data i molnet eller på plats, och vart måste de skickas? Planerar ni att bygga pipelinen med mikrotjänster? Finns det särskilda tekniker som ditt team redan är väl förtrogna med att programmera och underhålla?
Exempel på arkitektur
Datapipelines kan byggas upp på flera olika sätt. Ett vanligt exempel är en batchbaserad datapipeline. I det exemplet kan du ha ett program, t.ex. ett kassasystem, som genererar ett stort antal datapunkter som du måste skicka till ett datalager och en analysdatabas. Här är ett exempel på hur det skulle se ut:
Ett annat exempel är en strömmande datapipeline. I en strömmande datapipeline skulle data från försäljningssystemet bearbetas allteftersom de genereras. Strömningsbehandlingsmotorn skulle kunna leverera utdata från rörledningen till datalager, marknadsföringsprogram och CRM-program, bland andra program, samt tillbaka till själva försäljningssystemet.
Ett tredje exempel på en datapipeline är Lambda-arkitekturen, som kombinerar batch- och strömmande pipelines i en arkitektur. Lambda-arkitekturen är populär i big data-miljöer eftersom den gör det möjligt för utvecklare att redovisa både användningsfall för streaming i realtid och historiska batchanalyser. En viktig aspekt av den här arkitekturen är att den uppmuntrar lagring av data i råformat så att du kontinuerligt kan köra nya datapipelines för att korrigera eventuella kodfel i tidigare pipelines, eller för att skapa nya datadestinationer som möjliggör nya typer av frågor.
Relaterade ämnen
Streaming ETL
Lambda-arkitektur
Stream Processing