NoSQL-handledning: Typer av NoSQL-databaser och exempel

โšก Smart sammanfattning

NoSQL รคr ett icke-relationellt databashanteringssystem som inte krรคver ett fast schema, undviker joins och enkelt skalas. Den hรคr resursen fรถrklarar vad NoSQL รคr, varfรถr det existerar, dess historia, funktioner, de fyra databastyperna, CAP-teoremet, slutlig konsistens samt dess fรถrdelar och nackdelar.

  • ๐Ÿ“ฆ Definition: En icke-relationell, schemafri lagringsplats byggd fรถr stora, distribuerade datamรคngder.
  • ๐Ÿ“ˆ Varfรถr: Att skala ut รถver mรฅnga vรคrdar hanterar stordata snabbare รคn att skala upp.
  • ๐Ÿ—‚๏ธ Fyra typer: Nyckelvรคrdesorienterad, kolumnorienterad, grafbaserad och dokumentorienterad.
  • โš–๏ธ CAP-teorem: En distribuerad lagringsplats kan bara garantera tvรฅ av fรถljande: konsekvens, tillgรคnglighet och partitionstolerans.
  • ๐Ÿ” BAS: I princip tillgรคnglig, mjukt tillstรฅnd, eventuell konsekvens mellan repliker.

NoSQL handledning

Vad รคr NoSQL?

NoSQL-databas รคr ett icke-relationellt datahanteringssystem som inte krรคver ett fast schema. Det undviker joins och รคr lรคtt att skala. Huvudsyftet med att anvรคnda en NoSQL-databas รคr fรถr distribuerade datalager med enorma datalagringsbehov. NoSQL anvรคnds fรถr stordata och webbappar i realtid. Till exempel fรถretag som Twitter, Facebook och Google samlar in terabyte av anvรคndardata varje dag.

NoSQL-databas stรฅr fรถr โ€Not Only SQLโ€ eller โ€Not SQLโ€. ร„ven om en bรคttre term vore โ€NoRELโ€, blev NoSQL populรคrt. Carl Strozzi introducerade NoSQL-konceptet 1998.

Traditionell RDBMS anvรคnder SQL-syntax fรถr att lagra och hรคmta data fรถr ytterligare insikter. Istรคllet omfattar ett NoSQL-databassystem ett brett spektrum av databastekniker som kan lagra strukturerad, semistrukturerad, ostrukturerad och polymorf data. Lรฅt oss fรถrstรฅ NoSQL med ett diagram i den hรคr NoSQL-databashandledningen:

NoSQL-databas

Varfรถr NoSQL?

Konceptet med NoSQL-databaser blev populรคrt bland internetjรคttar som Google, Facebook, Amazon, etc. som hanterar enorma mรคngder data. Systemets svarstid blir lรฅngsam nรคr du anvรคnder RDBMS fรถr stora mรคngder data.

Fรถr att lรถsa detta problem kunde vi "skala upp" vรฅra system genom att uppgradera vรฅr befintliga hรฅrdvara. Denna process รคr dyr.

Alternativet till detta problem รคr att fรถrdela databasbelastningen pรฅ flera vรคrdar nรคr belastningen รถkar. Denna metod kallas "utskalning".

NoSQL

NoSQL-databaser รคr icke-relationella, sรฅ de skalar ut bรคttre รคn relationella databaser, eftersom de รคr utformade med webbapplikationer i รฅtanke.

Kort historik รถver NoSQL-databaser

  • 1998 โ€“ Carlo Strozzi anvรคnder termen NoSQL fรถr sin lรคtta relationsdatabas med รถppen kรคllkod.
  • 2000 โ€“ Grafdatabas Neo4j lanseras.
  • 2004 - Google BigTable lanseras.
  • 2005 - CouchDB lanseras.
  • 2007 โ€“ Forskningsrapporten om Amazon Dynamo slรคpps.
  • 2008 โ€“ Facebooks รถppna kรคllor Cassandra projektet.
  • 2009 โ€“ Termen NoSQL รฅterinfรถrdes.

Funktioner i NoSQL

