Arquitetura Distribuída CQRS
CQRS é o acrônimo para Command Query Responsability Segregation (Segregação de Responsabilidade de Comando e Consulta). A ideia fundamental é que um sistema pode ser dividido em duas partes: uma responsável por realizar ações de gravação e outra responsável por realizar ações de leitura.
A arquitetura CQRS está baseada no princípio da separação entre comando e consulta definida por Bertrand Meyer. Por este princípio, todo algoritmo deve ter apenas um dos seguintes objetivos:
- alterar dados armazenados.
- retornar dados armazenados.
Em termos de programação isso significa que se uma função ou método de um objeto retorna algum dado então esta função ou método é uma consulta. Funções ou métodos que não retornam nada são comandos.
A figura abaixo mostra sintetiza os conceitos da arquitetura CQRS:
Fonte: http://udidahan.com/wp-content/uploads/cqrs.png
Em uma aplicação CQRS o usuário pode:
- enviar um comando (command) que, se aceito, produzirá alguma modificação nos dados armazenados;
- enviar uma consulta (query) que irá realizar apenas a recuperação de dados armazenados.
A principal diferença entre um sistema tradicional e um CQRS é que no primeiro há um único modelo de dados e uma única base de dados correspondente e no segundo há dois modelos de dados e duas bases de dados.
Em algumas aplicações a quantidade de usuários que apenas faz leitura de informações é muito maior que a quantidade que produz informações. A separação entre o lado leitura e o lado escrita permite que ambos sejam otimizados. Esta é a explicação para haver dois modelos de dados e duas bases de dados em aplicações CQRS.
Leitura Obrigatória |
---|
Post: CQRS pattern |
Post: Estilo arquitetural CQRS |
Post: Esclarecendo CQRS |
Leitura Recomendada |
---|
Command-Query Separation |
CQRS Journey |