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

Opsummer dette indlรฆg med: