Command Query Responsibility Segregation (CQRS)

Command Query Responsibility Segregation (CQRS) é um padrão de design arquitetural que separa a lógica de escrita e leitura de dados em sistemas de software. Em sistemas tradicionais, uma única interface ou componente pode ser responsável por realizar operações de leitura (query) e escrita (command) em um banco de dados ou outra forma de armazenamento de dados. No CQRS, essas responsabilidades são divididas:

  1. Comandos (Commands): São responsáveis por alterar o estado do sistema. Eles representam ações ou intenções de mudança. Quando um comando é recebido, ele é processado para modificar os dados, seja para criar, atualizar ou excluir informações.

  2. Consultas (Queries): São responsáveis por ler ou obter dados sem modificá-los. Elas são usadas para recuperar informações do sistema para exibir ao usuário ou alimentar algum processamento que não necessite alterar o estado dos dados.

A principal vantagem do CQRS é permitir a otimização independente das operações de leitura e escrita, o que é especialmente benéfico em sistemas complexos ou de larga escala. Por exemplo, a leitura pode ser otimizada para consultas rápidas, enquanto a escrita pode ter um processo mais robusto que inclui validações complexas.