Sharding og datareplikering
Lær teknikker som sharding for å partisjonere data og replikering for å sikre høy tilgjengelighet og feiltoleranse.
Sharding og datareplikering er en gratis leksjon i Grunnleggende systemdesign for backendutviklere på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Grunnleggende systemdesign for backendutviklere, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Grunnleggende systemdesign for backendutviklere inneholder totalt 4 leksjoner.
Skalering utover én enkelt database
Etter hvert som applikasjonen vokser, kan én enkelt database få problemer med å håndtere alle dataene og all trafikken. Dette kan føre til treg ytelse og til og med systemkrasj.
For å bygge virkelig skalerbare og pålitelige systemer trenger vi avanserte strategier for å håndtere data på tvers av flere maskiner. Denne leksjonen utforsker to viktige teknikker: sharding og replikering.
Del opp dataene (sharding)
Se for deg et enormt bibliotek med millioner av bøker. Hvis alle bøkene står på én hylle, er det vanskelig og tidkrevende å finne en bestemt bok. Sharding er som å dele biblioteket opp i mange mindre, håndterbare seksjoner, der hver seksjon står på sin egen hylle.
- Det er en teknikk for partisjonering av databaser.
- Dataene deles opp i mindre, uavhengige «shards».
- Hver shard er en komplett databaseinstans.
Hvorfor bruke sharding i databasen?
Sharding bidrar til å overvinne begrensningene til én enkelt databaseserver. Det gir flere viktige fordeler:
- Horisontal skalerbarhet: Legg til flere maskiner (shards) etter hvert som datamengden vokser.
- Bedre ytelse: Spørringer kjøres raskere på mindre datasett.
- Redusert belastning: Lese- og skriveoperasjoner fordeles på flere servere.
- Økt gjennomstrømming: Håndter flere samtidige forespørsler.
Fordeling av data med shards
Når du bruker sharding i en database, trenger du en måte å avgjøre hvilken del av dataene som skal ligge i hvilken shard. Dette gjøres ved hjelp av en shard-nøkkel (eller partisjonsnøkkel).
Shard-nøkkelen er en kolonne (eller et sett med kolonner) i tabellen som bestemmer hvordan dataene fordeles. For eksempel kan bruker-ID-er brukes til å fordele brukerdata på ulike servere.
Velg en strategi for sharding
Det finnes ulike metoder for å fordele data:
- Områdebasert sharding: Dataene partisjoneres basert på et verdiområde (for eksempel brukere med ID-ene 1–1000 på shard A og 1001–2000 på shard B).
- Hash-basert sharding: En hash-funksjon brukes på shard-nøkkelen, og resultatet bestemmer hvilken shard som skal brukes (for eksempel
hash(userID) % numShards). - Katalogbasert sharding: En oppslagstabell (katalog) kobler shard-nøkkelen til riktig shard.
Dupliser data for sikkerhets skyld (replikering)
Sharding bidrar til skalering, men hva skjer hvis én enkelt shard svikter? Det er her datareplikering kommer inn. Replikering betyr at det opprettes flere kopier av dataene, som lagres på ulike servere.
Dette sikrer at systemet forblir tilgjengelig selv om én server går ned, og gir feiltoleranse og høy tilgjengelighet.
Replikering med master og replika
Et vanlig replikasjonsmønster er Master-Replica (eller Primary-Secondary). Slik fungerer det:
- Én server er master-databasen (primærdatabasen) og håndterer alle skriveoperasjoner.
- Flere replika-databaser (sekundærdatabaser) mottar kopier av dataene fra masteren.
- Replikaene håndterer vanligvis leseoperasjoner og fordeler lesebelastningen.
Replikering kan være synkron (data skrives til alle replikaer før operasjonen bekreftes) eller asynkron (masteren bekrefter skrivingen før replikaene mottar dataene).
Replikering med flere mastere
I et Multi-Master-oppsett kan flere databaseinstanser ta imot skriveoperasjoner. Dette gir enda høyere tilgjengelighet og kan forbedre skriveytelsen i geografisk distribuerte systemer.
Det introduserer imidlertid kompleksitet, for eksempel konfliktløsning, siden samtidige skrivinger til de samme dataene på ulike mastere må samordnes.
Det sterke tospannet: Sharding og replikering
Sharding og replikering brukes ofte sammen for å bygge svært skalerbare og robuste systemer. Hver shard kan selv være et replikert sett med databaser (for eksempel en master med flere replikaer).
Denne kombinasjonen sikrer at:
- Dataene fordeles horisontalt (sharding).
- Hver distribuerte del av dataene har høy tilgjengelighet og feiltoleranse (replikering).
Viktige hensyn ved avansert datalagring
Selv om sharding og replikering er kraftige teknikker, medfører de også kompleksitet:
- Økt driftskompleksitet: Det er vanskeligere å administrere flere databaseinstanser.
- Rebalansering av data: Det kan være krevende å fordele dataene på nytt når shards legges til eller fjernes.
- Distribuerte transaksjoner: Det kan være utfordrende å sikre konsistens på tvers av flere shards (et tema for viderekomne leksjoner).
- Valg av shard-nøkkel: En dårlig shard-nøkkel kan føre til «hot spots» (at én shard blir overbelastet).
Test kunnskapene dine
Hvilke av de følgende påstandene beskriver fordelene ved sharding og datareplikering på riktig måte?
Oppsummering: Skalering og pålitelighet
I denne leksjonen har vi utforsket to kritiske teknikker for avansert datalagring:
- Sharding: En stor database deles opp i mindre, uavhengige deler (shards) for å oppnå horisontal skalerbarhet og bedre ytelse.
- Replikering: Det opprettes flere kopier av dataene på ulike servere for å sikre høy tilgjengelighet, feiltoleranse og fordele lesebelastningen.
Til sammen er disse strategiene grunnleggende for å bygge robuste systemer med høy ytelse, som kan håndtere enorme mengder data og trafikk.
Lær deg Grunnleggende systemdesign for backendutviklere med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 12
- Leksjoner
- 48
Ofte stilte spørsmål
Er leksjonen «Sharding og datareplikering» gratis?
Ja – hele teksten i «Sharding og datareplikering» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Grunnleggende systemdesign for backendutviklere-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Grunnleggende systemdesign for backendutviklere inneholder totalt 4 leksjoner.
Hva lærer jeg i «Sharding og datareplikering»?
Lær teknikker som sharding for å partisjonere data og replikering for å sikre høy tilgjengelighet og feiltoleranse. Du øver på Grunnleggende systemdesign for backendutviklere med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Grunnleggende systemdesign for backendutviklere?
Ingen tidligere erfaring er nødvendig. Grunnleggende systemdesign for backendutviklere på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Sharding og datareplikering»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Grunnleggende systemdesign for backendutviklere-leksjonen?
Ja. Alle Grunnleggende systemdesign for backendutviklere-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- SQL- og NoSQL-databaser
- Sharding og datareplikering
- Modeller for datakonsistens
- Indeksering og spørringsoptimalisering