Icke-relationell

  • NoSQL-databaser fรถljer aldrig relationsmodell.
  • Tillhandahรฅll aldrig tabeller med platta poster med fast kolumn.
  • Arbeta med fristรฅende aggregat eller BLOB:er.
  • Krรคver inte objektrelationskartaping och datanormalisering.
  • Inga komplexa funktioner som frรฅgesprรฅk, frรฅgeplanerare, referensintegritetskopplingar eller ACID.

Schemafri

  • NoSQL-databaser รคr antingen schemafria eller har avslappnade scheman.
  • Krรคv ingen form av definition av dataschemat.
  • Erbjud heterogena datastrukturer inom samma domรคn.
Funktioner i NoSQL
NoSQL รคr schemafritt

Enkelt API

  • Erbjuder lรคttanvรคnda grรคnssnitt fรถr lagring och datasรถkning.
  • API:er tillรฅter datamanipulation och urvalsmetoder pรฅ lรฅg nivรฅ.
  • Textbaserade protokoll anvรคnds mestadels med HTTP REST med JSON.
  • Anvรคnde mestadels inget standardbaserat NoSQL-frรฅgesprรฅk.
  • Webbaserade databaser som kรถrs som internetbaserade tjรคnster.

Distribuerad

  • Flera NoSQL-databaser kan kรถras distribuerat.
  • Erbjuder automatisk skalning och redundansรถvergรฅngsfunktioner.
  • Ofta kan ACID-konceptet offras fรถr skalbarhet och genomstrรถmning.
  • Mestadels ingen synkron replikering mellan distribuerade noder; asynkron multimaster-replikering, peer-to-peer, HDFS-replikering.
  • Ger bara slutlig konsekvens.
  • Arkitektur med delad ingenting. Detta mรถjliggรถr mindre samordning och hรถgre distribution.
Funktioner i NoSQL

NoSQL delas ingenting.

Typer av NoSQL-databaser

NoSQL-databaser รคr huvudsakligen kategoriserade i fyra typer: Nyckelvรคrdepar, kolumnorienterade, grafbaserade och dokumentorienterade. Varje kategori har sina unika attribut och begrรคnsningar. Ingen av de ovan angivna databaserna รคr bรคttre pรฅ att lรถsa alla problem. Anvรคndare bรถr vรคlja databasen baserat pรฅ sina produktbehov.

Typer av NoSQL-databaser:

  • Nyckel-vรคrde parbaserad
  • Kolumnorienterad graf
  • Grafer baserade
  • Dokumentorienterad

Typer av NoSQL-databaser

Nyckelvรคrde parbaserad

Data lagras i nyckel-/vรคrdepar. Den รคr utformad pรฅ ett sรฅdant sรคtt att den kan hantera mycket data och tung belastning. Nyckel-vรคrdepar-lagringsdatabaser lagrar data som en hashtabell dรคr varje nyckel รคr unik och vรคrdet kan vara en JSON, BLOB (Binary Large Objects), strรคng etc.

Till exempel kan ett nyckel-vรคrdepar innehรฅlla en nyckel som โ€Webbplatsโ€ associerad med ett vรคrde som โ€Guru99. "

Nyckelvรคrde parbaserad

Det รคr ett av de mest grundlรคggande exemplen pรฅ NoSQL-databaser. Den hรคr typen av NoSQL-databas anvรคnds som en samling, ordbรถcker, associativa arrayer etc. Nyckelvรคrdeslagring hjรคlper utvecklaren att lagra schemalรถs data. De fungerar bรคst fรถr butiker.ping varukorgens innehรฅll.

Redis, Dynamo och Riak รคr nรฅgra NoSQL-exempel pรฅ nyckel-vรคrde-databaser. De รคr alla baserade pรฅ Amazons Dynamo papper.

Kolumnbaserad

Kolumnorienterade databaser arbetar med kolumner och รคr baserade pรฅ BigTable-dokumentet av GoogleVarje kolumn behandlas separat. Vรคrden i databaser med en kolumn lagras sammanhรคngande.

Kolumnbaserad NoSQL-databas

Kolumnbaserad NoSQL-databas

