NoSQL Tutorial: Hvad er, typer af NoSQL-databaser og eksempler

Hvad er NoSQL?

NoSQL Database er et ikke-relationelt datastyringssystem, der ikke kræver et fast skema. Det undgår sammenføjninger og er let at skalere. Hovedformålet med at bruge en NoSQL-database er til distribuerede datalagre med enorme datalagringsbehov. NoSQL bruges til Big data og real-time webapps. For eksempel indsamler virksomheder som Twitter, Facebook og Google terabyte af brugerdata hver eneste dag.

NoSQL database står for "Ikke kun SQL" eller "Ikke SQL." Selvom et bedre udtryk ville være "NoREL", fangede NoSQL. Carl Strozz introducerede NoSQL-konceptet i 1998.

Traditionel RDBMS bruger SQL-syntaks til at gemme og hente data for yderligere indsigt. I stedet omfatter et NoSQL-databasesystem en bred vifte af databaseteknologier, der kan lagre strukturerede, semistrukturerede, ustrukturerede og polymorfe data. Lad os forstå om NoSQL med et diagram i denne NoSQL database tutorial:

NoSQL-database

Hvorfor NoSQL?

Konceptet med NoSQL-databaser blev populært hos internetgiganter som Google, Facebook, Amazonosv., der beskæftiger sig med enorme mængder data. Systemets responstid bliver langsom, når du bruger RDBMS til enorme mængder data.

For at løse dette problem kunne vi "skalere" vores systemer ved at opgradere vores eksisterende hardware. Denne proces er dyr.

Alternativet til dette problem er at fordele databasebelastning på flere værter, når belastningen stiger. Denne metode er kendt som "udskalering".

NoSQL

NoSQL-databasen er ikke-relationel, så den skalerer ud bedre end relationsdatabaser, da de er designet med webapplikationer i tankerne.

Kort historie om NoSQL-databaser

  • 1998- Carlo Strozzi bruger udtrykket NoSQL for sin lette, open source relationsdatabase
  • 2000- Grafdatabase Neo4j lanceres
  • 2004- Google BigTable lanceres
  • 2005- CouchDB lanceres
  • 2007- Forskningspapiret vedr Amazon Dynamo er frigivet
  • 2008- Facebooks åbne kilder Cassandra projekt
  • 2009- Udtrykket NoSQL blev genindført

Funktioner i NoSQL

Ikke-relationel

  • NoSQL-databaser følger aldrig relationel model
  • Forsyn aldrig tabeller med flade poster med faste kolonner
  • Arbejd med selvstændige aggregater eller BLOB'er
  • Kræver ikke objektrelationel kortlægning og datanormalisering
  • Ingen komplekse funktioner som forespørgselssprog, forespørgselsplanlæggere, referenceintegritetssammenføjninger, ACID

Skemafri

  • NoSQL-databaser er enten skemafri eller har afslappede skemaer
  • Kræver ikke nogen form for definition af skemaet for dataene
  • Tilbyder heterogene strukturer af data i samme domæne
Funktioner i NoSQL
NoSQL er skemafri

Simpel API

  • Tilbyder brugervenlige grænseflader til lagring og forespørgsel på data
  • API'er tillader datamanipulation og udvælgelsesmetoder på lavt niveau
  • Tekstbaserede protokoller bruges mest med HTTP REST med JSON
  • For det meste brugt intet standardbaseret NoSQL-forespørgselssprog
  • Web-aktiverede databaser, der kører som internet-vendte tjenester

Distribueret

  • Flere NoSQL-databaser kan udføres på en distribueret måde
  • Tilbyder automatisk skalering og fail-over-funktioner
  • Ofte kan ACID-konceptet ofres for skalerbarhed og gennemløb
  • For det meste ingen synkron replikering mellem distribuerede noder Asynkron Multi-Master-replikering, peer-to-peer, HDFS-replikering
  • Giver kun en eventuel konsistens
  • Delte intet Architecture. Dette muliggør mindre koordination og højere fordeling.
Funktioner i NoSQL
NoSQL er delt ingenting.

Typer af NoSQL-databaser

NoSQL-databaser er hovedsageligt kategoriseret i fire typer: Nøgle-værdi-par, Kolonne-orienteret, Graf-baseret og Dokument-orienteret. Hver kategori har sine unikke egenskaber og begrænsninger. Ingen af ​​de ovenfor angivne databaser er bedre til at løse alle problemerne. Brugere bør vælge databasen baseret på deres produktbehov.

