Sharding
Sharding är praxis att optimera databashanteringssystem genom att separera rader eller kolumner i en större databastabell i flera mindre tabeller. De nya tabellerna kallas ” shards ”(eller partitioner), och varje ny tabell har antingen samma schema men unika rader (som är fallet för” horisontell sharding”) eller har ett schema som är en riktig delmängd av den ursprungliga tabellens schema (som är fallet för”vertikal sharding”).
varför används Sharding?
Sharding är ett vanligt koncept i skalbara databasarkitekturer. Genom att sharding en större tabell, kan du lagra nya bitar av data, kallas logiska skärvor, över flera noder för att uppnå horisontell skalbarhet och förbättrad prestanda. När den logiska skärvan lagras på en annan nod kallas den en fysisk skärva.
När du kör en databas på en enda maskin kommer du så småningom att nå gränsen för hur mycket datorresurser du kan tillämpa på alla frågor, och du kommer uppenbarligen att nå en maximal mängd data som du effektivt kan arbeta med. Genom att skala ut horisontellt kan du aktivera en flexibel databasdesign som ökar prestanda på två viktiga sätt:
- med massivt parallell bearbetning kan du dra nytta av alla beräkningsresurser i ditt kluster för varje fråga.
- eftersom de enskilda skärvorna är mindre än den logiska tabellen som helhet måste varje maskin skanna färre rader när man svarar på en fråga.
horisontell sharding är effektiv när frågor tenderar att returnera en delmängd av rader som ofta grupperas tillsammans. Till exempel är frågor som filtrerar data baserat på korta datumintervall idealiska för horisontell sharding eftersom datumintervallet nödvändigtvis begränsar frågan till endast en delmängd av servrarna.
vertikal sharding är effektiv när frågor tenderar att returnera endast en delmängd av kolumner av data. Till exempel, om vissa frågor Begär endast namn och andra begär endast adresser, kan namnen och adresserna delas på separata servrar.
dessutom kan delade databaser erbjuda högre nivåer av tillgänglighet. I händelse av ett avbrott i en oskärmad databas är hela applikationen oanvändbar. Med en delad databas är endast de delar av applikationen som förlitade sig på de saknade bitarna av data oanvändbara. I praktiken mildrar delade databaser ofta effekten av sådana avbrott ytterligare genom att replikera säkerhetskopieringsskärmar på ytterligare noder.
Vad är skillnaden mellan Sharding och partitionering?
Sharding och partitionering handlar både om att bryta upp en stor datamängd i mindre delmängder. Skillnaden är att sharding innebär att data sprids över flera datorer medan partitionering inte gör det. Partitionering handlar om att gruppera delmängder av data i en enda databasinstans. I många fall används termerna sharding och partitionering även synonymt, särskilt när de föregås av termerna ”horisontell” och ”vertikal.”Således kan ”horisontell sharding” och ”horisontell partitionering” betyda samma sak.
relaterade ämnen
In-Memory beräkning
Edge Computing
Grid Computing
Vidare läsning
Hazelcast IMDG 3.12 introducerar CP delsystem