CQRS - это разделение операций чтения и записи. Операции записи требуют таких вещей, как блокировка, гарантированный порядок и всегда последнее состояние. В классических системах (реляционных базах данных) вы также даете эти гарантии для операций чтения, что влечет за собой огромное влияние на производительность и большие проблемы с масштабируемостью. Вот почему в CQRS вы предоставляете операциям чтения отдельную копию данных, которая оптимизирована для быстрого чтения, например, он денормализован и помещен в более эффективные и более быстрые системы (например, кэш-память), я бы назвал это «представлением чтения [по данным системы]».
CQRS работает без ES, поскольку вы можете создать оптимизированное представление чтения из традиционного хранилища данных (например, реляционной базы данных).
ES работает без CQRS, , но только если число событий достаточно мало . Потому что вы храните все изменения системы в базе данных, и каждое чтение должно использовать одну и ту же базу данных и перебирать все события, необходимые для выполнения запроса. В конечном счете, будет слишком много событий, которые нужно прочитать, чтобы ответить, и время, которое потребуется, чтобы ответить, станет слишком длинным.