Typer af NoSQL-databaser:

  • Nøgleværdi-parbaseret
  • Kolonneorienteret graf
  • Grafer baseret
  • Dokumentorienteret

Typer af NoSQL-databaser

Nøgleværdiparbaseret

Data gemmes i nøgle/værdi-par. Den er designet på en sådan måde, at den kan håndtere mange data og tung belastning.

Nøgle-værdi par lagringsdatabaser gemmer data som en hash-tabel, hvor hver nøgle er unik, og værdien kan være en JSON, BLOB(binære store objekter), streng osv.

For eksempel kan et nøgle-værdi-par indeholde en nøgle som "Website" forbundet med en værdi som "Guru99".

Nøgleværdiparbaseret

Det er et af de mest grundlæggende NoSQL-databaseeksempler. Denne form for NoSQL-database bruges som en samling, ordbøger, associative arrays osv. Nøgleværdilagre hjælper udvikleren med at gemme skemaløse data. De fungerer bedst til indkøbskurvens indhold.

Redis, Dynamo, Riak er nogle NoSQL-eksempler på nøgleværdi-lagerdatabaser. De er alle baseret på Amazon's Dynamo papir.

Kolonne-baseret

Kolonneorienterede databaser arbejder på kolonner og er baseret på BigTable-papir fra Google. Hver kolonne behandles separat. Værdier af enkeltkolonnedatabaser gemmes sammenhængende.

Kolonnebaseret NoSQL-database

Kolonnebaseret NoSQL-database

De leverer høj ydeevne på aggregeringsforespørgsler som SUM, COUNT, AVG, MIN osv., da dataene er let tilgængelige i en kolonne.

Kolonnebaserede NoSQL-databaser er meget brugt til at administrere datavarehuse, business intelligence, CRM, bibliotekskortkataloger,

HBase, Cassandra, HBase, Hypertable er NoSQL-forespørgselseksempler på kolonnebaserede databaser.

Dokumentorienteret

Dokumentorienteret NoSQL DB gemmer og henter data som et nøgleværdipar, men værdidelen gemmes som et dokument. Dokumentet gemmes i JSON- eller XML-formater. Værdien forstås af DB og kan forespørges.

Relationel vs. Dokument

Relationel vs. Dokument

I dette diagram til venstre kan du se, at vi har rækker og kolonner, og til højre har vi en dokumentdatabase, som har en struktur, der ligner JSON. Nu til relationsdatabasen, skal du vide, hvilke kolonner du har og så videre. Men for en dokumentdatabase har du datalager som JSON-objekt. Du behøver ikke at definere, hvad der gør det fleksibelt.

Dokumenttypen bruges mest til CMS-systemer, bloggingplatforme, realtidsanalyse og e-handelsapplikationer. Det bør ikke bruges til komplekse transaktioner, der kræver flere operationer eller forespørgsler mod forskellige aggregerede strukturer.

Amazon SimpleDB, CouchDB, MongoDB, Riak, Lotus Notes, MongoDB, er populære Dokument stammer fra DBMS systemer.

Graf-baseret

En graftypedatabase gemmer entiteter samt relationerne mellem disse entiteter. Entiteten gemmes som en node med relationen som kanter. En kant giver et forhold mellem noder. Hver node og kant har en unik identifikator.

Graf-baseret

Sammenlignet med en relationsdatabase, hvor tabeller er løst forbundet, er en Graph-database en multi-relationel karakter. Gennemløbsforholdet er hurtigt, da de allerede er fanget i DB, og der er ingen grund til at beregne dem.

Graph base database mest brugt til sociale netværk, logistik, rumlige data.

Neo4J, uendelig graf, OrientDB, FlockDB er nogle populære grafbaserede databaser.

Forespørgselsmekanismeværktøjer til NoSQL

Den mest almindelige datahentningsmekanisme er den REST-baserede hentning af en værdi baseret på dens nøgle/ID med GET-ressource

Document Store Database tilbyder vanskeligere forespørgsler, da de forstår værdien i et nøgle-værdi-par. For eksempel, CouchDB gør det muligt at definere visninger med MapReduce

Hvad er CAP-sætningen?

CAP-sætning kaldes også bryggersætning. Den siger, at det er umuligt for et distribueret datalager at tilbyde mere end to ud af tre garantier

  1. Sammenhæng
  2. Tilgængelighed
  3. Partitionstolerance

Konsistens:

