sql >> Databasteknik >  >> NoSQL >> MongoDB

NoSQL bästa praxis

Jag tror att för närvarande är hela idén med NoSQL-datalager och konceptet med dokumentdatabaser så ny och annorlunda från de etablerade idéerna som driver relationslagring att det för närvarande finns väldigt få (om några) bästa praxis.

Vi vet vid det här laget att reglerna för att lagra dina data i t.ex. CouchDB (eller någon annan dokumentdatabas) är ganska annorlunda än dem för en relationsdatabas. Till exempel är det ganska mycket ett faktum att normalisering och sikte på 3NF inte är något man bör sträva efter. Ett av de vanligaste exemplen skulle vara en enkel blogg.

I en relationsbutik skulle du ha varsin tabell för "Inlägg", "Kommentarer" och "Författare". Varje författare skulle ha många inlägg och varje inlägg skulle ha många kommentarer. Detta är en modell som fungerar tillräckligt bra, och kartlägger bra över alla relationella DB. Men att lagra samma data i en docDB skulle troligen vara ganska annorlunda. Du skulle förmodligen ha något i stil med en samling inläggsdokument, som var och en skulle ha sin egen författare och samling av kommentarer inbäddade direkt i. Det är naturligtvis inte det enda sättet du kan göra det på, och det är lite en kompromiss (nu). Det går snabbt att söka efter ett enskilt inlägg - du gör bara en operation och får tillbaka allt), men du har inget sätt att upprätthålla relationen mellan författare och inlägg (eftersom det hela blir en del av postdokumentet).

Jag har också sett exempel som använder ett "type"-attribut (i ett CouchDB-exempel). Visst, det låter som ett hållbart tillvägagångssätt. Är det den bästa? Jag har ingen aning. Visst i MongoDB skulle du använda separata samlingar i en databas, vilket gör typattributet totalt nonsens. I CouchDB dock... kanske det är bäst. De andra alternativen? Separata databaser för varje typ av dokument? Detta verkar lite slingrigt, så jag skulle luta mig mot "typ"-lösningen själv. Men det är bara jag. Kanske finns det något bättre.

Jag inser att jag har tjatat om en hel del här och sagt väldigt lite, förmodligen inget du inte redan visste. Min poäng är dock detta - jag tror att det är upp till oss att experimentera med de verktyg vi har och den data vi arbetar med och med tiden kommer de goda idéerna att spridas och bli bästa praxis. Jag tycker bara att du frågar lite för tidigt i spelet.



  1. Få ett dokument i MongoDB utan att ange insamling

  2. Infoga prestanda för nod-mongodb-native

  3. PHP MongoDB karta minska db påstående misslyckande

  4. Mongoose - Aggregation $match baserat på enumvärden