Innholdsfortegnelse:
Video: Web Programming - Computer Science for Business Leaders 2016 2025
Nøkkelverdiernes hurtige lesefunksjoner stammer fra bruk av veldefinerte nøkler. Disse tastene er vanligvis hashed, noe som gir en nøkkelverdi-butikk en svært forutsigbar måte å bestemme hvilken partisjon (og dermed server) data ligger på. En bestemt server administrerer en eller flere partisjoner.
Med en god nøkkel kan du unikt identifisere enkeltrekordet som svarer på en forespørsel uten å se på noen verdier i denne posten. En dårlig nøkkel vil kreve at søknadskoden tolker opptaket ditt for å avgjøre om det faktisk stemmer overens med spørringen.
Hvis du ikke designer nøkkelbrønnen din, kan det hende at en server har en uforholdsmessig tyngre belastning enn de andre, noe som fører til dårlig ytelse. Ved å bruke den gjeldende systemtiden som en nøkkel, skyver du for eksempel alle nye data på den siste noden i klyngen, noe som fører til et marerittscenario for rebalansering.
Partisjonering
Partisjonering er viktig fordi noen nøkkelverdier, for eksempel Oracle NoSQL, ikke lar antall partisjoner endres når en klase er opprettet. Deres distribusjon på tvers av servere kan imidlertid endres. Så start med et stort antall partisjoner som du kan spre seg i fremtiden.
Et eksempel på partisjonering er Voldemorts konsekvente hashing-tilnærming, som vist. Her ser du de samme partisjonene spredt over tre servere først og deretter over fire servere senere. Antall partisjoner forblir det samme, men deres tildeling er forskjellig på tvers av servere. Det samme gjelder for replikene deres.
Å få tilgang til data på partisjoner
Nøkkeltall butikker er svært distribuert uten enkelt feilpunkt. Dette betyr at det ikke er behov for en masterkoordineringskode for å holde styr på servere innenfor en klynge. Klusteradministrasjon gjøres automatisk av en chatprotokoll mellom noder i serveren.
Du kan bruke et triks i klientdriveren til å presse maksimal ytelse ut av å hente og lagre nøkler og verdier - klientdriveren holder styr på hvilke servere som holder hvilket tastetrykk som helst. Så klientdriveren vet alltid hvilken server som skal snakke med.
De fleste databaser, inkludert NoSQL, sender en forespørsel til alle medlemmer av en klynge. Den klyngen aksepterer enten skriven internt eller sender den en under hetten til riktig knutepunkt. Dette oppsettet betyr en ekstra nettverkstur mellom noder er mulig, noe som kan legge til latens.
For å unngå å oppdage latens, opprettholder de fleste nøkkelverdier butikker klientdrivere en metadatelliste over de nåværende noder i en klynge og hvilken partisjonstast som varierer mellom hver nikkestyring.På denne måten kan klientdriveren kontakte den riktige serveren, noe som gjør operasjonen raskere.
Hvis en ny knutepunkt legges til i en klynge og metadataene er utdaterte, informerer klyngen klientdriveren, som deretter laster ned de nyeste klyngemetadataene før du sender forespørselen tilbake til riktig knutepunkt. På denne måten opprettholdes maksimal gjennomstrømning med et minimum av overhead under utvikling. En annen fordel ved siden av er at det ikke er behov for en belastningsbalanse for å sende forespørsler til neste tilgjengelige eller minst opptatt server - bare én server (eller les replikaserver) mottar noensinne en klientforespørsel, slik at det ikke er behov for belastningsbalansering.
