Huis Persoonlijke financiën Consistente methoden toepassen in NoSQL - dummies

Consistente methoden toepassen in NoSQL - dummies

Inhoudsopgave:

Anonim

De consistentie -eigenschap van een database betekent dat Zodra gegevens met succes in een database zijn geschreven, hebben de volgende query's toegang tot de gegevens en krijgen ze een consistent beeld van de gegevens. In de praktijk betekent dit dat als u een record naar een database schrijft en onmiddellijk die record aanvraagt, u dit zeker kunt zien. Het is vooral handig voor zaken als Amazon-bestellingen en bankoverschrijvingen.

Consistentie is echter een glijdende schaal en een onderwerp dat te diep is om hier te behandelen. In de NoSQL-wereld valt consistentie meestal in een van de twee kampen:

  • ACID Consistency (ACID staat voor Atomicity, Consistency, Isolation, Durability): ACID betekent dat zodra gegevens zijn geschreven, u volledige consistentie hebt in leest.

  • Eventuele consistentie (BASE): BASE betekent dat zodra gegevens zijn geschreven, deze uiteindelijk voor lezen zullen verschijnen.

Er is een strijd gaande tussen mensen die menen dat een sterke consistentie in een database niet vereist is en dat degenen die dit absoluut moeten doen, verplicht zijn (naar mensen van NoSQL naar mensen naar 'marketingafdelingen! ).

De realiteit zit ergens tussenin. Maakt het uit dat iemands Facebook-bericht vijf minuten lang niet door al zijn vrienden wordt gezien? Nee, waarschijnlijk niet. Verander "Facebook bericht" in "miljard-dollar-financiële transactie", en je houding verandert snel! Welke consistentiebenadering u kiest, hangt af van de situatie. In mijn ervaring is sterke consistentie echter altijd de keuze in bedrijfskritieke situaties van bedrijfssystemen.

ACID

ACID is een algemene set principes voor transactionele systemen, niet iets dat puur aan relationele systemen is gekoppeld, of zelfs maar aan databases, dus het is de moeite waard om te weten. ACID betekent in feite: " Deze database heeft voorzieningen om te voorkomen dat u corrumpeert of gegevens verliest ", wat niet geldt voor alle databases. Het overgrote deel van de NoSQL-databases biedt zelfs geen ACID-garantie.

Foundation DB, MarkLogic en Neo4j zijn opmerkelijke uitzonderingen. Sommige NoSQL-databases bieden een lagere garantie, Checken en instellen , die verifieert of iemand anders een document heeft gewijzigd voordat een transactie kan worden voltooid. Dit gedrag is meestal beperkt omdat het meestal wordt geïmplementeerd op basis van één record.

MongoDB is een opmerkelijke database die Check- en Set-mogelijkheden biedt. Met MongoDB kan een volledige knooppuntwaarde van gegevens worden vergrendeld tijdens een update, waardoor alle leesbewerkingen en alle schrijfbewerkingen worden voorkomen totdat de bewerking is voltooid.Het bedrijf werkt echter aan het verwijderen van deze beperking.

BASE

BASE betekent dat in plaats van ACID-garanties te maken, de database een afstembare balans tussen consistentie en beschikbaarheid van gegevens heeft. Dit is meestal het geval wanneer knooppunten in een gegeven databasecluster fungeren als primaire beheerders van een deel van de database en andere knooppunten read-only replica's bevatten.

Om ervoor te zorgen dat elke client alle updates ziet (dat wil zeggen, ze hebben een consistente weergave van de gegevens), moet een schrijven naar het primaire knooppunt dat de gegevens bevat, worden vergrendeld totdat alle leesreplica's up-to-date zijn. Dit wordt een twee - fase commit genoemd - de wijziging wordt lokaal aangebracht, maar alleen toegepast en bevestigd aan de client wanneer alle andere knooppunten worden bijgewerkt.

BASE versoepelt deze vereiste, waardoor alleen een subset van de knooppunten met dezelfde gegevens moet worden bijgewerkt om de transactie te laten slagen. Enige tijd nadat de transactie is vastgelegd, wordt de alleen-lezen replica bijgewerkt.

Het voordeel van deze aanpak is dat transacties sneller worden vastgelegd. Het hebben van leesbare live replica's betekent ook dat u uw dataleeslading kunt spreiden, waardoor u sneller kunt lezen.

Het nadeel is dat clients die verbinding maken met sommige van de leesreplica's, mogelijk gedurende een onbepaalde tijd verouderde informatie zien. In sommige scenario's is deze toestand prima. Als je een nieuw bericht plaatst op Facebook en sommige van je vrienden het een paar minuten niet zien, is dat geen groot verlies. Als u echter een betalingsopdracht naar uw bank verzendt, wilt u misschien meteen een transactie.

Een alternatieve benadering voor read-only replica's is het hebben van een gedeelde - niets cluster waarin slechts één knooppunt in een cluster altijd een bepaald deel van de database serveert.

Gedeeld-niets betekent nog niet dat u de replicatie kwijtraakt. Databases die deze methode gebruiken, repliceren hun gegevens doorgaans naar een secundair gebied op een ander primair knooppunt of knooppunten - maar slechts één knooppunt is de master voor het lezen en schrijven op elk gewenst moment.

Shared-nothing-clusters hebben het voordeel van een eenvoudiger consistentiemodel, maar vereisen een COMMIT in tweefasen voor replica's. Dit feit betekent dat de transactie wordt vergrendeld terwijl alle replica's worden bijgewerkt. (Een intern slot plus vergrendeling voor andere knooppunten geeft u twee fasen.)

Dit heeft doorgaans minder impact dan gedeelde gegevensclusters met alleen-lezen replica's, omdat gedeelde nihiet gerepliceerde gegevensgebieden geen leesverzoeken voor die delen ontvangen deel van de database. Daarom zijn tweefasige commits sneller op een shared-nothing cluster dan op een cluster met leesbare replica's.

Kiezen voor ACID of BASE?

Zoals je zou verwachten, is veel van het argument dat NoSQL-leveranciers zich kunnen onderscheiden van hun concurrenten door een andere, unieke aanpak te claimen. Het is echter interessant om het aantal NoSQL-leveranciers met ACID-compliance op hun routekaart te vermelden.

Sommige NoSQL-databases hebben ACID-conformiteit op hun routekaart, ook al zijn ze voorstanders van BASE, wat aantoont hoe relevant ACID-garanties zijn voor enterprise, mission - kritieke systemen.

Veel bedrijven gebruiken BASE-consistentieproducten bij het testen van ideeën, omdat ze gratis zijn, maar vervolgens migreren naar een ACID-compatibele betaalde database wanneer ze live willen gaan op een bedrijfskritisch systeem.

De eenvoudigste manier om te bepalen of u ACID nodig hebt, is door rekening te houden met de interacties die mensen en andere systemen hebben met uw gegevens. Als u bijvoorbeeld gegevens toevoegt of bijwerkt, is het dan belangrijk dat de volgende query de wijziging kan zien? Met andere woorden, hangen belangrijke beslissingen af ​​van de huidige staat van de database? Zou het zien van enigszins verouderde gegevens betekenen dat die beslissingen fataal tekort kunnen schieten?

In financiële dienstverlening is de behoefte aan consistentie duidelijk. Denk aan handelaren die aandelen kopen. Ze moeten het kassaldo controleren voordat ze handelen, om er zeker van te zijn dat ze het geld hebben om de handel te dekken. Als ze het juiste saldo niet zien, zullen ze besluiten om geld uit te geven aan een andere transactie. Als de database die wordt opgevraagd pas uiteindelijk consistent is, wordt het gebrek aan voldoende geld mogelijk niet zichtbaar, waardoor hun organisatie wordt blootgesteld aan financieel risico.

Vergelijkbare gevallen kunnen worden gebouwd voor ACID over BASE in de gezondheidszorg, defensie, inlichtingendiensten en andere sectoren. Het komt echter allemaal neer op de gegevens en het belang van zowel tijdigheid als gegevensbeveiliging.

Consistente methoden toepassen in NoSQL - dummies

Bewerkers keuze

Setup Menu 3 op de Rebel T6i / 750D - dummies

Setup Menu 3 op de Rebel T6i / 750D - dummies

Er wachten nogal wat aanpassingsmogelijkheden op de Setup-menu van de Rebel T6i / 750D 3. Setup-menu 3, weergegeven in de volgende afbeelding, bevat de volgende aanpassingsmogelijkheden: Schermkleur: standaard bevat het scherm Opname-instellingen opnamegegevens in het wit op een eenvoudige zwarte achtergrond. Er worden grijstinten in grijstinten gebruikt en accenten worden meestal oranje gemarkeerd. ...

Bewerkers keuze

Tekst invoeren en in een PowerPoint-dia passen - dummies

Tekst invoeren en in een PowerPoint-dia passen - dummies

Tekst aan een inhoud toevoegen tijdelijke aanduiding in Microsoft PowerPoint, klik op het gebied Klik om tekst toe te voegen en typ wat u wilt. Als u een ander type inhoud wilt toevoegen, klikt u op het pictogram in de tijdelijke aanduiding voor het gewenste type. Als u meer tekst typt dan in dat tekstvak past (vooral gebruikelijk voor ...

Voor senioren: de Prullenbak van uw computer leegmaken - dummies

Voor senioren: de Prullenbak van uw computer leegmaken - dummies

De Prullenbak op uw computer bevat onlangs verwijderde items. Uw oude bestanden bevinden zich in de Prullenbak en u kunt ze ophalen totdat u deze leegt of totdat deze de maximale maximale grootte heeft bereikt, en Windows automatisch enkele bestanden dumpt. Nadat u de Prullenbak hebt leeggemaakt, zijn alle bestanden daarin niet beschikbaar voor ...

Hoe tekst in te voeren in een Microsoft Office-document - dummies

Hoe tekst in te voeren in een Microsoft Office-document - dummies

Nadat u een document hebt gemaakt, bent u klaar om te beginnen met typen. Tekst op de pagina plaatsen (of op het scherm) is een beetje anders in elk van de drie grote Microsoft Office-toepassingen: Word, Excel en PowerPoint. Woord: Het belangrijkste werkgebied van het programma is een lege lei waarop u rechtstreeks kunt typen. Klik gewoon in de ...

Bewerkers keuze

Animatie maken met de HTML5-canvastag - dummies

Animatie maken met de HTML5-canvastag - dummies

Hoewel de HTML5-canvastag misschien niet als vervanging voor Flash als mechanisme voor het implementeren van games en animaties in de browser, is het redelijk eenvoudig om animaties aan een canvasafbeelding toe te voegen. De sleutel is om de animatiefuncties te gebruiken die al in de browser zijn ingebouwd. Basisstructuur van de animatielus in HTML5-canvas Een animatie ...

Hoe externe stijlen maken in CSS3 - dummies

Hoe externe stijlen maken in CSS3 - dummies

De meeste ontwikkelaars gebruiken externe stijlen in CSS3 om te verkleinen de hoeveelheid werk die nodig is om een ​​site te onderhouden. Een. CSS-bestand bevat alle stijlen voor de site, wat betekent dat het veranderen van een stijl voor de hele site net zo eenvoudig is als het veranderen van dat ene bestand (in plaats van elke pagina). Omdat de wijziging plaatsvindt in slechts ...

Hoe u volledige interactieve CSS3-toepassingen maakt met YUI - dummies

Hoe u volledige interactieve CSS3-toepassingen maakt met YUI - dummies

De Yahoo! Gebruikersinterface (YUI) -bibliotheek (Yuilibrary) is een complete ontwikkeling - API verwant met jQuery en jQuery UI CSS3 gecombineerd in sommige opzichten en rijker dan deze bibliotheken in andere. Dit is een complexe API die is ontworpen om aan de behoeften van grotere applicaties te voldoen. Eigenlijk moet je echt de tutorials doorlopen, ...