Graph Databases for Beginners: ACID vs. BASE Explained

kun on kyse NoSQL-tietokannoista, tietojen yhdenmukaisuusmallit voivat joskus olla silmiinpistävän erilaisia kuin relaatiotietokannoissa käytetyt mallit (sekä aivan erilaisia kuin muissa NoSQL-varastoissa).
kaksi yleisintä konsistenssimallia tunnetaan lyhenteillä happo ja emäs. Vaikka ne ovat usein vastakkain taistelussa lopullisesta voitosta (olkaa hyvä ja tehkää siitä video), molemmat johdonmukaisuus mallit tulevat etuja – ja haittoja – eikä kumpikaan ole aina täydellinen sovi.
tarkastellaan lähemmin molempien tietokantamallien kompromisseja.

Opi happo-ja perustietomallien erot ja niiden kompromissit

tässä aloittelijoille suunnatussa Blogisarjassa vien sinut graafitekniikan perusteiden läpi olettaen, että sinulla on vähän (tai ei lainkaan) taustaa tilassa. Viime viikkoina olemme käsitelleet miksi graafiteknologia on tulevaisuutta, miksi kytketty data asiat, perusteet (ja sudenkuopat) tietojen mallinnus, miksi tietokantakyselykielellä on väliä, erot imperatiivisten ja deklaratiivisten kyselykielten välillä, ennustava mallinnus graafiteorian avulla, graafin hakualgoritmien perusteet ja miksi tarvitsemme NoSQL-tietokantoja.
tällä viikolla tutustumme tarkemmin ACID-ja BASE-tietokantojen johdonmukaisuusmallien keskeisiin eroihin ja siihen, mitä niiden kompromissit tarkoittavat datatransaktioillesi.

hapon Konsistenssimalli

monet kehittäjät tuntevat hapon transaktiot työskennellessään relaatiotietokantojen kanssa. Sellaisenaan hapon konsistenssimalli on ollut normi jo jonkin aikaa.
keskeinen HAPPOTAKUU on, että se tarjoaa turvallisen ympäristön, jossa voit käyttää tietojasi. ACID-lyhenne tulee sanoista:
Atomic

    • kaikki operaatiot transaktiossa onnistuvat tai jokainen operaatio rullataan takaisin.

johdonmukainen

    • tapahtuman toteutuessa tietokanta on rakenteellisesti vakaa.

eristetyt

  • transaktiot eivät riitele keskenään. Kiistanalainen pääsy tietoihin on moderoitu tietokanta niin, että tapahtumat näyttävät käynnissä peräkkäin.

kestävä

    • transaktion soveltamisen tulokset ovat pysyviä, jopa epäonnistumisten ilmetessä.

happo-ominaisuudet tarkoittavat, että kun tapahtuma on valmis, sen tiedot ovat yhdenmukaisia (tech lingo: write consistency) ja vakaita levyllä, johon voi liittyä useita erillisiä muistipaikkoja.
kirjoitusasu on sovelluskehittäjille hieno asia, mutta se vaatii myös hienostunutta lukitusta, joka on yleensä raskassarjainen kuvio useimmissa käyttötapauksissa.
kun on kyse NoSQL-teknologioista, useimmat graafitietokannat (mukaan lukien Neo4j) käyttävät HAPONKESTÄVYYSMALLIA varmistaakseen, että tiedot ovat turvallisia ja johdonmukaisesti tallennettuja.

Peruskoostumusmalli

monien domainien ja käyttötapausten kohdalla happamat transaktiot ovat paljon pessimistisempiä (eli ne ovat enemmän huolissaan tietoturvasta) kuin domain todellisuudessa edellyttää.
NoSQL-tietokantamaailmassa happamat transaktiot eivät ole yhtä muodikkaita, koska joissakin tietokannoissa on löysätty välittömän johdonmukaisuuden, tietojen tuoreuden ja tarkkuuden vaatimuksia muiden hyötyjen, kuten mittakaavan ja sietokyvyn saavuttamiseksi.
(erityisesti. Net-pohjainen RavenDB on bucked suuntaus aggregaattikauppojen tukemiseen ACID transactions.)
näin BASE-lyhenne hajoaa:
Basic Availability

    • tietokanta näyttää toimivan suurimman osan ajasta.

