Java >> Java tutorial >  >> Java

Håndtering af store datasæt i distribuerede systemer

I dette indlæg vil vi tale om håndtering af store datasæt i distribuerede systemer. Dette er ikke relateret til big data eller machine learning, hvor du håndterer store data. Men generelt, når du begynder at skalere et distribueret system, vil du begynde at behandle forskellige transaktions- og rapporteringsdata. Hvordan håndterer man den slags store datasæt? Hvis du er nybegynder med distribuerede systemer, kan du læse grundlæggende om distribuerede systemer eller bygge hændelsesdrevne mikrotjenester.

Hvorfor håndtere store datasæt?

Det første spørgsmål opstår, hvorfor vi skal håndtere de store datasæt. I praksis kan der være mange grunde som at migrere et stort sæt data efter opgradering af det gamle system, eller at behandle historiske data, eller dit eksisterende system vokser med transaktionsdata. Alle disse scenarier kommer med kompleksitet og skala. Når man designer et hvilket som helst distribueret system, kan man altid træffe beslutninger for at tage højde for sådanne scenarier. Men på trods af det, er enhver beslutning i et distribueret system en afvejning. På trods af hvor godt du er forberedt, kan du støde på et scenarie, som du ikke har taget højde for. Hvordan håndterer du sådanne sager?

Måder til håndtering af store datasæt

Vi har et stort datasæt. Hvordan behandler vi? Dette datasæt kan være til rapportering eller endda revisionsformål.

Chunking

Chunking er en måde at behandle disse data på. Vi tager et stort datasæt og deler det op i flere datastykker. Og derefter behandle hver del. Så simpelt som det, lyder terminologien – bearbejd data i n antal bidder.

I dette scenarie skal du kende karakteristikken af ​​data for at opdele dem i flere bidder. Der kan være andre bivirkninger ved chunking. Forestil dig, hvis du læser en gigabyte data ind i hukommelsen og derefter forsøgte at opdele. Det ville skabe præstationsproblemer. I sådanne scenarier skal du tænke over, hvordan man kan læse data fra et datalager eller en database i bidder. Brug sandsynligvis filtre. Sideinddeling er et sådant eksempel.

MapReduce

MapReduce er en programmeringsmodel, hvor du tager data og sender disse data gennem et kort og reducerer funktioner.

Kort tager et nøgle/værdi-par af input og producerer en sekvens af nøgle/værdi-par. Dataene er sorteret på denne måde, at de grupperer nøgler sammen. Reducer reducerer de accepterede værdier med den samme nøgle og producerer et nyt nøgle/værdi-par.

Streaming

Streaming kan anses for at ligne chunking. Men med streaming behøver du ikke have nogen tilpassede filtre. Mange programmeringssprog tilbyder også streamingsyntaks til at behandle et stort datasæt. Vi kan behandle et stort datasæt fra en fil eller en database gennem strømmen. Streaming af data er en kontinuerlig strøm af data genereret af forskellige kilder. Samlet set er der systemer, der kan overføre data gennem hændelsesstrømme.

Streaming tillader behandling af data i realtid. Applikationer som Kafka giver mulighed for at sende data og forbruge dem med det samme. Ydeevnemålet for streaming er latency .

Batchbehandling

Batchbehandling gør det muligt at behandle et sæt data i batches. Så hvis du har 100.000 poster, kan du sætte en grænse for kun at behandle 10.000 poster i en batch. Spring Boot tilbyder også en mulighed for Spring batch til batchbehandling. Batchprocesser er planlagte job, der kører et sæt program til at behandle et sæt data og derefter producere output. Ydeevnemålet for batchbehandling er gennemstrømning .

Konklusion

I dette indlæg diskuterede vi forskellige måder at behandle et stort sæt data på. Kender du en anden måde? Kommenter venligst dette indlæg, så tilføjer jeg det til denne liste.

Med stadigt voksende distribuerede systemer bliver man nødt til at håndtere store datasæt til sidst. Det er altid godt at gense disse metoder for at forstå det grundlæggende i databehandling.


Java tag