Indholdsfortegnelse:
Video: Database Tutorial for Beginners 2025
Når du har styret nøglerne korrekt, er du klar til at designe, hvordan du opbevarer data med NoSQL og sikrer, at den er sikker og altid tilgængelig for arbejdet du skal gøre.
Datatyper i nøgleværdisbutikker
Nøgleværdis butikker fungerer typisk som & ldquo; spande & rdquo; for binære data. Nogle databaser giver stærk intern datatype og endda skema support. Andre giver simpelthen praktiske hjælperfunktioner i deres klientdrivere til serialisering af almindelige applikationsdata strukturer til en nøgleværdi butik. Eksempler er kort, lister og sorterede sæt.
Oracle NoSQL kan fungere i to tilstande:
-
Enkel binær butik
-
Struktureret Avro-skema understøttelse
Et Avro-skema er beslægtet med et relationsdatabaseskema - håndhæver et meget stringent sæt af formatregler for JavaScript Object Notation (JSON) data gemt i databasen som vist her:
{brugernavn: & ldquo; afowler & rdquo;, sessionid: 13452673, siden: 1408318745, tema: & ldquo; bluesky & rdquo;}
Du definerer et Avro-skema ved hjælp af et JSON-dokument. Dette er et eksempel på Avro-skemaet for de lagrede data vist tidligere:
{& ldquo; typen & rdquo;: & ldquo; rekord & rdquo;, & ldquo; namespace & rdquo;: & ldquo; com. eksempel & rdquo;, & ldquo; navn & rdquo;: & ldquo; UserSession & rdquo;, & ldquo; felter & rdquo;: [{& ldquo; navn & rdquo;: & ldquo; brugernavn & rdquo;, & ldquo; typen & rdquo;: [& ldquo; snor & rdquo;, & rdquo; null & rdquo;]}, {& ldquo; navn & rdquo;: & ldquo; sessionid & rdquo;, & ldquo; typen & rdquo;: & ldquo; int & rdquo;}, {& ldquo; navn & rdquo;: & ldquo; da & rdquo;, & ldquo; typen & rdquo;: & ldquo; lang & rdquo;}, {& ldquo; navn & rdquo;: & ldquo; tema & rdquo;, & ldquo; typen & rdquo;: [& ldquo; snor & rdquo;, & rdquo; null ")}}}
Et Avro-skema giver meget stærk indtastning i databasen, for hvornår skemaet er vigtigt. I det foregående eksempel ser du strengdata, en numerisk session id, en dato (millisekunder, siden Unix Time Epok, som et langt heltal) og en personalisering indstilling for det tema, der skal bruges på hjemmesiden.
Bemærk også, at typen af brugernavn og tema har to muligheder - streng og null, hvilket er, hvordan du instruerer Oracle NoSQL om, at nullværdier er tilladt. Du kunne have forladt tema som en streng og gav en ekstra konfigurationsparameter for & ldquo; standard & rdquo;: & ldquo; bluesky & rdquo;.
Andre NoSQL-databaser giver sekundære indekser på enhver vilkårlig egenskab af en værdi, der har JSON-indhold. Riak giver for eksempel sekundære indekser baseret på dokumentpartitionering - en kendt egenskab inden for et JSON-dokument er indekseret med en type.Dette giver mulighed for rækkeforespørgsler (mindre end eller større end) ud over simple lige og ikke lige store sammenligninger. Riak klarer at levere interviewsøgninger uden et stramt skema - bare simpel indeksdefinition. Hvis dataene er der, tilføjes det til indekset.
Replicere data
Lagring af flere kopier af de samme data i andre servere, eller endda rack af servere, hjælper med at sikre tilgængelighed af data, hvis en server fejler. Serverfejl sker primært i samme klynge.
Du kan betjene replikaer to hovedveje:
- Master-slave: Alle læser og skriver sker med mesteren. Slaver overtager og modtager kun anmodninger, hvis mesteren fejler.
Master-slave replikation anvendes typisk på ACID-kompatible nøgleværdier. For at muliggøre maksimal konsistens, skrives primærbutikken til, og alle replikaer opdateres, før transaktionen fuldendes. Denne mekanisme kaldes en tofase-commit og skaber ekstra netværk og behandlingstid på replikaerne.
- Master-master: Læser og skriver kan ske på alle knudepunkter, der styrer en nøgle. Der er ikke noget begreb om en & ldquo; primær & rdquo; partition ejer.
Master-master-replik er typisk efterhånden konsistente, idet klyngen udfører en automatisk operation for at bestemme den nyeste værdi for en nøgle og fjerne ældre, forældede værdier.
I de fleste nøgletal butikker sker dette langsomt - på læsetid. Riak er undtagelsen her, fordi den har en anti-entropitjeneste, der kontrollerer konsistens under normale operationer.
Versionsdata
For at aktivere automatisk konfliktløsning skal du have en mekanisme til at angive den nyeste version af data. Til sidst konsekvente nøgleværdisbutikker opnår konfliktløsning på forskellige måder.
Riak bruger en vektorurmekanisme til at forudsige, hvilken kopi der er den nyeste. Andre nøgleværdisbutikker bruger enkle tidsstempler til at indikere stalenhed. Når konflikter ikke kan løses automatisk, sendes begge kopier af data til klienten. Konfliktende data, der sendes til klienten, kan forekomme i følgende situation:
-
Klient 1 skriver til replik A 'Adam: {likes: Cheese}'.
-
Replica En kopieringsdata til replika B.
-
Klient 1 opdaterer data på replika A til 'Adam: {likes: Cheese, hates: sunlight}'.
På dette tidspunkt har replik A ikke tilstrækkelig tid til at kopiere de nyeste data til replika B.
-
Klient 2 opdaterer data på replik B til 'Adam: {likes: Dogs, hates: kangaroos}'.
På dette tidspunkt er replika A og replika B i konflikt, og databaseklyngen kan ikke automatisk løse forskellene.
En alternativ mekanisme er at bruge tidsstempler og tillade dem at angive de nyeste data. I en sådan situation er det sund fornuft for applikationen at kontrollere, at tidsstemplerne læser den seneste værdi før opdatering af værdien.
De kontrollerer kontrollen og sætter mekanismen,, som grundlæggende betyder 'Hvis den seneste version stadig er version 2, skal du gemme min version 3'. Denne mekanisme kaldes undertiden som read match update (RMU) eller read match write (RMW). Denne mekanisme er standardmekanismen anvendt af Oracle NoSQL, Redis, Riak og Voldemort.