Indholdsfortegnelse:
- Cache data i hukommelsen
- Replicere data til slaver
- Datamodellering i nøgleværdisbutikker
- Drift på data
- Evaluering af Redis
Nøgleværdisbutikker i NoSQL handler om hastighed. Du kan bruge forskellige teknikker til at maksimere denne hastighed, fra caching data, til at have flere kopier af data, eller ved at bruge de mest passende opbevaringsstrukturer.
Cache data i hukommelsen
Da data er let tilgængelige, når den er gemt i RAM (random access memory), kan du vælge en nøgleværdi butik, der caches data i RAM, betydeligt fremskynde din adgang til data, omend til prisen af højere serveromkostninger.
Ofte er denne bytte værd at lave. Du kan nemt beregne, hvilken procentdel af dine lagrede data der anmodes om ofte. Hvis du ved, at fem procent generelt bliver bedt om hvert par minutter, så tag fem procent af din datastørrelse og tilføj det antal som ledigt RAM-plads på tværs af dine databaseservere.
Husk, at operativsystemet, andre applikationer og databaseserveren også har hukommelseskrav.
Replicere data til slaver
I nøgleværdisbutikker gemmes en bestemt nøgle på en af serverne i klyngen. Denne proces kaldes nøglepartitionering . Dette betyder, at hvis denne nøgle konstant bliver bedt om, modtager denne knude hovedparten af anmodninger. Denne knudepunkt vil derfor være langsommere end din gennemsnitlige forespørgselshastighed, der potentielt påvirker kvaliteten af tjenesten til dine brugere.
For at undgå denne situation understøtter nogle nøgleværdibutikker at tilføje skrivebeskyttede kopier, også kaldet slaver. Redis, Riak og Aerospike er gode eksempler. Replikation gør det muligt at gemme nøglen flere gange på flere servere, hvilket øger responshastigheden, men på bekostning af mere hardware.
Nogle nøgleværdighedsbutikker sikrer, at nøglernes replikaer altid har samme værdi som master. Denne garanti kaldes at være helt konsekvent. Hvis der opstår en opdatering på master-serveren, der holder nøglen, garanteres alle replikerne at være opdaterede.
Ikke alle vigtige værdibutikker garanterer denne status (f.eks. Riak), så hvis det er vigtigt at være opdateret til millisekunden, skal du vælge en database, hvis replikaer er fuldt konsistente (f.eks. Aerospike).
Datamodellering i nøgleværdisbutikker
Mange nøgleværdis butikker understøtter kun grundlæggende strukturer for deres værdityper, og efterlader applikationsprogrammøren jobbet med at tolke dataene. Simpel datatypestøtte indeholder typisk strenge, heltal, JSON og binære værdier.
For mange brugssager fungerer dette godt, men nogle gange er en lidt mere granulær adgang til data nyttig.Redis understøtter for eksempel følgende datatyper:
-
String
-
Liste
-
Sæt
-
Sorteret sæt
-
Hash-kort
-
Bit arrayer
-
Hyperlog-logs
Sorterede sæt kan forespørges om matchende værdier - meget som at spørge et indeks af værdier sorteret efter dato, hvilket er meget nyttigt for at søge efter en delmængde af typede data.
Drift på data
Redis omfatter operationer til at øge og formindske nøgleværdier direkte uden at skulle foretage et trin til ændring af read-modify-update (RMU). Du kan gøre det inden for en enkelt transaktion for at sikre, at ingen anden applikation ændrer værdien under en opdatering. Disse specifikke operationer i datatypen omfatter også at tilføje og fjerne elementer til lister og sæt.
Du kan endda give autokomplet funktionalitet på en applikations brugergrænseflade ved hjælp af kommandoen Redis ZRANGEBYLEX. Denne kommando henter et sæt nøgler, der delvis matcher en streng. Så hvis du skulle skrive "NoSQL for" i søgelinjen for en applikation bygget på Redis, ville du se forslaget "NoSQL For Dummies. "
Evaluering af Redis
Redis er stolt af at være en meget let, men blazingly hurtig nøgleværdi butik. Det var oprindeligt designet til at være en in-memory-nøgleværdi butik, men har nu diskbaseret datalagring.
Du kan bruge Redis til at beskytte data ved at aktivere tilstanden AOF (tilføj kun fil) og instruere Redis om at tvinge data til disk på hver forespørgsel (kendt som tvunget fsync flushing ). AOF gør det langsomt at skrive, selvfølgelig, men det giver et højere niveau af holdbarhed for data. Vær dog opmærksom på, at det stadig er muligt at miste op til et sekund af kommandoer.
Endvidere har Redis kun for nylig tilføjet support til clustering. Faktisk på tidspunktet for denne skrivning er Redis 'clustering support i beta testfasen. Heldigvis bruger Redis en fælles-intet klynge model med mestere til bestemte nøgler og slaver, der aldrig direkte skrives til af en klient; kun mesteren gør det. At levere delt intet-gruppering skal gøre det lettere for Redis at implementere pålidelig clustering, end det er for databaser, der tillader at skrive til alle replikaer.
Hvis du vil have et meget hurtig caching-lag i hukommelse foran en anden database - MongoDB eller Riak bruges normalt sammen med Redis - vurder derefter Redis som en mulighed. Som støtte til clustering og data holdbarhed udvikler sig, kan Redis måske overtage andre back-end databaser.