2011-12-19 32 views
9

Tenemos un gran sitio orientado a las noticias que tiene un alto tráfico web. La arquitectura es su DB a menudo vista - Capa Repo - Capa de Servicios - Asp.Net MVC. El problema que hemos estado viendo es el rendimiento de lectura. Resulta que todo este material de dominio DDD es genial, en teoría, para las reglas de negocio, pero ha hecho la vida más difícil cuando se trata de optimizar el rendimiento de lectura.¿Se pueden usar SQL Server y Mongo juntos?

Como solución, estoy considerando algo completamente nuevo (para nosotros): usar noSQL. Me gustaría utilizar una base de datos no SQL para los datos que se presentan en nuestro sitio web. No podemos deshacernos de nuestro Servidor SQL (al menos no pronto), pero me parece que un paso práctico sería usar Mongo como base de datos de consulta para todos los nuevos desarrollos.

Mi pregunta es si es posible utilizar SQL Server como su base de datos de registro y Mongo como su base de datos de consultas juntas y, de ser así, ¿qué tecnología/técnica usaría para actualizar las actualizaciones? Me gustaría que Mongo se refresque cada 15 minutos.

+1

Esto PUEDE ser una pregunta para programmers.stackexchange.com, pero voy a estar interesado en las respuestas ya que estamos buscando hacer lo mismo. –

+0

Bueno, creo que * obviamente * esto es posible, la verdadera pregunta aquí es si hay herramientas o marcos que pueden hacer que sea más fácil usar MongoDB como un caché de lectura para SQL Server. –

+0

Agregado a stackexchange en http://programmers.stackexchange.com/questions/125980/can-sql-server-and-mongo-be-used-together – John

Respuesta

8

que sugieren que echar un vistazo a cqrs (comando de consulta de Responsabilidad Segregación) patrón que fue introducido inicialmente por Greg Young. También puedes leer here.

Este enfoque implica tener dos bases de datos: leer y escribir. La base de datos de escritura se utiliza como almacén de escritura primario y base de datos de lectura para consultas. La base de datos de lectura puede tener datos desnormalizados. Por ejemplo, si tiene un artículo, puede incrustar la información del autor y mostrarlo rápidamente en la interfaz de usuario. Y, en general, la base de datos nosql es apta para el almacenamiento de lectura.

En su caso, la base de datos primaria normalizada puede estar en sql y la base de datos de lectura puede estar en mongodb.

En general, este enfoque es adecuado para sistemas de alto tráfico. Hay una implementación de código abierto de él - ncqrs.

También este enfoque en roadmap de microsoft para el año 2012.

de mí: uso este enfoque hace más de un año y le doy mi voto personal.

+0

CQRS es lo que trato de hacer, pero tengo dificultades para entender cómo avanzaría hacia eso sin dejar de trabajar con un sistema heredado existente. nCQRS parece que requeriría una enorme reescritura. Estoy tratando de comenzar con algo simple: crear un MongoDB de solo lectura y usarlo para las nuevas páginas del lado del cliente. Como Udi dice "... .CQRS es un enfoque, una mentalidad, no una solución de cortador de galletas". – John

+0

@John: Sí, los derechos de Udi Dahan como de costumbre. Aplicar cqrs significa una enorme reescritura, pero generará muchos beneficios en el futuro. No solo mejoras de rendimiento, escalabilidad, sino también simplificación y separación lógica del código de la aplicación. –

Cuestiones relacionadas