CQRS, asset architetturale

Ogni applicazione software è un universo a sé, ogni applicazione necessita di asset architetturali differenti, CQRS è uno di essi.

In sostanza, un modello per modificare i dati ed un modello differente per leggere i dati. CQRS è l’acronimo di Command Query Responsibility Segregation ed ha come padre Greg Young.

Cosa è un modello?
Un modello è in sostanza una classe che rappresenta un’entità reale, o almeno, ne rappresenta le proprietà interessanti per il sistema (il contesto in cui il modello verrà utilizzato).

CQRS separa le responsabilità in due grandi blocchi, questi sono l’essenza di fondo dell’architettura.

Command: un metodo che esegue un azione e modifica un modello.
Query: un metodo che legge un modello e restituisce i dati.

Un Command si limita a modificare un modello senza effettuare nessuna lettura successiva. Sarà un evento asincrono che si preoccuperà di aggiornare il modello di di lettura, su cui potranno essere eseguite le Query. Il modello di lettura in genere utilizza un database NoSQL per avere dalla sua le migliori prestazioni oltre a poter scalare in modo migliore. Non è difficile immaginare uno scenario in cui venga utilizzato una persistenza relazionale come modello di scrittura ed una persistenza NoSQL come modello di lettura.