net microservice example ddd asp cqrs command-query-separation ncqrs

cqrs - example - microservices persistence layer



diferencia entre cqrs vs cqs (3)

Estoy aprendiendo qué es el patrón CQRS y llegué a saber que también hay un patrón CQS

Cuando traté de buscar encontré muchos diagramas , información sobre CQRS pero no encontré mucho sobre CQS

punto clave en el patrón CQRS

En cqrs hay un modelo para escribir (modelo de comando) y un modelo para leer (modelo de consulta) , que están completamente separados .

¿Cómo se diferencia CQS de CQRS ? . ?

¿Cuáles son los puntos clave donde ambos se diferencian? . ?

Cualquier ayuda sería apreciada :)


CQS (Separación de consulta de comando) y CQRS (Segregación de responsabilidad de consulta de comando) están muy relacionados. Puede pensar que CQS está en el nivel de clase o componente, mientras que CQRS está más en el nivel de contexto acotado.

Tiendo a pensar que CQS está en el nivel micro y CQRS en el nivel macro.

CQS prescribe métodos separados para consultar o escribir en un modelo: la consulta no muta el estado, mientras que el comando muta el estado pero no tiene un valor de retorno. Fue diseñado por Bertrand Meyer como parte de su trabajo pionero en el lenguaje de programación de Eiffel.

CQRS prescribe un enfoque similar, excepto que es más una ruta a través de su sistema. Una solicitud de consulta toma una ruta separada de un comando. La consulta devuelve datos sin alterar el sistema subyacente; El comando altera el sistema pero no devuelve datos.

Greg Young elaboró ​​una reseña bastante detallada de lo que CQRS hace algunos años atrás, y explica cómo CQRS es una evolución de CQS. Este documento me introdujo en CQRS hace algunos años, y me parece un documento de referencia muy útil.


La mayor diferencia es que CQRS utiliza almacenes de datos separados para comandos y consultas. Un almacén de consultas puede usar una tecnología diferente, como una base de datos de documentos, o simplemente ser un esquema desnormalizado en la misma base de datos que facilita la consulta de los datos.

Los datos entre bases de datos generalmente se copian de forma asíncrona utilizando algo como un bus de servicio. Por lo tanto, los datos en el almacén de consultas son finalmente consistentes (estarán ahí en algún momento). Las aplicaciones deben tener en cuenta eso. Si bien es posible usar la misma transacción (la misma base de datos o una confirmación de dos fases) para escribir en ambas tiendas, generalmente no se recomienda por motivos de escalabilidad.

La arquitectura CQS lee y escribe desde el mismo almacén de datos / tablas.


  • CQS es sobre Comando y Consultas. No le importa el modelo. De alguna manera, tiene servicios separados que solo leen datos y servicios que modifican datos.
  • CQRS se trata de modelos separados para escribir y leer. Por supuesto, el uso del modelo de escritura a menudo lee algo para cumplir con la lógica empresarial, pero solo puede hacer lecturas en el modelo de lectura. Bases de datos separadas son de vanguardia. Pero imagine un solo DB con modelos separados para lectura y escritura modelados en OR / M. Muy a menudo es lo suficientemente bueno.

He encontrado que las personas a menudo dicen que practican CQRS cuando tienen CQS.