Innehållsförteckning:
- ACID är en generell uppsättning principer för transaktionssystem, inte något som endast är kopplat till relationella system, eller till och med bara databaser, så det är väl värt att veta om. Syra betyder i grunden, "
- BASE betyder att i stället för att göra ACID-garantier, har databasen en inställbar balans av konsistens och tillgänglighet av data. Detta är vanligtvis fallet när noder i ett visst databaskluster fungerar som primära chefer för en del av databasen, och andra noder håller skrivskyddade replikor.
- Som du kanske förväntar dig är mycket av argumentet att NoSQL-leverantörer kan skilja sig från sina konkurrenter genom att hävda ett annat, unikt tillvägagångssätt. Det är intressant att notera dock antalet NoSQL-leverantörer med ACID-överensstämmelse på deras färdplan.
Video: Tillämpa Guds Ord - Simon Johansson 2024
Egenskapen för en databas i en databas betyder att När data efter en gång har skrivits till en databas, kan följande frågor komma åt data och få en konsekvent bild av data. I praktiken betyder det att om du skriver en post till en databas och sedan omedelbart begär det, är du garanterad att se den. Det är särskilt användbart för saker som Amazon-order och banköverföringar.
ACID-konsistens (ACID står för atomitet, konsistens, isolering, hållbarhet):
-
ACID betyder att när data har skrivits har du full konsistens i läser. Eventuell konsistens (BASE):
-
BASE betyder att när data har skrivits så kommer det så småningom att framstå som läsning.
personer till NoSQL företag "marknadsavdelningar! ). Verkligheten ligger någonstans däremellan. Det spelar ingen roll att en persons Facebook-post inte ses av alla hans vänner i fem minuter? Nej, förmodligen inte. Ändra "Facebook-post" till "miljard dollar-finansiell transaktion", och din inställning förändras snabbt! Vilken konsistensmetod du väljer beror på situationen. Enligt min erfarenhet är stark konsistens alltid valet i missionskritiska företagsystemssituationer.
ACID är en generell uppsättning principer för transaktionssystem, inte något som endast är kopplat till relationella system, eller till och med bara databaser, så det är väl värt att veta om. Syra betyder i grunden, "
Den här databasen har möjligheter att stoppa dig från att korrumpera eller förlora data, " som inte är angivet för alla databaser. Faktum är att de allra flesta NoSQL-databaser inte ger ACID-garantier. Foundation DB, MarkLogic och Neo4j är noterbara undantag. Vissa NoSQL-databaser ger en lägre garanti som heter
Check and Set som verifierar om någon annan har ändrat ett dokument innan en transaktion kan slutföras. Detta beteende är vanligtvis begränsat eftersom det tenderar att genomföras på en enda rekordbasis. MongoDB är en anmärkningsvärd databas som tillhandahåller Check and Set-funktioner. Med MongoDB kan en hel nod-värde av data låsas under en uppdatering, vilket förhindrar att alla läser och alla skriver operationer tills operationen är klar.Företaget arbetar dock med att ta bort denna begränsning.
BASE
BASE betyder att i stället för att göra ACID-garantier, har databasen en inställbar balans av konsistens och tillgänglighet av data. Detta är vanligtvis fallet när noder i ett visst databaskluster fungerar som primära chefer för en del av databasen, och andra noder håller skrivskyddade replikor.
För att säkerställa att varje klient ser alla uppdateringar (det vill säga de har en konsekvent bild av data) måste en skriv till den primära noden som innehåller data låsa tills alla läsreplikat är aktuella. Detta kallas en
två - fasförband - ändringen görs lokalt men appliceras och bekräftas endast för klienten när alla andra noder uppdateras. BASE slappnar av det här kravet och kräver endast en delmängd av noderna med samma data som ska uppdateras för att transaktionen ska lyckas. Någon gång efter att transaktionen har åtagits uppdateras den skrivskyddade repliken.
Fördelen med detta tillvägagångssätt är att transaktionerna åtagits snabbare. Att ha läsbara levande replikor betyder också att du kan sprida din datalastning, vilket gör behandlingen snabbare.
Nackdelen är att klienter som ansluter till några av de läste replikerna kan se utdaterad information under en ospecificerad tid. I vissa scenarier är detta tillstånd bra. Om du skickar ett nytt meddelande till Facebook och några av dina vänner inte ser det i ett par minuter är det inte en stor förlust. Om du skickar en betalningsorder till din bank kanske du vill ha en omedelbar transaktion.
Ett alternativt tillvägagångssätt för skrivskyddade replikor är att ha ett
delat - inget -kluster där endast en nod på ett kluster tjänar alltid en viss del av databasen. Delat ingenting betyder inte att du förlorar replikering. Databaser som använder denna metod replikerar vanligtvis deras data till ett sekundärt område på en annan primär nod eller noder - men endast en nod är befälhavaren för att läsa och skriva när som helst.
Delade-ingenting-klyftor har fördelen av en enklare konsistensmodell men kräver en tvåfasig förpliktelse att replikera. Detta faktum betyder att transaktionen låser medan alla replikor uppdateras. (Ett internt lås plus låsning för andra noder ger dig två faser.)
Detta har vanligtvis mindre effekt än delade dataklyftor med skrivskyddade replikor, eftersom delade-ingenting-replikdataområden inte mottar läsförfrågningar för det del av databasen. Därför är tvåfas-förpliktelser snabbare på ett delat-inget-kluster än på ett kluster med läsbara repliker.
Välja sur eller bas
Som du kanske förväntar dig är mycket av argumentet att NoSQL-leverantörer kan skilja sig från sina konkurrenter genom att hävda ett annat, unikt tillvägagångssätt. Det är intressant att notera dock antalet NoSQL-leverantörer med ACID-överensstämmelse på deras färdplan.
Vissa NoSQL-databaser har ACID-överensstämmelse i sin färdplan, trots att de är förespråkare för BASE, vilket visar hur relevanta ACID-garantier är för
enterprise, mission - critical -system. Många företag använder BASE-konsistensprodukter när de testa idéer eftersom de är gratis men sedan migrera till en ACID-kompatibel betald databas när de vill leva på ett missionskritiskt system.
Det enklaste sättet att avgöra om du behöver ACID är att överväga de interaktioner människor och andra system har med dina data. Om du till exempel lägger till eller uppdaterar data, är det viktigt att nästa nästa fråga kan se ändringen? Med andra ord är viktiga beslut som hänger på databasens nuvarande tillstånd? Skulle vi kunna se lite föråldrad data betyder att dessa beslut kan vara dårligt bristfälliga?
I finansiella tjänster är behovet av konsistens uppenbart. Tänk på handlare som köper lager. De måste kontrollera kontantbalansen före handel för att se till att de har pengar för att täcka handeln. Om de inte ser rätt balans, bestämmer de sig för att spendera pengar på en annan transaktion. Om databasen som de frågar är endast i slutändan konsekvent kan de inte se brist på tillräckliga medel och därigenom exponera deras organisation för ekonomisk risk.
Liknande fall kan byggas för ACID över BASE inom hälsovård, försvar, intelligens och andra sektorer. Allting pekar dock på data, och vikten av både aktualitet och datasäkerhet.