Sharding
Sharding er praksis med at optimere databasestyringssystemer ved at adskille rækker eller kolonner i en større databasetabel i flere mindre tabeller. De nye tabeller kaldes” shards “(eller partitioner), og hver ny tabel har enten det samme skema, men unikke rækker (som det er tilfældet for” vandret sharding”) eller har et skema, der er en ordentlig delmængde af den originale tabels skema (som det er tilfældet for”lodret sharding”).
hvorfor bruges Sharding?
Sharding er et almindeligt koncept i skalerbare databasearkitekturer. Ved at skære et større bord kan du gemme de nye klumper af data, kaldet logiske skår, på tværs af flere noder for at opnå vandret skalerbarhed og forbedret ydeevne. Når den logiske shard er gemt på en anden knude, kaldes den som en fysisk shard.
Når du kører en database på en enkelt maskine, når du til sidst grænsen for mængden af computerressourcer, du kan anvende på eventuelle forespørgsler, og du vil naturligvis nå en maksimal mængde data, som du effektivt kan arbejde med. Ved vandret skalering kan du aktivere et fleksibelt databasedesign, der øger ydeevnen på to vigtige måder:
- med massivt parallel behandling kan du drage fordel af alle beregningsressourcer på tværs af din klynge for hver forespørgsel.
- da de enkelte skår er mindre end den logiske tabel som helhed, skal hver maskine scanne færre rækker, når den svarer på en forespørgsel.
horisontal sharding er effektiv, når forespørgsler har tendens til at returnere en delmængde af rækker, der ofte grupperes sammen. For eksempel, forespørgsler, der filtrerer data baseret på korte datointervaller, er ideelle til vandret sharding, da datointervallet nødvendigvis begrænser forespørgsel til kun en delmængde af serverne.lodret sharding er effektiv, når forespørgsler har tendens til kun at returnere en delmængde af kolonner af dataene. Hvis nogle forespørgsler f.eks. kun anmoder om navne, og andre kun anmoder om adresser, kan navne og adresser overføres til separate servere.
også, sharded databaser kan tilbyde højere niveauer af tilgængelighed. I tilfælde af en afbrydelse på en ubeskadiget database er hele applikationen ubrugelig. Med en sharded database er kun de dele af applikationen, der har påberåbt sig de manglende klumper af data, ubrugelige. I praksis afbøder sharded databaser ofte yderligere virkningen af sådanne udfald ved at replikere backup shards på yderligere noder.
Hvad er forskellen mellem Sharding og partitionering?
Sharding og partitionering handler begge om at opdele et stort datasæt i mindre undergrupper. Forskellen er, at sharding indebærer, at dataene spredes over flere computere, mens partitionering ikke gør det. Partitionering handler om at gruppere undergrupper af data inden for en enkelt databaseforekomst. I mange tilfælde bruges udtrykkene sharding og partitionering endda synonymt, især når forud for udtrykkene “vandret” og “lodret.”Således kan ” vandret sharding” og “vandret partitionering” betyde det samme.
relaterede emner
beregning i hukommelsen
Edge Computing
Grid Computing
yderligere læsning
Hasselcast IMDG 3.12 introducerer CP-delsystem