2011-12-19 15 views
9

Abbiamo un grande sito orientato alle notizie che ha un elevato traffico web. L'architettura è il tuo DB - Repo Layer - Layer dei servizi - Asp.Net MVC spesso visto. Il problema che abbiamo riscontrato riguarda le prestazioni di lettura. Si scopre che tutta questa roba sugli oggetti del dominio DDD è ottima, in teoria, per le regole aziendali, ma ha reso la vita più difficile quando si tratta di ottimizzare le prestazioni di lettura.È possibile utilizzare SQL Server e Mongo insieme?

Come soluzione, sto considerando qualcosa di completamente nuovo (per noi): utilizzando noSQL. Mi piacerebbe utilizzare un database noSQL per i dati presentati sul nostro sito. Non possiamo sbarazzarci del nostro SQL Server (almeno non molto presto), ma mi sembra che un passo pratico sarebbe usare Mongo come database di query per tutti i nuovi sviluppi.

La mia domanda è se è possibile utilizzare SQL Server come database di record e Mongo come database di query insieme e, in caso affermativo, quale tecnologia/tecnica useresti per aggiornare gli aggiornamenti? Mi piacerebbe che la Mongo venisse aggiornata ogni 15 minuti.

+1

Questo potrebbe essere una domanda per programmers.stackexchange.com, ma sarò interessato alle risposte poiché stiamo cercando di fare la stessa cosa. –

+0

Bene, penso che * ovviamente * questo sia possibile - la vera domanda qui è se ci sono strumenti o framework che possono rendere più semplice l'uso di MongoDB come cache di lettura per SQL Server. –

+0

Aggiunto a stackexchange all'indirizzo http://programmers.stackexchange.com/questions/125980/can-sql-server-and-mongo-be-used-together – John

risposta

8

suggerisco di dare un'occhiata in cqrs (Comando Query Responsabilità segregazione) modello che è stato inizialmente introdotto da Greg Young. Inoltre puoi leggere here.

Questo approccio prevede di avere due database: lettura e scrittura. Il database di scrittura viene utilizzato come archivio di scrittura primario e letto - database per l'esecuzione di query. Il database di lettura può avere dati denormalizzati. Ad esempio se hai un articolo puoi incorporare le informazioni dell'autore anche per una rapida visualizzazione su ui. E in generale il database nosql si adatta perfettamente allo storage di lettura.

Nel tuo caso il database normalizzato primario può essere in sql e il database di lettura può essere in mongodb.

In generale questo approccio è adatto per sistemi ad alto traffico. C'è un'implementazione open source di esso - ncqrs.

Anche questo approccio in roadmap di microsoft per l'anno 2012.

da parte mia: sto usando questo approccio da più di un anno e sto dando il mio voto personale.

+0

CQRS è quello che sto cercando di fare, ma ho difficoltà a capire come ci si muove verso questo mentre si sta ancora lavorando con un sistema legacy esistente. nCQRS sembra richiedere un'enorme riscrittura. Sto cercando di iniziare con qualcosa di semplice: creare un MongoDB di sola lettura e usarlo per le nuove pagine laterali del client. Come dice Udi "... CQRS è un approccio, una mentalità - non una soluzione di cookie cutter". – John

+0

@John: Yea, Udi Dahan diritti come al solito. Applica cqrs significa un'enorme riscrittura, ma porterà molti benefici in futuro. Non solo miglioramenti delle prestazioni, scalabilità ma anche semplificazione e separazione logica del codice dell'applicazione. –

Problemi correlati