Vad är MongoDB? Introduktion, Architecture, Features & Exempel

Vad är MongoDB?

MongoDB är en dokumentorienterad NoSQL-databas som används för datalagring med stora volymer. Istället för att använda tabeller och rader som i de traditionella relationsdatabaserna, MongoDB använder sig av samlingar och dokument. Dokument består av nyckel-värdepar som är den grundläggande enheten för data i MongoDB. Samlingar innehåller uppsättningar av dokument och funktioner som motsvarar relationsdatabastabeller. MongoDB är en databas som kom fram i mitten av 2000-talet.

MongoDB Egenskaper

  1. Varje databas innehåller samlingar som i sin tur innehåller dokument. Varje dokument kan vara olika med ett varierande antal fält. Storleken och innehållet i varje dokument kan skilja sig från varandra.
  2. Dokumentstrukturen är mer i linje med hur utvecklare konstruerar sina klasser och objekt i sina respektive programmeringsspråk. Utvecklare säger ofta att deras klasser inte är rader och kolumner utan har en tydlig struktur med nyckel-värdepar.
  3. Raderna (eller dokument som kallas in MongoDB) behöver inte ha ett schema definierat i förväg. Istället kan fälten skapas i farten.
  4. Datamodellen tillgänglig inom MongoDB låter dig representera hierarkiska relationer, lagra arrayer och andra mer komplexa strukturer lättare.
  5. Skalbarhet – Den MongoDB miljöer är mycket skalbara. Företag över hela världen har definierat kluster där några av dem kör över 100 noder med runt miljontals dokument i databasen

MongoDB Exempelvis

Exemplet nedan visar hur ett dokument kan modelleras in MongoDB.

  1. Fältet _id läggs till av MongoDB för att unikt identifiera dokumentet i samlingen.
  2. Det du kan notera är att orderdata (OrderID, Produkt och Kvantitet ) som i RDBMS normalt kommer att lagras i en separat tabell, medan MongoDB det lagras faktiskt som ett inbäddat dokument i själva samlingen. Detta är en av de viktigaste skillnaderna i hur data modelleras in MongoDB.

MongoDB Exempelvis

Nyckelkomponenter i MongoDB Architecture

Nedan är några av de vanligaste termerna som används i MongoDB

  1. _id – Detta är ett fält som krävs i varje MongoDB dokumentera. Fältet _id representerar ett unikt värde i MongoDB dokumentera. _id-fältet är som dokumentets primärnyckel. Om du skapar ett nytt dokument utan ett _id-fält, MongoDB kommer automatiskt att skapa fältet. Så om vi till exempel ser exemplet med kundtabellen ovan, kommer Mongo DB att lägga till en 24-siffrig unik identifierare till varje dokument i samlingen.
_Id Kundnummer Köparens namn OrderID
563479cc8a8a4246bd27d784 11 Guru99 111
563479cc7a8a4246bd47d784 22 Trevor Smith 222
563479cc9a8a4246bd57d784 33 Nicole 333
  1. Samling – Det här är en gruppering av MongoDB dokument. En samling är motsvarigheten till en tabell som skapas i alla andra RDMS som t.ex Oracle eller MS SQL. En samling finns inom en enda databas. Som framgår av introduktionen upprätthåller inte samlingar någon form av struktur.
  2. Markör – Detta är en pekare till resultatuppsättningen av en fråga. Klienter kan iterera genom en markör för att hämta resultat.
  3. Databas – Det här är en behållare för samlingar som i RDMS där det är en behållare för tabeller. Varje databas får sin egen uppsättning filer i filsystemet. A MongoDB server kan lagra flera databaser.
  4. Dokument – Ett rekord i en MongoDB samling kallas i grunden ett dokument. Dokumentet kommer i sin tur att bestå av fältnamn och värden.
  5. Fält – Ett namn-värdepar i ett dokument. Ett dokument har noll eller fler fält. Fält är analoga med kolumner i relationsdatabaser. Följande diagram visar ett exempel på fält med nyckelvärdespar. Så i exemplet nedan är kund-ID och 11 ett av nyckelvärdesparen som definieras i dokumentet.

Nyckelkomponenter i MongoDB Architecture

  1. JSON – Detta är känt som JavaScript Objektnotation. Detta är ett mänskligt läsbart, vanlig textformat för att uttrycka strukturerad data. JSON stöds för närvarande i många programmeringsspråk.