De levererar hรถg prestanda pรฅ aggregeringsfrรฅgor som SUM, COUNT, AVG, MIN, etc., eftersom informationen รคr lรคttillgรคnglig i en kolumn. Kolumnbaserade NoSQL-databaser anvรคnds ofta fรถr att hantera datalager, business intelligence, CRM och bibliotekskortskataloger.

HBase, Cassandra, och Hypertable รคr exempel pรฅ NoSQL-frรฅgor fรถr kolumnbaserade databaser.

Dokumentorienterad

Dokumentorienterad NoSQL-databas lagrar och hรคmtar data som ett nyckel-vรคrdepar, men vรคrdedelen lagras som ett dokument. Dokumentet lagras i JSON- eller XML-format. Vรคrdet fรถrstรฅs av databasen och kan efterfrรฅgas.

Relationell vs. Dokumentera

Relationell vs. Dokumentera

I det hรคr diagrammet till vรคnster kan du se att vi har rader och kolumner, och till hรถger har vi en dokumentdatabas som har en liknande struktur som JSON. Fรถr relationsdatabasen mรฅste du veta vilka kolumner du har, och sรฅ vidare. Fรถr en dokumentdatabas har du dรคremot ett datalager som ett JSON-objekt. Du behรถver inte definiera det, vilket gรถr det flexibelt.

Dokumenttypen anvรคnds frรคmst fรถr CMS-system, bloggplattformar, realtidsanalys och e-handelsapplikationer. Den bรถr inte anvรคndas fรถr komplexa transaktioner som krรคver flera operationer eller frรฅgor mot olika aggregerade strukturer.

Amazon SimpleDB, CouchDB, MongoDB, Riak och Lotus Notes รคr populรคra dokumentorienterade DBMS-system.

Grafbaserad

En grafdatabas lagrar entiteter sรฅvรคl som relationerna mellan dessa entiteter. Entiteten lagras som en nod med relationen som kanter. En kant ger en relation mellan noder. Varje nod och kant har en unik identifierare.

Grafbaserad

Jรคmfรถrt med en relationsdatabas dรคr tabeller รคr lรถst sammankopplade รคr en grafdatabas multirelationell till sin natur. Att korsa relationer gรฅr snabbt eftersom de redan finns registrerade i databasen och det inte finns nรฅgot behov av att berรคkna dem. Grafbaserade databaser anvรคnds mestadels fรถr sociala nรคtverk, logistik och spatial data.

Neo4J, oรคndlig graf, OrientDBoch FlockDB รคr nรฅgra populรคra grafbaserade databaser.

Frรฅgemekanismverktyg fรถr NoSQL

Den vanligaste mekanismen fรถr datahรคmtning รคr REST-baserad hรคmtning av ett vรคrde baserat pรฅ dess nyckel/ID med en GET-resurs.

Dokumentdatabaser erbjuder svรฅrare frรฅgor, eftersom de fรถrstรฅr vรคrdet i ett nyckel-vรคrde-par. Till exempel, CouchDB tillรฅter definition av vyer med MapReduce.

Vad รคr CAP-satsen?

CAP-teoremet kallas รคven Brewers sats. Det sรคger att det รคr omรถjligt fรถr ett distribuerat datalager att erbjuda mer รคn tvรฅ av tre garantier:

  1. Konsistens
  2. Tillgรคnglighet
  3. Partitionstolerans

Konsistens: Uppgifterna bรถr fรถrbli konsekventa รคven efter utfรถrandet av en operation. Detta innebรคr att nรคr data vรคl har skrivits, bรถr alla framtida lรคsbegรคranden innehรฅlla dessa data. Till exempel, efter att ha uppdaterat orderstatusen, bรถr alla kunder kunna se samma data.

Tillgรคnglighet: Databasen ska alltid vara tillgรคnglig och responsiv. Den ska inte ha nรฅgon stillestรฅndstid.

Partitionstolerans: Partitionstolerans innebรคr att systemet ska fortsรคtta att fungera รคven om kommunikationen mellan servrarna inte รคr stabil. Till exempel kan servrarna delas upp i flera grupper som kanske inte kommunicerar med varandra. Hรคr, om en del av databasen รคr otillgรคnglig, รคr andra delar alltid opรฅverkade.

Eventuell konsistens

