Forstå batch- og streambehandling

Fuldført

Tips

Se fanen Tekst og billeder for flere detaljer!

Databehandling er simpelthen konvertering af rådata til meningsfulde oplysninger gennem en proces. Der er to generelle måder at behandle data på:

  • Batchbehandling, hvor flere dataposter indsamles og gemmes, før de behandles sammen i en enkelt handling.
  • Streambehandling, hvor en datakilde konstant overvåges og behandles i realtid i takt med nye datahændelser.

Forstå batchbehandling

I batchbehandling indsamles og lagres nyankomne dataelementer, og hele gruppen behandles samlet som en batch. Præcis når hver gruppe behandles, kan bestemmes på flere måder. Du kan f.eks. behandle data baseret på et planlagt tidsinterval (f.eks. hver time), eller det kan udløses, når en bestemt mængde data er ankommet, eller som følge af en anden hændelse.

Lad os f.eks. antage, at du vil analysere vejtrafikken ved at tælle antallet af biler på en vejstrækning. En batchbehandlingstilgang til dette kræver, at du indsamler bilerne på en parkeringsplads og derefter tæller dem i en enkelt handling, mens de er inaktive.

Diagram over biler, der tælles på en parkeringsplads.

Hvis vejen er optaget, med et stort antal biler kører med hyppige intervaller, kan denne fremgangsmåde være upraktisk; og bemærk, at du ikke får nogen resultater, før du har parkeret en batch af biler og tælles dem.

Et eksempel på batchbehandling i den virkelige verden er den måde, kreditkortselskaber håndterer fakturering på. Kunden modtager ikke en faktura for hvert separat kreditkortkøb, men én månedlig regning for alle månedens køb.

Aspekt Fordele ved batchbehandling Ulemper ved batchbehandling
Behandlingskapacitet Store datamængder kan behandles effektivt på et bekvemt tidspunkt. Alle inputdata skal være fuldt forberedt, før behandlingen kan begynde.
Systembrug Opgaver kan planlægges i tomgang eller uden for spidsbelastningstiden (såsom natten over), hvilket forbedrer ressourceudnyttelsen. Der er ofte en forsinkelse mellem dataindtastning og modtagelse af resultater.
Pålidelighed og fejlhåndtering Fejl i data, nedbrud eller programfejl kan stoppe hele batchprocessen.
Datavalidering Inputdata skal kontrolleres omhyggeligt, før batchjobbet køres igen.
Indvirkning af mindre fejl Selv små datafejl kan forhindre hele batch-jobbet i at køre succesfuldt.

Om behandling af stream

I stream processing behandles hvert nyt stykke data, når det ankommer. I modsætning til batchbehandling er der ingen ventetid til næste batchbehandlingsinterval – data behandles som individuelle enheder i realtid i stedet for at blive behandlet batch ad gangen. Behandling af Stream-data er nyttig i scenarier, hvor nye, dynamiske data genereres løbende.

En bedre tilgang til vores hypotetiske biltællingsproblem kan f.eks. være at anvende en streamingtilgang ved at tælle bilerne i realtid, efterhånden som de passerer:

Diagram over biler, der tælles, når de passerer.

I denne fremgangsmåde behøver du ikke at vente, indtil alle bilerne er parkeret for at begynde at behandle dem, og du kan aggregere dataene over tidsintervaller. f.eks. ved at tælle antallet af biler, der passerer hvert minut.

Eksempler på streamingdata i den virkelige verden omfatter:

  • Et finansielt institut sporer ændringer på aktiemarkedet i realtid, beregner værdi-i-risiko og justerer automatisk porteføljer baseret på aktiekursbevægelser.
  • Et onlinespilfirma indsamler data i realtid om interaktioner mellem spillerspil og feeds dataene til sin spilplatform. Derefter analyserer den dataene i realtid, giver incitamenter og dynamiske oplevelser til at engagere sine spillere.
  • Et fast ejendom websted, der sporer en delmængde af data fra mobilenheder, og gør realtid ejendom anbefalinger af egenskaber til at besøge baseret på deres geo-placering.

