Se si desidera 'minimizzare l'impatto' si vorrà creare un database in MongoDB quello che si ha in SQL. Poiché non vi sono join nel database, è necessario eseguire più letture per completare la query. Di per sé non è male perché MongoDB è molto veloce, ma ovviamente ha altri problemi (concorrenza, ecc.).
Se, tuttavia, si desidera passare completamente al modo NOSQL di fare cose che probabilmente non si è in grado di 'minimizzare l'impatto', sarà necessario apportare modifiche sostanziali al modo in cui si memorizza contenuto, il modo in cui l'accesso e il modo in cui lo si aggiorna.
Archiviazione: Probabilmente creerai documenti nel tuo database denormalizzati e molto più vicini a "ViewModels" rispetto a "Modelli". Ad esempio, è possibile memorizzare un conteggio di record figlio in un record padre in modo che sia possibile visualizzarlo senza caricarli o contarli.
Accesso: Si potrebbe finire con l'uso di Map-Reduce per alcune query al database, che è una mentalità molto diversa da una query tradizionale.
Aggiornamenti: Con ogni probabilità il tuo approccio alla aggiornamento sarà diverso, al fine di sfruttare le numerose funzioni di aggiornamento a grana fine MongoDB come $inc
. Invece di postare un modello di vista di grandi dimensioni e quindi applicarlo al modello e quindi aggiornare il database, potresti invece fornire una callback Ajax a grana più fine che aggiorna un singolo valore. Dai un'occhiata a CQRS per ulteriori idee su come pensare ai modelli per gli aggiornamenti e le query.
fonte
2012-04-23 23:05:07
Ottima spiegazione !!! Grazie – marvelTracker