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

Dovremmo usare dbref o un documento incorporato in un'applicazione di lettura pesante

DBref non è per niente come una chiave esterna nei sistemi relazionali tradizionali. È solo una convenzione che dice facilmente a un conducente (che è in grado di farlo) di caricare automaticamente quei documenti riferiti. Consulta DBRef per ulteriori informazioni su questo.

A seconda del driver utilizzato, potresti essere in grado di caricare automaticamente quei riferimenti solo quando ne hai bisogno (pigro), quindi il sovraccarico delle prestazioni dovrebbe essere davvero ridotto. Ma il sovraccarico di archiviazione è leggermente superiore a un semplice _id referenziato di un altro documento. Fondamentalmente, direi che dovresti usare quei DBrefs solo se il documento collegato può essere di tipo variabile. Se è statico, sei bloccato con _id-references e forse la tua funzionalità di caricamento lento, quindi non ti ripeti.

Non ripetere te stesso (o la duplicazione dei dati in termini di database) vale anche nel tuo contesto, come raccomanda MongoDB (così lo farei anch'io), è solo collega i tuoi documenti . Altrimenti avresti un maggiore utilizzo dello spazio di archiviazione e aggiornamenti piuttosto lunghi per aggiornare solo un'entità logica (duplicata fisicamente molto spesso).

Con il lazy loader personalizzato menzionato in precedenza è possibile aggiungere un po' di memorizzazione nella cache in modo che non tutte le ricerche si traducano effettivamente in una ricerca mongodb. Molto probabilmente dovresti quindi occuparti della coerenza dei dati tra cache e db.