Vad är MongoDB? Architecture, Features & Exempel
⚡ Smart sammanfattning
MongoDB är en dokumentorienterad NoSQL-databas som används för lagring av stora datavolymer, med samlingar och dokument istället för tabeller och rader. Denna resurs förklarar MongoDB funktioner, ett dokumentexempel, viktiga arkitekturkomponenter, skäl att använda det, datamodellering och hur det skiljer sig från en relationsdatabas.
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 MongoDBSamlingar innehåller uppsättningar av dokument och funktioner, vilket motsvarar relationsdatabastabeller. MongoDB är en databas som kom fram i mitten av 2000-talet.
MongoDB Funktioner
- Varje databas innehåller samlingar som i sin tur innehåller dokument. Varje dokument kan vara unikt, med ett varierande antal fält. Storleken och innehållet på varje dokument kan skilja sig från varandra.
- 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.
- Raderna (eller dokument som kallas in MongoDB) behöver inte ha ett schema definierat i förväg. Istället kan fälten skapas direkt.
- Datamodellen tillgänglig inom MongoDB låter dig representera hierarkiska relationer, lagra arrayer och lagra andra mer komplexa strukturer enklare.
- Skalbarhet - Den MongoDB miljöer är mycket skalbara. Företag över hela världen har definierade kluster, och vissa av dem kör över 100 noder med cirka miljontals dokument i databasen.
MongoDB Exempelvis
Exemplet nedan visar hur ett dokument kan modelleras in MongoDB.
- Fältet _id läggs till av MongoDB för att unikt identifiera dokumentet i samlingen.
- Det du kan notera är att orderdata (OrderID, Produkt och Kvantitet), som i RDBMS normalt lagras i en separat tabell, faktiskt lagras som ett inbäddat dokument i själva samlingen i MongoDBDetta är en av de viktigaste skillnaderna i hur data modelleras i MongoDB.
Nyckelkomponenter i MongoDB Architecture
Nedan är några av de vanligaste termerna som används i MongoDB:
- _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 skapar automatiskt fältet. Så om vi till exempel ser exemplet med kundtabellen ovan, MongoDB kommer 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 |
- Samling – Detta är en gruppping of MongoDB dokument. En samling är motsvarigheten till en tabell som skapas i vilken annan RDBMS som helst, t.ex. Oracle eller MS SQL. En samling finns inom en enda databas. Som framgår av inledningen, kräver samlingar inte någon form av struktur.
- 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.
- Databas – Detta är en behållare för samlingar, som i RDBMS där det är en behållare för tabeller. Varje databas får sin egen uppsättning filer i filsystemet. MongoDB server kan lagra flera databaser.
- Dokument – Ett rekord i en MongoDB En samling kallas i princip för ett dokument. Dokumentet kommer i sin tur att bestå av fältnamn och värden.
- Fält – Ett namn-värde-par 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 nyckel-värde-par. Så i exemplet nedan är CustomerID och 11 ett av de nyckel-värde-par som definieras i dokumentet.
- 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 följer några anledningar till varför man bör börja använda MongoDB:
- Dokumentorienterad - Eftersom 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ärssituationer och krav.
- 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.
- Indexering – Index kan skapas för att förbättra sökresultaten inom MongoDB. Vilket fält som helst i en MongoDB dokument kan indexeras.
- replikation - MongoDB kan ge hög tillgänglighet med replikuppsättningar. En replikuppsättning består av två eller fler MongoDB instanser. Varje medlem i replikuppsättningen kan när som helst agera i rollen som primär eller sekundär replik. Den primära repliken är huvudservern som interagerar med klienten och utför alla läs-/skrivåtgärder. De sekundära replikerna behåller en kopia av data från den primära servern med hjälp av inbyggd replikering. När en primär replik misslyckas växlar replikuppsättningen automatiskt till den sekundära servern och blir sedan primär server.
- 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 inledningen, 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.
Vid modellering av data i MongoDB, tänk på följande:
- Vilka är applikationens behov – Titta på applikationens affärsbehov och se vilka data och vilken typ av data som behövs för applikationen. Baserat på detta, säkerställ att dokumentets struktur bestäms därefter.
- Vilka är datahämtningsmönstren – Om du förutser stor användning av frågor, överväg då att använda index i din datamodell för att förbättra effektiviteten hos frågorna.
- Sker det täta infogningar, uppdateringar och borttagningar i databasen? Överväg användningen av index eller införliva sharding 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, tabellen innehåller kolumnerna och raderna 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, vilka i sin tur är nyckel-värde-par. |
| 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 fält. |
| Fogar | Inbäddade dokument | I RDBMS sprids data ibland över olika tabeller, och för att visa en komplett vy över all data bildas ibland en koppling mellan tabeller för att hämta informationen. MongoDB, lagras data normalt i en enda samling, men separeras med hjälp av inbäddade dokument. Så det finns inget koncept med joins i MongoDB. |
Förutom skillnaderna i termer visas några andra skillnader nedan:
- Relationsdatabaser är kända för att upprätthålla dataintegritet. Detta är inte ett uttryckligt krav i MongoDB.
- RDBMS kräver att data är normaliserad först så att det kan förhindra överblivna poster och dubbletter. Normalisering av data kräver då fler tabeller, vilket i sin tur resulterar i fler tabellkopplingar, vilket kräver fler nycklar och index. När databaser börjar växa kan prestandan 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.



