5

Sto pianificando il port da Entity Framework 4.0 a MongoDb. Quali sono le migliori pratiche che possono minimizzare l'impatto dal momento che il progetto sta avendo funzionalità di social networking quindi, mantenere un database relazionale complesso. Come risultato, le prestazioni dovrebbero essere una questione se utilizziamo il database relazionale .Porta da Entity Framework a MongoDB

Abbiamo utilizzato il livello di dominio (utilizzando POCO), il modello di repository e il mapping DTO nel progetto. Inoltre, Quali sono i vantaggi e gli svantaggi della decisione? Allo stesso tempo, in che modo influisce sull'implementazione del mio livello di dominio?

risposta

2

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.

+0

Ottima spiegazione !!! Grazie – marvelTracker