sql >> Database teknologi >  >> NoSQL >> MongoDB

Skal vi bruge dbref eller indlejret dokument i en læsetung applikation

DBref er ikke noget som en fremmednøgle i traditionelle relationssystemer. Det er kun en konvention, der nemt fortæller en chauffør (som er i stand til det) at autoloade de henviste dokumenter. Se venligst DBRef for mere information om dette.

Afhængigt af den anvendte driver, kan du muligvis kun indlæse disse referencer automatisk, når du har brug for dem (doven), så ydeevnen bør være meget lille. Men lageromkostningerne er en smule højere end et simpelt refereret _id for et andet dokument. Grundlæggende vil jeg sige, at du kun skal bruge disse DBref'er, hvis det linkede dokument kan være af variabel type. Hvis det er statisk, så sidder du fast med _id-referencer og måske din egen lazy loader-funktionalitet, så du ikke gentager dig selv.

Gentag ikke dig selv (eller dataduplikering i databasetermer) gælder også i din kontekst, som MongoDB anbefaler (så jeg ville også), er kun link dine dokumenter . Ellers ville du have højere lagerforbrug og noget langvarige opdateringer, for kun at opdatere én logisk enhed (duplikeres fysisk meget ofte).

Med den tidligere nævnte brugerdefinerede lazy loader kan du tilføje noget caching, så ikke hvert opslag faktisk resulterer i et mongodb-opslag. Mest sandsynligt ville du da skulle sørge for din datakonsistens mellem cache og db.




  1. 4 måder at slette et dokument i MongoDB

  2. Udskrivning af forespørgselsresultater fra Mongodb i Scala ved hjælp af mongo-scala-driver

  3. Indhentning af $grupperesultat med gruppeantal

  4. VersionError:Ingen matchende dokument fundet fejl på Node.js/Mongoose