Vad är MongoDB?
Relationella databaser var under flera decennier den självklara lösningen för datahantering. Men den växande datamängden och mångfalden som kännetecknar moderna webbapplikationer har gjort dokumentorienterade databaser som Mongo DB till ett allvarligt alternativ. Vi förklarar vad det dokumentorienterade tillvägagångssättet innebär och vilka fördelar denna datahanteringsmodell erbjuder.
Hur skiljer sig MongoDB från andra databaser?
I traditionella relationsdatabaser lagras data i en strukturerad tabell. MongoDB, vars namn härstammar från ordet humongous(enorm), är ett dokumentorienterat databassystem. I MongoDB grupperas data på ett ostrukturerat sätt i vad databasprogrammet kallar samlingar.
En annan viktig skillnad är att MongoDB inte använder SQL som frågespråk och därför kategoriseras som ett NoSQL-databassystem. Istället använder MongoDB det JavaScript-baserade MongoDB Query Language (MQL) som sitt frågespråk. Följaktligen lagras MongoDB-poster i BSON-format, som är modellerat efter JSON. Detta innebär att alla JavaScript-datatyper stöds, vilket är anledningen till att MongoDB har blivit det idealiska valet för många JavaScript-baserade plattformar.
En annan egenskap hos MongoDB-databaser är deras förmåga att skalas horisontellt. Det innebär att data i en databas kan spridas över flera servrar istället för att lagras på en central plats. Denna metod ökar datatillgängligheten och förbättrar databasens totala prestanda. Horisontell skalning är ofta mer kostnadseffektivt än att uppgradera en enskild server med kraftfullare hårdvara (vertikal skalning).
Hur fungerar MongoDB?
Till skillnad från MySQL har MongoDB en helt annan strategi för lagring av data och fungerar på ett dokumentorienterat sätt. Istället för att lagra data i tabellform, där varje rad har samma antal fält som måste fyllas med värden, lagrar MongoDB-databaser data i BSON-dokument som inte har någon fördefinierad struktur. Antalet fält kan variera mellan dokumenten, och fälten behöver inte vara konsistenta med varandra. Dokumenten fyller en liknande funktion som raderna i en SQL-tabell, medan de fält som har definierats i dessa dokument fungerar som kolumner.
Det finns många verktyg som du kan använda när du arbetar med MongoDB-databaser. Förutom det pålitliga MongoDB Shell kan du också använda GUI MongoDB Compass för att hantera MongoDB-databaser. I den här artikeln kommer vi dock att fokusera på Shell-kommandon.
Eftersom MQL är baserat på JavaScript finns det redan en rad fördefinierade funktioner som du kan använda för komplexa frågor och kommandon. I de flesta fall har alla skriv- och läskommandon samma struktur som kommandona i exemplet nedan. Utöver dessa kommandon finns det många andra kommandon som du kan använda för att hantera din MongoDB-databas. Dessa dokumenteras utförligt och förklaras i detalj i dokumentationen för MongoDB.
> db.students.find(Name : "Charlie")
> db.students.updateOne(Name : "Charlie", Semester : 2)
> db.students.deleteOne(Name : "Peter")
> db.students.insertOne({
Name : "Elsie"
Age : 18
Semester : 1
})I exemplet ovan finns en serie MongoDB-databasbefallningar, som alla är strukturerade på samma sätt. Först finns “db”, som hänvisar till databasen i sin helhet, sedan “students”, som hänvisar till en specifik samling, där motsvarande operationer ska utföras. Efter samlingen kommer metoden (find, update, remove, insert) som ska användas.
Du kan använda metoden find() för att söka efter ett specifikt dokument. Om du lämnar parameterfältet tomt kommer alla dokument i den valda samlingen att returneras. I exemplet ovan söker MongoDB efter alla dokument där fältet “Name” har värdet “Charlie”.
Metoden updateOne() kan användas för att skriva över värden i ett dokument. Metoden update() tar två argument. Det första argumentet är urvalskriterierna och det andra är det nyckel-värdepar som ska skrivas över. I exemplet väljs alla studenter som heter “Charlie”. Värdet “2” matas sedan in i fältet “Semester” för studenter som heter Charlie.
Metoden deleteOne() tar endast ett argument. Detta är urvalskriteriet som avgör vilka dokument som ska tas bort från databasen. Här tas alla studenter med namnet Peter bort från databasen.
Metoden insertOne() tar också ett argument. Med denna metod är argumentet JSON-innehållet i det dokument som du vill lägga till. När du infogar dokument är det viktigt att se till att varje dokument i MongoDB-samlingen har ett unikt 12-bytes hexadecimalt nummer. Detta nummer fungerar som dokumentets objekt-ID. Om detta inte anges när dokumentet infogas kommer MongoDB automatiskt att generera ett ID för dokumentet.
Vilka är fördelarna med MongoDB?
MongoDB:s struktur erbjuder flera fördelar för användarna, särskilt när det gäller flexibilitet och skalbarhet. En viktig fördel med dokumentbaserad datalagring är att, till skillnad från relationsdatabaser, inte alla poster behöver ha samma attribut. Detta möjliggör lagring av ostrukturerade och semistrukturerade data. Dessutom kan enskilda dokument omstruktureras (till exempel genom att lägga till eller ta bort ett attribut/fält) utan att andra dokument i samma samling behöver omstruktureras. Eftersom dokument i MongoDB lagras i BSON-format erbjuder MongoDB-databaser också en hög grad av kompatibilitet med många vanliga JavaScript-plattformar.
Förutom att lagra ostrukturerade data erbjuder MongoDB också en hög grad av horisontell skalbarhet utan att bryta mot ACID-principerna (atomicitet, konsistens, isolering, hållbarhet). I distribuerade databaser kan det ofta vara en utmaning att säkerställa konsistens, eftersom data lagras på olika servrar. När ändringar görs i flera dokument samtidigt distribueras dessa ändringar kanske inte omedelbart till alla servrar som databassystemet använder. Om det finns en stor volym av frågor kan detta ibland leda till inkonsekventa data. Men med lanseringen av MongoDB 4.2 år 2019 är det nu möjligt att göra ändringar i flera dokument på olika servrar utan att offra konsistens eller tillgänglighet.
Vad kan MongoDB användas till?
MongoDB är ett utmärkt val för webbprojekt som bygger på extremt stora ostrukturerade datamängder. Att arbeta med ett dokumentbaserat system utan fast schema är idealiskt för hantering av en rad olika datatyper som kräver snabb lagring och bearbetning.
Databassystemet möjliggör också horisontell, nästan obegränsad skalbarhet, eftersom databaser enkelt kan distribueras över flera servrar utan att funktionaliteten påverkas. Med MongoDB kan du dessutom enkelt skapa kopior av din databas och göra den tillgänglig för olika servrar, vilket garanterar långsiktig säkerhet och tillgänglighet för dina data. Det dokumentorienterade databasprogrammet har också imponerande funktioner när det gäller att aggregera data, vare sig det är från en enda källa eller från flera källor.
MongoDB är idealiskt för webbprojekt som uppvisar följande egenskaper:
- Skalbarhet: när ditt webbprojekt växer ökar vanligtvis antalet förfrågningar, vilket leder till högre krav på databasen.
- Tillgänglighet: du behöver oavbruten tillgänglighet för din webbapplikation, även i händelse av serverfel.
- Flexibilitet: ditt projekt bör möjliggöra dynamisk anpassning vid alla tillfällen.
Är du osäker på vilken databasmodell som är rätt för ditt webbprojekt? Det gör inget, för du behöver inte välja bara en. Det går att kombinera olika typer av databasmodeller, och att välja mer än en kan vara det bästa alternativet för ditt projekts krav.