Soft-state

    • myymälöiden ei tarvitse olla kirjoitusyhtenäisiä, eikä eri replikoiden tarvitse olla keskenään yhteneviä koko ajan.

mahdollinen johdonmukaisuus

  • varastoissa ilmenee johdonmukaisuutta jossain myöhemmässä vaiheessa (esim.laiskasti lukuaikaan).

EMÄSOMINAISUUDET ovat paljon väljemmät kuin HAPPOTAKUUT, mutta näiden kahden konsistenssimallin välillä ei ole suoraa yksi yhteen-kartoitusta (pistettä, jota ei luultavasti voi liioitella).
BASE data store arvot saatavuus (koska se on tärkeää mittakaavassa), mutta se ei tarjoa taattua johdonmukaisuutta toistettujen tietojen kirjoitusaika. Kaiken kaikkiaan pohja johdonmukaisuus malli tarjoaa vähemmän tiukka varmuus kuin ACID: data on johdonmukainen tulevaisuudessa, joko lukuaikaan (esim., Riak) tai se on aina johdonmukainen, mutta vain tiettyjen jalostettujen menneisyyden tilannekuvia (esim., Datomic).
peruskoostumusmallia käyttävät ensisijaisesti aggregaattivarastot, kuten sarakeperhe, avainarvo ja asiakirjavarastot.

Suunnistushappo vs. BASE Trade-offs

ei ole oikeaa vastausta siihen, tarvitseeko sovelluksesi happo vs. emäskoostuvuusmallia. Kehittäjien ja data-arkkitehtien tulisi valita tietojen johdonmukaisuuden kompromissit tapauskohtaisesti-ei vain sen perusteella, mitä trendejä tai mitä mallia käytettiin aiemmin.
koska BASE on löyhä johdonmukaisuus, kehittäjien on oltava asiantuntevampia ja tarkempia johdonmukaisten tietojen suhteen, jos he valitsevat sovellukselleen BASE-myymälän. On tärkeää tuntea valitsemasi aggregaattikaupan PERUSKÄYTTÄYTYMINEN ja työskennellä näiden rajoitusten puitteissa.
toisaalta pohjarajoitusten ympärille suunniteltu suunnittelu voi joskus olla suuri haitta verrattuna HAPPOTRANSAKTIOIDEN yksinkertaisuuteen. Täysin hapan tietokanta sopii täydellisesti käyttötapauksiin, joissa tietojen luotettavuus ja johdonmukaisuus ovat välttämättömiä (pankkitoiminta, kuka tahansa?).
lähiviikkoina sukellamme lisää happo / emäs-yksityiskohtia, kun on kyse aggregaattikaupoista ja muista graafitekniikoista.

Siirry perusasioiden ulkopuolelle:
Hanki kopio O ’ Reilly Graph Databases-kirjasta ja ala käyttää graafitekniikkaa reaalimaailman ongelmien ratkaisemiseen.
Get The Book

Catch with the other Of The Graph Databases for Beginners series:

    • Why Graph Technology Is the Future
    • Why Connected Data Matters
    • the Basics of Data Modeling
    • Data Modeling sudenkuopat välttää
    • Why a Database Query Language Matters (More Than you Think)
    • Imperative vs. Declarative Query Languages: What ’ s the Difference?
    • Graafiteoria & ennakoiva mallinnus
    • Graafihakualgoritmin perusteet
    • miksi tarvitsemme NoSQL-tietokantoja
    • kierros Aggregaattivarastoissa
    • muut Graafitietotekniikat
    • natiivi vs. ei-natiivi Graafitekniikka



Vastaa

Sähköpostiosoitettasi ei julkaista.