Streambehandling er ideel til tidskritiske operationer , der kræver øjeblikkelig realtidsrespons. Et system, der overvåger en bygning til røg og varme, skal f.eks. udløse alarmer og låse døre op for at give beboerne mulighed for at undslippe med det samme i tilfælde af brand.

Forstå forskellene mellem batch- og streamingdata

Bortset fra den måde, batchbehandling og streamingbehandling håndterer data på, er der andre forskelle:

  • Dataomfang: Batchbehandling kan behandle alle data i datasættet. Streambehandling har typisk kun adgang til de seneste modtagne data eller inden for et rullende tidsvindue (f.eks. de sidste 30 sekunder).

  • Datastørrelse: Batchbehandling er velegnet til effektiv håndtering af store datasæt. Stream-behandling er beregnet til individuelle poster eller mikrobatch, der består af få poster.

  • Ydeevne: Ventetid er den tid, det tager at modtage og behandle dataene. Ventetiden for batchbehandling er typisk et par timer. Streambehandling sker typisk med det samme med ventetid i rækkefølgen af sekunder eller millisekunder.

  • Analyse: Du bruger typisk batchbehandling til at udføre komplekse analyser. Stream-behandling bruges til simple svarfunktioner, aggregeringer eller beregninger, f.eks. rullende gennemsnit.

Kombiner batch- og streambehandling

Mange analyseløsninger i stor skala omfatter en blanding af batch- og streambehandling, der muliggør både historisk og realtidsdataanalyse. Det er almindeligt for streambehandlingsløsninger at registrere data i realtid, behandle dem ved at filtrere eller aggregere dem og præsentere dem via dashboards og visualiseringer i realtid (f.eks. viser det løbende antal biler, der er passeret langs en vej inden for den aktuelle time), mens de behandlede resultater i et datalager bevares til historisk analyse sammen med batchbehandlede data (f.eks. for at muliggøre analyse af trafikmængderne i løbet af det seneste år).

Selv når realtidsanalyse eller visualisering af data ikke er nødvendig, bruges streaming-teknologier ofte til at indsamle realtidsdata og gemme dem i et datalager til efterfølgende batchbehandling (det svarer til at omdirigere alle biler, der kører langs en vej, ind på en parkeringsplads, før de tælles).

Følgende diagram viser en lambda-arkitektur – et almindeligt mønster til at kombinere batch- og streambehandling i en storskala dataanalyseløsning.

Diagram over en dataanalysearkitektur, der omfatter batch- og streambehandling.

  1. Datahændelser fra en streamingdatakilde registreres i realtid.
  2. Data fra andre kilder overføres til et datalager (ofte en datasø) til batchbehandling.
  3. Hvis realtidsanalyse ikke er nødvendig, skrives de indsamlede streamingdata til datalageret for efterfølgende batchbehandling.
  4. Når der kræves analyse i realtid, bruges en teknologi til behandling af stream til at forberede streamingdata til analyse eller visualisering i realtid. ofte ved at filtrere eller aggregere dataene over tidsmæssige vinduer.
  5. De ikke-strømmende data behandles periodisk i batch for at forberede dem til analyse, og resultaterne lagres i et analytisk datalager (ofte kaldet et datalager) til historisk analyse.
  6. Resultaterne af streambehandling kan også bevares i det analytiske datalager for at understøtte historisk analyse.
  7. Analyse- og visualiseringsværktøjer bruges til at præsentere og udforske data i realtid og historiske data.

Seddel

Ofte anvendte løsningsarkitekturer til kombineret batch- og streamdatabehandling omfatter lambda - og deltaarkitekturer . Kappa-arkitekturen er et enklere alternativ, der helt eliminerer det separate batchlag – behandler alle data som en kontinuerlig strøm og afspiller dem igen, når historisk genbehandling er nødvendig. Moderne platforme som Microsoft Fabric og Apache Kafka gør kappa-lignende løsninger stadig mere praktiske. Detaljer om disse arkitekturer ligger uden for kursets rammer.