Datamodellering är processen att utveckla en visuell representation av antingen en hel programvara eller komponenter i den för att kommunicera förbindelserna mellan datapunkter och struktur. Det handlar om att noggrant granska sina applikations- och databaskrav och som sambandet mellan de två som rör kärndataförfaranden - läs, skriv och uppdatera.
En stabil datamodell skapas genom att utvärdera programmets användningsmönster och anpassa databasschemat till det. Därför formar schemadesign din datamodell. När det gäller en relationsdatabas kan du inte fylla i dina tabeller utan att skapa tabellschemat.
Viktiga termer att veta
Innan du går vidare, här är några grundläggande definitioner du måste känna till:
- Samling - En samling är dokumentuppsättningen i MongoDB. Det motsvarar en tabell i en RDBMS.
- Dokument - Ett dokument är en struktur som består av fil- och värdepar. Det motsvarar en rad i RDBMS.
- Databas Schema - Schemadesign är en logisk och visuell arkitektur för en databas utformad för ett databashanteringssystem (DBMS).
Hur är datamodellering annorlunda i MongoDB?
Tack vare flexibiliteten i NoSQL behöver du inte skapa ett schema innan du infogar data. Det beror på att MongoDB stöder en dynamisk form av databasschema. Detta eliminerar behovet av att utforma ditt schema i förväg. Istället kan du nu lagra dina data och göra justeringar enligt din samling.
Du kan lagra olika datatyper i ett samlings givna fält och kan till och med lägga till nya fält, uppdatera fältvärden och radera befintliga fält. Du hittar den verkliga fördelen med denna flexibilitet när du mappar dokument till ett objekt eller en enhet.
Generellt följer en samling och dess dokument en liknande struktur. Du kan också "genomdriva" valideringsregler för din samlings dokument genom att använda schemavalidering.
Relaterad: Databasmotorer att tänka på för ditt nästa projekt
När du skapar en datamodell, titta på hur din applikation kommer att interagera med databasen. Om det till exempel kommer att behandla dokument som nyligen har infogats, är det en bra idé att använda begränsade samlingar - samlingar med en fast storlek som stöder hög genomströmning.
På samma sätt, om din applikation kommer att arbeta med läsoperationer för det mesta, kan du ställa in index för att stödja vanliga frågor och förbättra prestanda.
Traditionellt är en av övervägandena när man skapar en datamodell hur man lagrar relaterad data. Relationsdatabaser använder tabeller för att lagra data, där primära och främmande nycklar används för att ställa in dataförhållanden.
På samma sätt används joins för att komma åt och köra operationer över flera tabeller. Som någon som har bytt till MongoDB från en relationell DBMS, till exempel SQL Server, kommer du inte att hitta anslutningar i MongoDB. Det beror på att MongoDB lagrar samlingsdata genom att antingen referera till data eller bädda in data i en samling.
Om din datamodell tar tio tabeller i en relationsdatabas är det därför möjligt att MongoDB låter dig konsolidera den i en enda samling.
Typer datamodeller
Nu när du vet hur datamodellering fungerar i MongoDB, låt oss gå igenom de typer av datamodeller som stöds av MongoDB. Vanligtvis beror det på dokumentets struktur och applikationens dataförhållanden.
Inbäddade datamodeller
Du kan bädda in data i ett enda dokument eller en struktur i MongoDB. Även benämnt de-normaliserade datamodeller, utnyttjar den den fulla potentialen i MongoDB: s rika dokument. Tänk till exempel på följande exempel: vi har en samling, studenter, som innehåller ett dokument Matt. I det här dokumentet har vi inbäddat två dokument, kontaktuppgifter och kvalitet.
{
"_id": "4aad66a4c13bb24f12gh199e",
namn: “Matt”,
kontaktuppgifter: {
telefon: ”555-555-1234”
e-postadress: “[email protected]”
},
Betyg: {
ämne: “CS101”
poäng: “B”
}}
Inbäddning lagrar relevant information i samma dokument eller databaspost. På så sätt kan du minimera frågor och uppdateringar som krävs för att utföra vanliga DB-åtgärder.
När ska du använda inbäddade datamodeller? De är användbara för att förbättra prestanda för läsoperationer. Dessutom är de effektiva för behandling av datahämtning av en enda post. Med den här modellen kan du använda en enda skrivoperation för att uppdatera relaterad data.
Det finns dock något du måste tänka på: inbäddning ökar dokumentstorleken efter att den skapats. I vissa fall kan detta påverka skrivprestanda och det finns också möjlighet till datafragmentering på grund av den växande dokumentstorleken.
Slutligen kan du interagera med inbäddade dokument genom att använda punktnotationen och enkelt korsa dem. Här är syntaxen:
field.nestedField: värde
För ovanstående exempel kan du komma åt dina kapslade dokument genom att skriva följande fråga:
db.students.find ({kontaktuppgifter: {telefon: ”555-555-1234”, e-postadress: “[email protected]”}}). söt ()
Normaliserade datamodeller (referenser)
Normaliserade datamodeller används för att bygga en-till-många och många-till-många relationsmodeller. När du arbetar med inbäddade dokumentmodeller kommer det att finnas tider när du måste upprepa data. Det är här referenser kommer till nytta - de hanterar redundansen. Så här kan vi använda referenser för ovanstående exempel.
Vi har delat upp vårt enda dokument i tre dokument och sedan dess kontaktuppgifter och kvalitet har id från Matt dokument kan du ringa dem vid behov.
studerande
{
_id:
användarnamn: “Matt”
}
kontaktuppgifter
{
_id:
användar ID:
e-post: “[email protected]”
telefon: ”555-555-1234”
}
kvalitet
id:
användar ID: ,
ämne: “CS101”,
poäng: “B”
}
Som du kan se delar normaliserade datamodeller data i flera samlingar genom att använda referenser mellan de nyare samlingarna. Du kan uppdatera ett enda dokument som kommer att uppdatera andra samlingar. Detta är ett effektivt sätt att uppdatera data och används mest när dina data går igenom frekventa ändringar.
Här är de tider då en normaliserad datamodell är det klokare valet:
- Du måste modellera stora datamängder som följer en viss hierarki.
- Du måste representera flera många-till-många-relationer.
- Inbäddning skulle orsaka duplicering av data utan att du gynnar din läsprestanda i tillräcklig utsträckning.
Nu kan du modellera data i MongoDB med lätthet
Nu vet du hur datamodellering i MongoDB skiljer sig från relationella DBM: er, särskilt när det gäller schema. Du har också lärt dig om vilka typer av datamodeller i MongoDB - avnormaliserade och normaliserade - och lär dig när du ska använda dem.
Och detta är bara början; det finns mycket mer att lära sig om hur MongoDB kan organisera dina data.
Ett redigeringsalternativ är en av de mest efterfrågade Twitter-funktionerna. Så varför tillåter inte företaget det?
Läs Nästa
- Programmering
- databas
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Ett steg till…!
Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.