Indholdsfortegnelse:
Video: Anvendelse af råvildtkølle 2024
Egenskaben for en database i konsistensen betyder, at Når data er skrevet til en database med succes, kan de følgende forespørgsler få adgang til dataene og få en ensartet visning af dataene. I praksis betyder det, at hvis du skriver en rekord til en database og derefter straks anmode om det, er du garanteret at se den. Det er især nyttigt for ting som Amazon-ordrer og bankoverførsler.
Konsistens er dog en glidende skala og et emne for dybt at dække her. I NoSQL-verdenen falder konsistensen generelt i en af to lejre:
-
ACID-konsistens (ACID står for Atomicitet, Konsistens, Isolering, Holdbarhed): ACID betyder, at når data er skrevet, har du fuld konsistens i læser.
-
Eventuel konsistens (BASE): BASE betyder, at når data er skrevet, vil det til sidst virke som læsning.
Der er ikke krævet en kamp mellem mennesker, som tror på en stærk sammenhæng i en database, og de der tror det absolut er påkrævet (oversæt folk til NoSQL virksomheder 'marketingafdelinger! ).
Virkeligheden er et sted imellem. Er det ligegyldigt, at en persons Facebook-indlæg ikke ses af alle sine venner i fem minutter? Nej, sandsynligvis ikke. Skift "Facebook-indlæg" til "milliard-dollar-finansiel transaktion", og din holdning ændrer sig hurtigt! Hvilken konsistens tilgang du vælger afhænger af situationen. Efter min opfattelse er stærk konsistens altid det valg i missionskritiske virksomhedssystemssituationer.
ACID
ACID er et generelt sæt principper for transaktionssystemer, ikke noget der kun er knyttet til relationelle systemer eller endda bare databaser, så det er værd at vide om. ACID betyder i grunden, " Denne database har faciliteter til at stoppe dig fra at beskadige eller miste data, ", som ikke er givet for alle databaser. Faktisk leverer langt de fleste NoSQL-databaser ikke ACID-garantier.
Foundation DB, MarkLogic og Neo4j er bemærkelsesværdige undtagelser. Nogle NoSQL-databaser giver en lavere grad af garanti kaldet Check and Set , der kontrollerer, om en anden har ændret et dokument, før en transaktion kan gennemføres. Denne adfærd er normalt begrænset, fordi den har tendens til at blive implementeret på en enkelt rekordbasis.
MongoDB er en bemærkelsesværdig database, der giver mulighed for Check and Set. Med MongoDB kan en hel node-værdi af data låses under en opdatering, hvorved alle læses og alle skrives, indtil operationen er færdig.Selskabet arbejder dog på at fjerne denne begrænsning.
BASE
BASE betyder, at i stedet for at lave ACID-garantier, har databasen en indstillelig balance for konsistens og datatilgængelighed. Dette er typisk tilfældet, når noder i en given databaseklynge fungerer som primære ledere af en del af databasen, og andre noder indeholder skrivebeskyttede kopier.
For at sikre, at alle klienter ser alle opdateringer (det vil sige, at de har en ensartet visning af dataene), skal en skrivning til den primære node, der indeholder dataene, låses, indtil alle læserreplikater er opdaterede. Dette kaldes en to - faseforpligning - ændringen foretages lokalt, men anvendes kun og bekræftes kun til klienten, når alle andre noder opdateres.
BASE slapper af dette krav, idet der kun kræves en delmængde af noderne, der indeholder de samme data, der skal opdateres for at transaktionen skal lykkes. Nogle gange efter at transaktionen er begået, opdateres den skrivebeskyttede kopi.
Fordelen ved denne tilgang er, at transaktionerne er forpligtet hurtigere. At have læsbare live replikaer betyder også, at du kan sprede din data læse belastning, hvilket gør læsning hurtigere.
Ulempen er, at kunder, der forbinder til nogle af de læste replikaer, kan se forældede oplysninger i en ubestemt periode. I nogle scenarier er denne tilstand fint. Hvis du sender en ny besked på Facebook, og nogle af dine venner ikke ser det i et par minutter, er det ikke et stort tab. Hvis du sender en betalingsordre til din bank, kan du dog have en øjeblikkelig transaktion.
En alternativ tilgang til read-only replikaer er at have en delt - intet klynge, hvor kun ét knudepunkt på en klynge altid betjener en bestemt del af databasen.
Fælles intet betyder ikke, at du mister replikering. Databaser, der anvender denne metode, replikerer typisk deres data til et sekundært område på en anden primærknude eller noder - men kun et knudepunkt er mesteren for læsning og skrivning til enhver tid.
Delte-ingenting-klynger har fordelen af en enklere konsistensmodel, men kræver en tofase-forpligtelse til at kopiere. Denne kendsgerning betyder, at transaktionen låses, mens alle replikaer opdateres. (En intern lås plus låsning til andre knudepunkter giver dig to faser.)
Dette har typisk mindre indflydelse end delte dataklynger med skrivebeskyttede replikaer, fordi delte-ikke-replika-dataområder ikke modtager læseanmodninger for det en del af databasen. Derfor er tofaseforbindelser hurtigere på en delt-ingenting-klynge end på en klynge med læsbare replikaer.
Valg af syre eller base?
Som du måske forventer, er meget af argumentet, fordi NoSQL-forhandlere kan skelne sig fra deres konkurrenter ved at påstå en anden, unik tilgang. Det er interessant at bemærke, at antallet af NoSQL-leverandører med ACID-overholdelse på deres køreplan.
Nogle NoSQL-databaser har ACID-overensstemmelse på deres køreplan, selvom de er fortalere for BASE, som viser, hvordan relevante ACID-garantier er til enterprise, mission - critical systemer.
Mange virksomheder anvender BASE-konsistensprodukter, når de tester ideer, fordi de er gratis, men derefter overgår til en ACID-kompatibel betalt database, når de ønsker at gå live på et missionskritisk system.
Den nemmeste måde at afgøre, om du har brug for ACID, er at overveje de interaktioner folk og andre systemer har med dine data. Hvis du f.eks. Tilføjer eller opdaterer data, er det vigtigt, at den allerførste forespørgsel er i stand til at se ændringen? Med andre ord er vigtige beslutninger hængende på databasens nuværende tilstand? Vil man se lidt forældede data, betyder at disse beslutninger kan være dårligt fejlbehæftet?
I finansielle tjenesteydelser er behovet for sammenhæng åbenbar. Tænk på, at handlende køber lager. De skal kontrollere kontantbalancen før handel for at sikre, at de har penge til at dække handlen. Hvis de ikke ser den korrekte balance, vil de beslutte at bruge penge på en anden transaktion. Hvis den database, de spørger efter, kun er i sidste ende konsekvent, kan de muligvis ikke se en mangel på tilstrækkelige midler og dermed udsætte deres organisation for økonomisk risiko.
Lignende tilfælde kan bygges til ACID over BASE i sundhedspleje, forsvar, intelligens og andre sektorer. Alt sammen kolliderer dataene og vigtigheden af både aktualitet og datasikkerhed.