Что такое CQRS?

Middle+
590 просмотров
AFK Offer AI

CQRS (Command Query Responsibility Segregation) — разделение модели на запись (commands) и чтение (queries). Вместо одной модели для всего делаешь две: одна оптимизирована для записи, другая — для чтения.

Write Model (Command):
  CreateOrder → INSERT в нормализованную БД
  UpdateOrder → UPDATE

Read Model (Query): GetOrderDashboard → SELECT из денормализованной view/таблицы SearchOrders → Elasticsearch

Зачем: запись и чтение часто имеют разные требования. Для записи важна консистентность и нормализация. Для чтения — скорость и удобная структура. С CQRS можно читать из Redis/Elasticsearch, а писать в PostgreSQL.

Минусы: eventual consistency между моделями, сложность синхронизации, больше кода. Не нужен для простых CRUD-приложений — overkill. Оправдан когда паттерны чтения и записи сильно различаются, нагрузка на чтение в 10-100 раз больше записи.

Следующий вопрос

Что такое sliding window?