Video: SQL vs. Hadoop: Acid vs. Base 2025
Et kjennetegn ved relationsdatabasesystemer er noe kjent som ACID-overholdelse. Som du kanskje har gjettet, er ACID en akronym - de individuelle bokstaver, som er ment å beskrive en karakteristikk for individuelle databasetransaksjoner, kan utvides som beskrevet i denne listen:
-
Atomicity: Databasetransaksjonen må fullstendig lykkes eller helt mislykkes. Delvis suksess er ikke tillatt.
-
Konsistens: Under databasetransaksjonen går RDBMS fra en gyldig tilstand til en annen. Staten er aldri ugyldig.
-
Isolering: Klientens databasetransaksjon må forekomme isolert fra andre klienter som forsøker å transaksere med RDBMS.
-
Holdbarhet: Datoperasjonen som var en del av transaksjonen, må gjenspeiles i ikke-flyktig lagring (dataminne som kan hente lagret informasjon, selv om den ikke er drevet - som en harddisk) og fortsetter etter Transaksjonen fullføres vellykket. Transaksjonsfeil kan ikke overlate dataene i en delvis forpliktet tilstand.
Visse brukstilfeller for RDBMSer, som for eksempel online transaksjonsbehandling, avhenger av ACID-kompatible transaksjoner mellom klienten og RDBMS for at systemet skal fungere skikkelig. Et godt eksempel på en ACID-kompatibel transaksjon er en overføring av midler fra en bankkonto til en annen.
Dette brytes ned i to databasetransaksjoner, hvor den opprinnelige kontoen viser en tilbaketrekning, og destinasjonskontoen viser et innskudd. Åpenbart må disse to transaksjonene knyttes sammen for å være gyldig, slik at hvis en av dem feiler, må hele operasjonen mislykkes for å sikre at begge saldoene forblir gyldige.
Hadoop selv har ikke noe konsept for transaksjoner (eller til og med poster, for den saks skyld), så det er tydeligvis ikke et system med syre. Tenker mer spesifikt om datalagring og prosessprosjekter i hele Hadoop-økosystemet, ingen av dem er også helt syre-kompatible. Men de gjør gjenspeiler egenskaper som du ofte ser i NoSQL datalager, så det er noen presedens for Hadoop-tilnærmingen.
Et nøkkelbegrep bak NoSQL datalager er at ikke alle applikasjoner trenger virkelig ACID-kompatible transaksjoner. Avslappende på visse ACID-egenskaper (og beveger seg vekk fra relasjonsmodellen) har åpnet et vell av muligheter, noe som har gjort det mulig for noen NoSQL datalager å oppnå massiv skalerbarhet og ytelse for sine niseprogrammer.
Mens ACID definerer nøkkelegenskapene som kreves for pålitelig transaksjonsbehandling, krever NoSQL verden forskjellige egenskaper for å muliggjøre fleksibilitet og skalerbarhet.Disse motstridende egenskapene er smart innfanget i akronymet BASE:
-
B asically A tilgjengelig: Systemet er garantert tilgjengelig for forespørsel fra alle brukere. (Ingen isolasjon her.)
-
S ofte Stat: Verdiene som er lagret i systemet, kan endres på grunn av den eventuelle konsistensmodellen, som beskrevet i neste kule.
-
E ventuelt konsistent: Når data legges til systemet, blir systemets tilstand gradvis kopiert på tvers av alle noder. For eksempel, i Hadoop, når en fil er skrevet til HDFS, blir replikene til datablokker opprettet i forskjellige datodenoder etter at de opprinnelige datablokkene er skrevet. I den korte perioden før blokkene blir replisert, er tilstanden til filsystemet ikke konsistent.
Akronymet BASE er litt opptatt, ettersom de fleste NoSQL-datalager ikke helt forlater alle ACID-egenskapene - det er egentlig ikke det polære motsatte konseptet som navnet tilsier, med andre ord. Også den myke tilstanden og til slutt konsistente egenskaper utgjør det samme, men poenget er at ved å slappe av konsistens, kan systemet horisontalt skala (mange noder) og sikre tilgjengelighet.
Ingen diskusjon om NoSQL vil være komplett uten å nevne CAP-ordningen, som representerer de tre typer garantier arkitekter har som mål å gi i sine systemer:
-
Konsistens: I likhet med C i ACID, alle nodene i systemet ville ha samme visning av dataene når som helst.
-
Tilgjengelighet: Systemet reagerer alltid på forespørsler.
-
Partisjonstoleranse: Systemet forblir online hvis nettverksproblemer oppstår mellom systemknutepunktene.
CAP-ordningen sier at i distribuerte nettverkssystemer må arkitekter velge to av disse tre garantiene - du kan ikke love dine brukere alle tre. Det gir deg de tre mulighetene som vises:
-
Systemer som bruker tradisjonelle relasjonelle teknologier er normalt ikke partisjonstolerante, slik at de kan garantere konsistens og tilgjengelighet. Kort sagt, hvis en del av disse tradisjonelle relasjonelle teknologisystemene er frakoblet, er hele systemet offline.
-
Systemer hvor partisjonstoleranse og tilgjengelighet er av største betydning kan ikke garantere konsistens, fordi oppdateringer (som ødelegger av konsistens) kan gjøres på hver side av partisjonen. Nøkkelverdien lagrer Dynamo og CouchDB, og kolonnebutikken Cassandra er populære eksempler på partisjonstolerant / tilgjengelighet (PA) -systemer.
-
Systemer hvor partisjonstoleranse og konsistens er av største betydning kan ikke garantere tilgjengelighet fordi systemene returnerer feil til partisjonert tilstand er løst.
Hadoopbaserte datalager betraktes som CP-systemer ( c onsistent og p artisjon tolerant). Med data lagret redundantly over mange slave noder, kan utbrudd til store deler (partisjoner) av en Hadoop-klynge tolereres. Hadoop anses å være konsistent fordi den har en sentral metadata-butikk (NameNode) som opprettholder en enkelt, konsistent visning av data lagret i klyngen.
