sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB-normalisering, främmande nyckel och sammanfogning

MongoDB stöder inte relationer med främmande nyckel på serversidan, normalisering avråds också. Du bör bädda in ditt underordnade objekt i överordnade objekt om möjligt, detta kommer att öka prestandan och göra främmande nycklar helt onödiga. Som sagt är det inte alltid möjligt, så det finns en speciell konstruktion som heter DBRef som gör det möjligt att referera till objekt i en annan samling. Detta kanske inte är så snabbt eftersom DB måste göra ytterligare frågor för att läsa objekt men tillåter typ av främmande nyckelreferens.

Ändå måste du hantera dina referenser manuellt. Bara när du letar upp din DBRef kommer du att se om den finns, DB kommer inte att gå igenom alla dokument för att leta efter referenserna och ta bort dem om målet för referensen inte finns längre. Men jag tror att ta bort alla referenser efter att ha tagit bort boken skulle kräva en enda fråga per samling, inte mer, så inte så svårt egentligen.

Om ditt schema är mer komplext bör du förmodligen välja en relationsdatabas och inte nosql.

Det finns också en bok om att designa MongoDB-databaser:Document Design for MongoDB

UPPDATERA Boken ovan är inte tillgänglig längre, men på grund av MongoDBs popularitet finns det ganska många andra. Jag kommer inte att länka dem alla, eftersom sådana länkar sannolikt kommer att ändras, en enkel sökning på Amazon visar flera sidor så det borde inte vara något problem att hitta några.

Se MongoDB-manualsidan för 'Manuella referenser' och DBRefs för ytterligare detaljer och exempel



  1. Hur man återanvänder mongodb-anslutning genom Promise

  2. Ansluter till MongoDB över SSL med Node.js

  3. Geospatialt stöd i MongoDB

  4. MongoError:kunde inte ansluta till servern vid första anslutningen