Mongodb är en populär NoSQL-databas som används för att lagra och hantera stora mängder strukturerad data. Den är känd för sin flexibilitet och skalbarhet.
Mongodb använder en dokumentorienterad datamodell där data lagras i JSON-liknande format, vilket gör det enkelt att hantera komplexa datastrukturer och anpassa sig till förändrade krav. Det är också designat för att vara skalbart och kan hantera stora datamängder genom att distribuera data över flera servrar i ett kluster.
MongoDB är en NoSQL-databas medan MSSQL är en relationsdatabas, vilket är den grundläggande skillnaden mellan dem. MongoDB lagrar data i dokumentformat (JSON-liknande), medan MSSQL använder tabeller med rader och kolumner. MongoDB är schemaflexibel och tillåter olika dokumentstrukturer, men MSSQL kräver ett definierat schema innan data lagras. MSSQL är bättre för data med relationer och komplexa transaktioner, medan MongoDB är mer lämpligt för ostrukturerad eller semi-strukturerad data. MongoDB skalas horisontellt genom sharding, medan MSSQL traditionellt skalas vertikalt. MSSQL har kraftfulla rapporterings- och analysverktyg, medan MongoDB kräver mer manuell bearbetning. MongoDB är öppen källkod, medan MSSQL är en kommersiell produkt från Microsoft. Valet mellan dem beror på ditt projekts behov av flexibilitet, skalbarhet och datastruktur.
MongoDB Shell är ett interaktivt verktyg för att kommunicera med MongoDB-servern. Det låter dig köra frågor, uppdatera data och administrera databasen direkt från kommandoraden. Mongosh är den moderna ersättningen för det äldre mongo-skalet och erbjuder bättre syntax och förbesseringar.
📦 En vanlig databas
I många databaser måste alla LEGO-byggen se nästan likadana ut. Till exempel måste alla hus ha exakt 1 dörr, 4 fönster och 1 tak. Om du vill göra ett hus med 10 fönster eller ett torn, säger databasen: "Nej! Det passar inte i reglerna." 😅
🍃 MongoDB
MongoDB är en databas som är mycket friare. Istället för att tvinga alla byggen att vara likadana, säger MongoDB: "Bygg hur du vill! Bara du lägger allt i lådan."
Så i MongoDB kan du spara saker som:
De behöver inte ha exakt samma saker sparade.
📄 Hur MongoDB sparar saker
MongoDB sparar information som små dokument (lite som papper eller kort). Många dokument samlas i en samling (collection).
🧠 Superkort sammanfattning
MongoDB är en plats där datorer sparar information som dokument, och den låter varje dokument vara lite olika från varandra.
MongoDB har ett inbyggt autentiserings- och auktoriseringssystem för att säkra din databas. Du kan skapa användare med olika behörigheter för att kontrollera vem som får göra vad.
Skapa en användare med läsbehörighet:
db.createUser({
user: "läsare",
pwd: "lösenord123",
roles: ["read"]
})
Skapa en användare med läs- och skrivbehörighet:
db.createUser({
user: "utvecklare",
pwd: "lösenord456",
roles: ["readWrite"]
})
Skapa en grupp och lägg till användare:
db.createRole({
role: "designer_roll",
privileges: [
{
resource: { db: "min_databas", collection: "bilder" },
actions: ["read", "write", "insert"]
}
],
roles: []
})
Viktigt: Användare och Grupper i Cluster
Om du använder MongoDB Cluster (Replica Set), måste du skapa användare och grupper i admin-databasen istället för en vanlig databas. Det är därför att admin-databasen är global och tillgänglig för alla noder i klustret.
use admin
db.createUser({
user: "admin_användare",
pwd: "starkt_lösenord",
roles: ["root"]
})
Genom att skapa användare i admin-databasen säkerställer du att alla servrar i klustret känner till och kan autentisera användaren.
Ge en användare en anpassad roll:
db.grantRolesToUser("utvecklare", ["designer_roll"])
Single (Standalone): En enda MongoDB-server som innehåller all data. Det är enkelt att sätta upp men har begränsad skalbarhet och ingen automatisk redundans. Om servern går ner, förlorar du åtkomsten till din data.
Cluster (Replica Set): Flera MongoDB-servrar som jobbar tillsammans. En server är primär (får skrivningar) och andra är sekundära (backup). Om den primära servern går ner, tar en sekundär över automatiskt. Det är säkrare och mer pålitligt för produktionsmiljöer.
Sharding: En avancerad form av clustering där data delas upp över flera servrar baserat på en nyckel. Det möjliggör horisontell skalning för mycket stora datamängder.
| Egenskap | Single (Standalone) | Cluster (Replica Set) | Sharding |
|---|---|---|---|
| Antal servrar | 1 server | Flera servrar (3-7) | Många servrar (10+) |
| Redundans | Ingen | Automatisk failover | Automatisk failover |
| Datadistribution | All data på en server | Samma data på alla servrar | Data uppdelad över servrar |
| Skalbarhet | Begränsad (vertikal) | Begränsad (vertikal) | Utmärkt (horisontell) |
| Prestation | Snabb för små mängder | Läsning sprids ut | Läsning och skrivning spreads |
| Komplexitet | Enkel att sätta upp | Medel | Mycket komplex |
| Bäst för | Utveckling och test | Produktion med hög tillgänglighet | Mycket stora datamängder |