Во многих случаях может быть сложно (а иногда даже невозможно) смоделировать работу системы так, чтобы удовлетворить все её потребности. Например, для реализации обработки транзакций в реальном времени (OLTP), оперативной аналитической обработки (OLAP) и поиска оптимальны разные модели.
Другой причиной для работы с несколькими моделями может быть понятие многовариантного хранения, которое применяется, когда ни одна база данных не может полностью удовлетворить все потребности системы. Вместо этого можно использовать несколько баз данных для реализации различных требований к доступу к данным. Например, одна система может использовать хранилище документов как свою операционную базу данных, хранилище столбцов для аналитики/отчетности и поисковую систему для реализации надежных возможностей поиска.
Давайте посмотрим, как CQRS позволяет использовать несколько механизмов хранения, для представления разных моделей данных системы.