CQRS (Command Query Responsibility Segregation) — pattern, где read и write операции использую разные data models, часто разные databases. Write-side handles commands (create/update), read-side — queries. Применяется при high read-load (social feeds, analytics) или complex domain. Часто сочетается с Event Sourcing. Complexity overhead велик — не нужен для CRUD apps.
Ниже: подробности, пример, смежные термины, FAQ.
// Command (write)
class CreateOrderCommand { orderId, customerId, items }
// Query (read)
class OrderSummaryView { orderId, total, status } // denormalizedCRUD — один model для чтения и записи. CQRS — разделение, больше кода, но лучше для complex domains. Для simple apps — overkill.
Нет. CQRS работает и с обычной SQL. Но ES хорошо дополняет — write-side пишет events, read-side materializes views.
Async через events (Kafka, RabbitMQ). Eventual consistency — read model отстаёт на секунды-минуты.