Читання і запис мають різні вимоги: запити на читання — складні JOIN-и і агрегації; команди — транзакційна цілісність. Розділення дозволяє оптимізувати кожне незалежно.
Одна БД, але різні класи: CreateOrderCommand і OrderSummaryQuery. Мінімальна складність, але вже дає структуру.
Write-side зберігає події (Event Store), read-side будує денормалізовані проєкції зручні для читання. Висока складність, але повна аудит-трейл і можливість «перемотати» стан.
CQRS додає складність. Виправданий у складних доменах з різним навантаженням на читання і запис. Для CRUD-застосунків — зайвий.