Bara en snabb notering om nyckelskillnaden mellan _id-fältet och ett normalt samlingsfält. Fältet _id används för att unikt identifiera dokumenten i en samling och läggs automatiskt till av MongoDB när samlingen skapas.

Varför använda MongoDB?

Nedan är några av anledningarna till varför man bör börja använda MongoDB

  1. Dokumentorienterad – Sedan MongoDB är en NoSQL typ databas, istället för att ha data i ett relationstypformat, lagrar den data i dokument. Detta gör MongoDB mycket flexibel och anpassningsbar till verkliga affärsvärldens situation och krav.
  2. Ad hoc-frågor – MongoDB stöder sökning efter fält, intervallfrågor och reguljära uttryckssökningar. Förfrågningar kan göras för att returnera specifika fält i dokument.
  3. Indexering – Index kan skapas för att förbättra prestandan för sökningar inom MongoDB. Vilket fält som helst i en MongoDB dokument kan indexeras.
  4. Replikering – MongoDB kan ge hög tillgänglighet med replikuppsättningar. En replikuppsättning består av två eller flera mongo DB-instanser. Varje replikuppsättningsmedlem kan agera i rollen som den primära eller sekundära repliken när som helst. Den primära repliken är huvudservern som interagerar med klienten och utför alla läs-/skrivoperationer. De sekundära replikerna behåller en kopia av data från den primära med hjälp av inbyggd replikering. När en primär replik misslyckas växlar replikuppsättningen automatiskt över till den sekundära och sedan blir den den primära servern.
  5. Lastbalansering - MongoDB använder konceptet sharding för att skala horisontellt genom att dela upp data över flera MongoDB instanser. MongoDB kan köra över flera servrar, balansera belastningen och/eller duplicera data för att hålla systemet igång i händelse av hårdvarufel.

Datamodellering i MongoDB

Som vi har sett från avsnittet Introduktion, data i MongoDB har ett flexibelt schema. Till skillnad från i SQL databaser, där du måste ha en tabells schema deklarerat innan du infogar data, MongoDBs samlingar upprätthåller inte dokumentstruktur. Denna typ av flexibilitet är vad som gör MongoDB så kraftfull.

När du modellerar data i Mongo, tänk på följande

  1. Vilka är applikationens behov – Titta på applikationens affärsbehov och se vilken data och vilken typ av data som behövs för applikationen. Baserat på detta, se till att strukturen för dokumentet bestäms i enlighet därmed.
  2. Vad är mönster för datahämtning – Om du förutser en stor frågeanvändning, överväg användningen av index i din datamodell för att förbättra sökfrågornas effektivitet.
  3. Förekommer ofta infogningar, uppdateringar och borttagningar i databasen? Ompröva användningen av index eller införliva sönderdelning om det behövs i din datamodelleringsdesign för att förbättra effektiviteten i din övergripande MongoDB miljö.

Skillnad mellan MongoDB & RDBMS

Nedan är några av de viktigaste skillnaderna mellan termerna MongoDB och RDBMS

RDBMS MongoDB Skillnaden
Bord Samling In RDBMS, innehåller tabellen kolumner och rader som används för att lagra data medan, i MongoDB, samma struktur kallas en samling. Samlingen innehåller dokument som i sin tur innehåller fält, som i sin tur är nyckel-värdepar.
Rad Dokument I RDBMS representerar raden en enda, implicit strukturerad datapost i en tabell. I MongoDB, lagras uppgifterna i dokument.
Kolumn Fält I RDBMS anger kolumnen en uppsättning datavärden. Dessa i MongoDB är kända som Fields.
Fogar Inbäddade dokument I RDBMS sprids data ibland över olika tabeller och för att visa en fullständig bild av all data bildas ibland en join över tabeller för att få data. I MongoDB, data lagras normalt i en enda samling, men separeras med hjälp av inbäddade dokument. Så det finns inget koncept för att gå med MongoDB.

Förutom termskillnaderna visas några andra skillnader nedan

  1. Relationsdatabaser är kända för att upprätthålla dataintegritet. Detta är inte ett uttryckligt krav i MongoDB.
  2. RDBMS kräver att data är normaliserad först så att det kan förhindra föräldralösa poster och dubbletter Normalisering av data kräver sedan fler tabeller, vilket sedan kommer att resultera i fler tabellkopplingar, vilket kräver fler nycklar och index. När databaser börjar växa kan prestanda börja bli ett problem. Återigen är detta inte ett uttryckligt krav i MongoDB. MongoDB är flexibel och behöver inte data för att normaliseras först.