Termen "eventuell konsistens" betyder att man har kopior av data pรฅ flera maskiner fรถr att fรฅ hรถg tillgรคnglighet och skalbarhet. Dรคrfรถr mรฅste รคndringar som gรถrs i ett dataobjekt pรฅ en maskin spridas till andra repliker.

Datareplikering kanske inte sker omedelbar, eftersom vissa kopior uppdateras omedelbart medan andra med tiden. Dessa kopior kan vara รถmsesidigt inkonsekventa, men med tiden blir de konsekventa. Dรคrav namnet slutgiltig konsistens.

BAS: Basiskt Atillgรคnglig, Ssรคger ofta, Eeventuell konsistens

  • I princip tillgรคnglig innebรคr att databasen รคr tillgรคnglig hela tiden enligt CAP-teoremet.
  • Mjukt tillstรฅnd innebรคr att systemtillstรฅndet kan รคndras รคven utan inmatning.
  • Slutlig konsistens innebรคr att systemet kommer att bli konsistent med tiden.

Eventuell konsistens

Fรถrdelar med NoSQL

  • Kan anvรคndas som en primรคr eller analytisk datakรคlla.
  • Stordatakapacitet.
  • Ingen enskild felpunkt.
  • Enkel replikering.
  • Inget behov av ett separat cachlager.
  • Det ger snabb prestanda och horisontell skalbarhet.
  • Kan hantera strukturerad, semistrukturerad och ostrukturerad data med lika effekt.
  • Objektorienterad programmering som รคr lรคtt att anvรคnda och flexibel.
  • NoSQL-databaser behรถver inte en dedikerad hรถgpresterande server.
  • Stรถd fรถr viktiga utvecklarsprรฅk och plattformar.
  • Enklare att implementera รคn att anvรคnda RDBMS.
  • Det kan fungera som den primรคra datakรคllan fรถr onlineapplikationer.
  • Hanterar stordata som hanterar datahastighet, variation, volym och komplexitet.
  • Utmรคrker sig inom distribuerade databaser och drift av flera datacenter.
  • Eliminerar behovet av ett specifikt cachlager fรถr att lagra data.
  • Erbjuder en flexibel schemadesign som enkelt kan รคndras utan driftstopp eller avbrott i tjรคnsten.

Nackdelar med NoSQL

  • Inga standardiseringsregler.
  • Begrรคnsade frรฅgemรถjligheter.
  • RDBMS databaser och verktyg รคr relativt mogna.
  • Den erbjuder inga traditionella databasfunktioner, som konsekvens nรคr flera transaktioner utfรถrs samtidigt.
  • Nรคr datamรคngden รถkar รคr det svรฅrt att bibehรฅlla unika vรคrden eftersom nycklar blir svรฅra att hantera.
  • Fungerar inte lika bra med relationsdata.
  • Inlรคrningskurvan รคr hรฅrd fรถr nya utvecklare.
  • ร–ppen kรคllkod รคr inte sรฅ populรคra fรถr fรถretag.

Vanliga frรฅgor

NoSQL-databaser hanterar de stora, varierade och snabbt fรถrรคnderliga data som AI- och big data-pipelines producerar. Deras flexibla schema och horisontella skalning passar fรถr att lagra trรคningsdata, loggar och realtidsfunktioner รถver distribuerade kluster.

Ja. Flera NoSQL-databaser, t.ex. MongoDB och Elasticsearch, stรถder nu vektorfรคlt och likhetssรถkning. Detta gรถr det mรถjligt fรถr AI-applikationer att lagra inbรคddningar bredvid dokument fรถr semantisk sรถkning och rekommendationsfunktioner.

SQL-databaser รคr relationella med ett fast schema och anvรคnder tabeller, rader och kopplingar. NoSQL-databaser รคr icke-relationella, anvรคnder flexibla scheman och skalar horisontellt och lagrar data som dokument, nyckelvรคrden, kolumner eller grafer.

Undvik NoSQL nรคr du behรถver starka ACID-transaktioner, komplexa joins eller strikt dataintegritet, till exempel inom banksektorn. Mogna relationsdatabaser hanterar konsekvens med flera poster och standardiserade frรฅgor bรคttre i dessa fall.

Sammanfatta detta inlรคgg med: