sql >> Database >  >> NoSQL >> MongoDB

Moeten we dbref of ingesloten document gebruiken in een leeszware toepassing?

DBref is niet zoiets als een Foreign-sleutel in traditionele relationele systemen. Het is slechts een conventie die een bestuurder (die daartoe in staat is) gemakkelijk vertelt om de genoemde documenten automatisch te laden. Zie DBRef voor meer informatie hierover.

Afhankelijk van het gebruikte stuurprogramma, kunt u die verwijzingen mogelijk alleen automatisch laden wanneer u ze nodig hebt (lui), dus de prestatie-overhead zou erg klein moeten zijn. Maar de opslagoverhead is iets hoger dan een eenvoudig verwezen _id van een ander document. Kortom, ik zou zeggen dat je die DBref's alleen moet gebruiken als het gekoppelde document van een variabel type kan zijn. Als het statisch is, zit je vast met _id-referenties en misschien je eigen lazy loader-functionaliteit, dus je hoeft jezelf niet te herhalen.

Herhaal jezelf niet (of dataduplicatie in databasetermen) is ook van toepassing in jouw context, zoals MongoDB aanbeveelt (dus ik ook), is om alleen koppel uw documenten . Anders zou u een hoger opslaggebruik en enigszins langlopende updates hebben, om slechts één logische entiteit bij te werken (fysiek heel vaak gedupliceerd).

Met de eerder genoemde custom lazy loader kun je wat caching toevoegen zodat niet elke lookup ook daadwerkelijk resulteert in een mongodb lookup. Hoogstwaarschijnlijk moet u dan zorgen voor de gegevensconsistentie tussen cache en db.




  1. Mogelijke query met MongoDB

  2. gebruik node-redis met node 8 util.promisify

  3. Documentdatabases:overtollige gegevens, referenties, enz. (specifiek MongoDB)

  4. mappenstructuur voor MEAN-stack