Dataene bør forblive konsistente, selv efter udførelsen af ​​en operation. Det betyder, at når data er skrevet, skal enhver fremtidig læseanmodning indeholde disse data. For eksempel, efter opdatering af ordrestatus, bør alle kunder kunne se de samme data.

tilgængelighed:

Databasen skal altid være tilgængelig og responsiv. Det bør ikke have nogen nedetid.

Partitionstolerance:

Partitionstolerance betyder, at systemet skal fortsætte med at fungere, selvom kommunikationen mellem serverne ikke er stabil. For eksempel kan serverne opdeles i flere grupper, som muligvis ikke kommunikerer med hinanden. Her, hvis en del af databasen ikke er tilgængelig, er andre dele altid upåvirkede.

Begivenhedskonsistens

Udtrykket "eventuel konsistens" betyder at have kopier af data på flere maskiner for at få høj tilgængelighed og skalerbarhed. Ændringer, der er foretaget i ethvert dataelement på én maskine, skal derfor overføres til andre replikaer.

Datareplikering er muligvis ikke øjeblikkelig, da nogle kopier vil blive opdateret med det samme, mens andre med tiden vil blive opdateret. Disse kopier kan være gensidige, men med tiden bliver de konsistente. Derfor navnet eventuel konsistens.

GRUNDLAG: Basisk Atilgængelig, Sangiver ofte, Eeventuel konsistens

  • Dybest set betyder tilgængelig, at DB er tilgængelig hele tiden i henhold til CAP-sætningen
  • Blød tilstand betyder selv uden input; systemtilstanden kan ændre sig
  • Eventuel konsistens betyder, at systemet bliver konsistent over tid

Begivenhedskonsistens

Fordele ved NoSQL

  • Kan bruges som primær eller analytisk datakilde
  • Big Data-kapacitet
  • Intet enkelt svigtpunkt
  • Nem replikering
  • Intet behov for separat cachelag
  • Det giver hurtig ydeevne og horisontal skalerbarhed.
  • Kan håndtere strukturerede, semistrukturerede og ustrukturerede data med lige stor effekt
  • Objektorienteret programmering som er nem at bruge og fleksibel
  • NoSQL-databaser behøver ikke en dedikeret højtydende server
  • Support nøglesprog og platforme for udviklere
  • Enkel at implementere end at bruge RDBMS
  • Det kan tjene som den primære datakilde for onlineapplikationer.
  • Håndterer big data, som styrer datahastighed, variation, volumen og kompleksitet
  • Udmærker sig ved distribueret database- og multidatacenterdrift
  • Eliminerer behovet for et specifikt cachelag til at gemme data
  • Tilbyder et fleksibelt skemadesign, som nemt kan ændres uden nedetid eller serviceafbrydelse

Ulemper ved NoSQL

  • Ingen standardiseringsregler
  • Begrænsede forespørgselsmuligheder
  • RDBMS databaser og værktøjer er forholdsvis modne
  • Det tilbyder ikke nogen traditionelle databasefunktioner, såsom konsistens, når flere transaktioner udføres samtidigt.
  • Når mængden af ​​data stiger, er det svært at opretholde unikke værdier, da nøgler bliver vanskelige
  • Fungerer ikke så godt med relationelle data
  • Læringskurven er stiv for nye udviklere
  • Open source-muligheder, så ikke så populære for virksomheder.

Resumé

  • NoSQL er et ikke-relationelt DMS, der ikke kræver et fast skema, undgår joinforbindelser og er let at skalere
  • Konceptet med NoSQL-databaser blev populært hos internetgiganter som Google, Facebook, Amazonosv., der beskæftiger sig med enorme mængder data
  • I år 1998 - Carlo Strozzi brugte udtrykket NoSQL for sin lette, open source relationsdatabase
  • NoSQL-databaser følger aldrig den relationelle model, den er enten skemafri eller har afslappede skemaer
  • Fire typer NoSQL-database er 1). Nøgleværdi-parbaseret 2). Kolonneorienteret graf 3). Grafer baseret 4). Dokumentorienteret
  • NOSQL kan håndtere strukturerede, semistrukturerede og ustrukturerede data med lige stor effekt
  • CAP-sætning består af tre ord Konsistens, Tilgængelighed og Partitionstolerance
  • BASE står for Basisk Atilgængelig, Sangiver ofte, Eeventuel konsistens
  • Udtrykket "eventuel konsistens" betyder at have kopier af data på flere maskiner for at få høj tilgængelighed og skalerbarhed
  • NoSQL tilbyde begrænsede forespørgselsmuligheder