This document introduces the Command Query Responsibility Segregation (CQRS) pattern. CQRS is based on the principle of separating commands and queries. It splits the conceptual model into separate models for commands and queries. This allows applying different optimization strategies for reads versus writes. For example, queries can use denormalized data while commands update a normalized database. The read model can be populated asynchronously from the write model and stored in different data stores optimized for reads. CQRS helps handle complex domains and improves scalability.