2012-03-30 20 views

risposta

8

hiya vedono questo: MongoDB normalization, foreign key and joining & & ulteriormente http://shop.oreilly.com/product/0636920018391.do ===>http://books.google.com/books/about/Document_Design_for_MongoDB.html?id=TbIHkgEACAAJ&redir_esc=y

MongoDB non supporta lato server relazioni di chiave esterna, normalizzazione è anche scoraggiato. Dovresti incorporare l'oggetto figlio all'interno degli oggetti padre, se possibile, questo aumenterà le prestazioni e rendere le chiavi esterne totalmente inutili. Detto questo, non è sempre possibile , quindi esiste un costrutto speciale chiamato DBRef che consente di creare oggetti di riferimento in una raccolta diversa. Questo potrebbe essere quindi non così perché DB deve fare ulteriori query per leggere gli oggetti ma consente il tipo di riferimento di chiave esterna.

Ancora si dovrà gestire i vostri riferimenti manualmente. Solo durante la guardando il vostro DBRef si vedrà se esiste, la DB non passerà attraverso tutti i documenti per cercare i riferimenti e rimuoverli se il target di riferimento non esiste più. Ma penso che rimuovere tutti i riferimenti dopo aver eliminato il libro richiederebbe una query singola per raccolta, non di più, quindi non così difficile davvero.

Modifica aggiornamento

http://levycarneiro.com/tag/mongodb/

levycarneiro.com/tag/mongodb [quote] in modo da creare 4 collezioni: clienti, fornitori, dipendenti e contatti. Li colleghi tutti insieme tramite un riferimento db. Funziona come una chiave straniera. Ma questo non è il modo mongoDB di fare le cose. Le prestazioni saranno penalizzate. [unquote]

+1

Interessante. Che cosa significa "embeddare oggetti figlio nell'oggetto padre"? Ciò significa che se si ha una relazione ordine/elementi-linea, si aggiungeranno oggetti riga-elemento come proprietà nel documento dell'ordine? – McGarnagle

+1

Hiya, in effetti, penso; articolo interessante qui - http://levycarneiro.com/tag/mongodb/ [quote] Così crei 4 collezioni: clienti, fornitori, impiegati e contatti. Li colleghi tutti insieme tramite un riferimento db. Funziona come una chiave straniera. Ma questo non è il modo mongoDB di fare le cose. Le prestazioni saranno penalizzate. [unquote] - :) evviva –

+0

Grande, è davvero utile Tats. In realtà Mongo DB non è molto efficiente per implementare riferimenti tra oggetti, come ho capito. –