Vad är MongoDB?
MongoDB är en dokumentorienterad NoSQL-databas som används för datalagring med hög volym. I stället för att använda tabeller och rader som i traditionella relationsdatabaser använder MongoDB samlingar och dokument. Dokument består av nyckel-värdepar som är basenheten för data i MongoDB. Samlingar innehåller uppsättningar dokument och funktioner som motsvarar relationsdatabastabeller. MongoDB är en databas som kom fram i mitten av 2000-talet.
I den här handledningen lär du dig-
- MongoDB-funktioner
- MongoDB Exempel
- Nyckelkomponenter i MongoDB-arkitektur
- Varför använda MongoDB
- Datamodellering i MongoDB
- Skillnad mellan MongoDB och RDBMS
MongoDB-funktioner
- 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 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 i MongoDB) behöver inte ha ett schema definierat i förväg. Istället kan fälten skapas direkt.
- Den datamodell som finns tillgänglig i MongoDB gör att du lättare kan representera hierarkiska förhållanden, lagra matriser och andra mer komplexa strukturer.
- Skalbarhet - MongoDB-miljöerna är mycket skalbara. Företag över hela världen har definierat kluster med några av dem som kör mer än 100 noder med cirka miljoner dokument i databasen
MongoDB Exempel
Nedanstående exempel visar hur ett dokument kan modelleras i MongoDB.
- Fältet _id läggs till av MongoDB för att identifiera dokumentet i samlingen på ett unikt sätt.
- Vad du kan notera är att orderdata (OrderID, produkt och kvantitet) som i RDBMS normalt lagras i en separat tabell, medan det i MongoDB faktiskt lagras som ett inbäddat dokument i själva samlingen. Detta är en av de viktigaste skillnaderna i hur data modelleras i MongoDB.
Nyckelkomponenter i MongoDB-arkitektur
Nedan följer några av de vanliga termerna som används i MongoDB
- _id - Detta är ett fält som krävs i alla MongoDB-dokument. Fältet _id representerar ett unikt värde i MongoDB-dokumentet. Fältet _id är som dokumentets primära nyckel. Om du skapar ett nytt dokument utan ett _id-fält skapar MongoDB fältet automatiskt. Så till exempel, om vi ser exemplet i ovanstående kundtabell, 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 |
- Samling - Detta är en gruppering av MongoDB-dokument. En samling motsvarar en tabell som skapas i alla andra RDMS som Oracle eller MS SQL. En samling finns i en enda databas. Som framgår av introduktionen samlar inte någon form av struktur.
- Markör - Detta är en pekare till resultatsatsen för en fråga. Kunder kan itera genom en markör för att hämta resultat.
- Databas - Detta är en behållare för samlingar som i RDMS där den är en behållare för tabeller. Varje databas får sin egen uppsättning filer i filsystemet. En MongoDB-server kan lagra flera databaser.
- Dokument - En post i en MongoDB-samling kallas i grunden 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 nyckelvärdepar. Så i exemplet nedan är CustomerID och 11 ett av nyckelvärdeparet som definieras i dokumentet.
- JSON - Detta är känt som JavaScript Object Notation. Detta är ett läsbart, enkelt textformat för att uttrycka strukturerad data. JSON stöds för närvarande på många programmeringsspråk.
Bara en snabb anteckning om nyckeldifferensen mellan _id-fältet och ett normalt samlingsfält. Fältet _id används för att identifiera dokumenten i en samling unikt och läggs automatiskt till av MongoDB när samlingen skapas.
Varför använda MongoDB?
Nedan följer några av anledningarna till varför man bör börja använda MongoDB
- Dokumentorienterad - Eftersom MongoDB är en NoSQL-databas, istället för att ha data i ett relationstypformat, lagras den data i dokument. Detta gör MongoDB väldigt flexibel och anpassbar till verkliga situationer och krav från näringslivet.
- Ad hoc-frågor - MongoDB stöder sökning efter fält-, intervallfrågor och regelbundna sökningar. Frågor kan göras för att returnera specifika fält i dokument.
- Indexering - Index kan skapas för att förbättra prestandan för sökningar inom MongoDB. Alla fält i ett MongoDB-dokument kan indexeras.
- Replikering - MongoDB kan erbjuda hög tillgänglighet med replikuppsättningar. En replikuppsättning består av två eller flera Mongo DB-instanser. Varje replikuppsättningsmedlem kan när som helst agera i rollen som den primära eller sekundära repliken. Den primära repliken är huvudservern som interagerar med klienten och utför alla läs- / skrivoperationer. De sekundära replikerna upprätthåller en kopia av data från den primära med hjälp av inbyggd replikering. När en primär replika misslyckas växlar replikuppsättningen automatiskt till den sekundära och sedan blir den den primära servern.
- Lastbalansering - MongoDB använder konceptet för skärning för att skala horisontellt genom att dela data över flera MongoDB-instanser. MongoDB kan köras över flera servrar, balansera belastningen och / eller duplicera data för att hålla systemet igång i händelse av maskinvarufel.
Datamodellering i MongoDB
Som vi har sett från avsnittet Introduktion har data i MongoDB ett flexibelt schema. Till skillnad från i SQL-databaser, där du måste ha en tabells schema deklarerad innan du infogar data, tvingar MongoDBs samlingar inte dokumentstrukturen. Denna typ av flexibilitet är det som gör MongoDB så kraftfull.
Tänk på följande när du modellerar data i Mongo
- Vilka är applikationens behov - Titta på applikationens affärsbehov och se vilka data och vilken typ av data som behövs för applikationen. Basera på detta, se till att dokumentets struktur bestäms därefter.
- Vad är datainhämtningsmönster - Om du förutser en kraftig frågeanvändning, överväg att använda index i din datamodell för att förbättra effektiviteten i frågorna.
- Händer frekventa insatser, uppdateringar och borttagningar i databasen? Ompröva användningen av index eller infördela skärning om det behövs i din datamodelleringsdesign för att förbättra effektiviteten i din övergripande MongoDB-miljö.
Skillnad mellan MongoDB och RDBMS
Nedan följer några av de viktigaste termskillnaderna mellan MongoDB och RDBMS
RDBMS | MongoDB | Skillnad |
---|---|---|
Tabell | Samling | I RDBMS innehåller tabellen kolumner och rader som används för att lagra data medan samma struktur i MongoDB är känd som en samling. Samlingen innehåller dokument som i sin tur innehåller fält som i sin tur är nyckel-värdepar. |
Rad | Dokumentera | I RDBMS representerar raden ett enda, implicit strukturerat dataobjekt i en tabell. I MongoDB lagras data i dokument. |
Kolumn | Fält | I RDBMS anger kolumnen en uppsättning datavärden. Dessa i MongoDB är kända som Fields. |
Går med | 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 koppling över tabeller för att få data. I MongoDB lagras data normalt i en enda samling, men separeras med hjälp av inbäddade dokument. Så det finns inget begrepp att gå med i MongoDB. |
Förutom termerskillnaderna 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 normaliseras först så att de kan förhindra föräldralösa poster och dubbletter. Normalisering av data kräver sedan fler tabeller, vilket resulterar i fler tabellfogar, 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.