Это вопрос «языковой агностик». Я начал изучать шаблон CQRS.CQRS design: nosql data view
У меня вопрос простой. Я предполагаю, что у меня есть два разных уровня хранения: одна реляционная для команд (Mysql и т. Д.) И одна NoSql (mongo, cassandra .. и т. Д.) Для «запроса»?
Позвольте мне объяснить немного пример:
1) Как пользователь, я хочу, чтобы вставить «Todo задачу» Команда: «Создать задачу» и вставить новую задачу в базу данных, которые имеют пользователя и таблицы Todo.
2) Как пользователь, я могу видеть список созданной задачи Запрос: «GetTasks», который вернет «представление» с коллекцией задач, взятой из таблицы без sql с именем «UserTasks», которые имеют пользователя и списка созданной задачи.
Правильный подход? Извините, если язык плох, это всего лишь маленький пример. Если это кажется хорошим подходом (опять же, не учитывайте детали), то какой лучший подход к обновлению хранилищ данных?
Я собираюсь поднять событие типа «TaskCreated» и выполнить новую задачу и вставить эту информацию в хранилище nosql.
Спасибо!
CQRS не требует различных моделей сохраняемости, просто разные модели приложений (Domain и запросов).В зависимости от вашего приложения вы можете использовать одну и ту же модель сохранения для обеих потребностей, или вам понадобятся конкретные модели устойчивости для каждого. Дело в том, что это не _must_, вам решать, лучше ли 1 или 2 модели для вашего приложения. – MikeSW
Хорошо спасибо за ответ Майк. Да, как обсуждалось выше, я знаю, что вы можете выбрать разные решения в каждом конкретном случае. Я просто любопытство, если в некоторых случаях это не нарушение «cqrs design», использующее два разных хранилища данных: один для команды и один для запроса. Если нет, то в этом случае лучший способ сохранить хранилище данных запроса обновления с помощью «команды»? – erlangb
CQRS = 1 Модель домена и по меньшей мере одна модель чтения. Вот и все. Все остальное - подробности реализации. CQRS - это просто принцип, вы решаете, как он будет реализован. – MikeSW