Batchprosessering
Hva er batchprosessering?
Datastyrt batchprosessering er en metode for å kjøre jobber (dvs. flere dataprogram) automatisk. Her brukes ordet 'batch' om en samling prosesser eller datafiler som behandles som én enhet.
-
Batchjobb ("batch av jobber") eller Jobb viser til at en batchapplikasjon kan håndterer flere jobber samtidig. En jobb er et spesifisert sett med instruksjoner eller program som skal utføres.
-
Batch: En batch er en gruppe jobber. Når et system kjører batchprosessering, tar det en batch og kjører alle jobbene innen den batchen.
-
Batchprosesseringssystem: Det systemet som utfører batchprosesseringen. Det styrer utførelsen av batcher og sørger for at jobbene i batchen utføres i riktig rekkefølge.
Batchprosessering gjennomgår vanligvis en tretrinns prosess:
- INPUT - innsamling av data som er gruppert i batcher
- PROSESSERING - behandling av de innsamlede data, én batch om gangen
- OUTPUT - med resultater i sekvensiell rekkefølge
Input
Data samles inn og akkumuleres over en tidsperiode og grupperes i partier (f.eks. minutter, timer og dager) før de behandles i en eller flere batcher. Utfra ulike forretningsområders behov kan batchene bli gruppert på andre måter (f.eks. leveringsrute eller fyllingsgrad).
Bulkorientert
Batchprosessering innebærer å håndtere store volum eller batcher med data på en gang ved gjentatte ganger å gjøre den samme handlingen på mange elementer i stedet for å behandle individuelle elementer én etter én. For eksempel masseutskrift av brev eller masselasting av poster til et datavarehus.
Prosessering
Det finnes to prosesseringsmodeller, uendelig og begrenset.
Batchprosessering opererer på avgrensede sett med data (batcher), i stedet for en pågående og ubegrenset strøm av data. Vi forventer at prosesseringen vil avsluttes og den avsluttes fordi det er en begrenset mengde data som behandles.
Med batchprosessering vil arbeidsbelastningen på servere kun toppe seg i perioder hvor jobbene kjører. Ofte kjører slike jobber etter en tidsplan som f.eks. nattjobber hvor servernes belastningen er lav.
Dette står i kontrast til stream processing hvor triggere (f.eks. 'events') starter prosesseringen og en "uendelig" strøm av data behandles kontinuerlig etter hvert som nye data kommer inn og hvor arbeidsbelastningen på servere vil være mer jevnt fordelt.
Sekvensiell prosessering
I batchprosessering behandles dataene sekvensielt og hele batchen behandles før resultatene eksporteres.
En nettbasert applikasjon eller en integrasjonsmeldingsbasert applikasjon lytter og venter på en eller annen type ekstern hendelse. I en nettapplikasjon er det den innkommende forespørselen. I en meldingsbasert applikasjon kan det være en innkommende melding. I begge tilfeller venter de på at ekstern hendelse skal skje før prosesseringen kan starte.
I batchprosessering er det ingen ekstern interaksjon, alle regler og rutiner for prosessering er allerede på plass og det er innholdet i dataene som bestemmer flyten gjennom applikasjonen. Prosesseringen av batchene utføres av en serie av dataprogram ("jobber"). Jobbene settes opp slik at de kan fullføres uten menneskelig interaksjon. Alle innmatingsparametere er forutdefinerte i et eller flere skript, argumenter på kommandolinjen, kontrollfiler eller et "job control language."
En jobb bruker et sett med datafiler som innmatning, prosesserer dataene og produserer et sett med datafiler som utmatning.
Periodiske jobber
Prosesseringen startes og kjøres automatisk. For eksempel:
- ved planlagte tider, for eksempel over natten eller på ukentlig basis
- ved faste tidsintervall
- når tilgjengeligheten på datamaskinressurser er optimal
- når en viss fyllingsgrad er oppnådd
Prosesseringen kan startes manuelt når behovet oppstår.
Ikke-interaktiv
Batch-jobber kjøres uten å kreve brukerinteraksjon eller inndata under utførelse. De initieres og kjøres automatisk uten menneskelig interaksjon til de er ferdige.
Bakgrunnsutførelse
Batch-jobber kjøres vanligvis i bakgrunnen, atskilt fra og uavhengig av interaktive brukergrensesnitt eller forgrunnsprosesser. I gamle dager ble de kalt nattjobber, selv i moderne systemer har de en tendens til å være planlagt for rolige perioder.
Dette gjør at datamaskinens ressurser kan utnyttes effektivt for disse bulkoperasjonene uten å påvirke ytelsen til interaktive applikasjoner.
(Andre typer prosesser kjører også i bakgrunnen. Det som skiller disse fra batch-prosesser er volum og jobber med enkeltposter eller håndfulle poster)
Asynkrone resultater
I den batchbaserte prosesseringen er det, i motsetning til prosessering i sanntid, en tidsforsinkelse mellom når dataene genereres og når behandlingsresultatene er tilgjengelige.
Noen vanlige brukstilfeller for batchdatabehandling inkluderer lønnsbehandling, salgsrapportering og datavarehus-ETL-operasjoner (ekstrahere, transformere, laste). Slike bruksområder trenger ikke sanntidsprosessering. Ved lønnsbehandling hentes timeregistreringer for en måned inn, beregninger utføres og rapporter som lønnseddel og utbetalingslister lages.
Sjekkpunkt og omstart
Siden batchjobber vanligvis er langvarige jobber, er sjekkpunkt og omstart vanlige funksjoner som finnes i batchjobber
Fordeler og ulemper
Samlet sett kan batchprosessering være et verdifullt verktøy for oppgaver som ikke krever sanntids databehandling, kan behandles uten brukerintervensjon og det ikke er behov for umiddelbar innsikt eller respons, men heller periodiske rapporter og analyser.
-
Effektivitet: Batchprosessering kan være svært effektivt da det muliggjør automatisering av repeterende oppgaver. Dette sparer tid og reduserer potensialet for feil.
-
Ressursoptimalisering: Batchprosessering kan settes til å kjøre når det ellers er lav belastning på datasystemene, noe som optimaliserer bruken av disse ressursene.
-
Reduserte kostnader: Batchprosessering bidrar til å redusere driftskostnadene da det ikke krever kontinuerlig brukerinteraksjon.
-
Skalerbarhet: Batchprosessering kan prosessere store mengder data om gangen.
-
Mangel på interaktivitet: Siden jobben behandles samlet, er det ikke rom for brukerinteraksjon under behandlingen.
-
Lang prosesseringstid: Det kan ta lang tid å prosessere store batcher.
-
Vanskelig å feilsøke: Hvis en jobb i en batch mislykkes, kan det være vanskelig å identifisere det spesifikke problemet.
-
Ventetid: Siden jobber behandles som en batch, kan noen jobber måtte vente på sin tur.