Я смотрел и читал несколько руководств о CQRS, но ВСЕ из них не используют пример реального мира, все из них (To делает вещи легкие) имели только хранилище событий памяти. И в этом примере легко и быстро получить текущее состояние объекта от «переигровки» событий.CQRS, все еще не получает его полностью, что сохранено в БД; (
Но как это работает в реальном слове пример с базой данных SQL. Скажем, у меня есть система с пользователями.
и у меня есть пользовательский интерфейс, где я могу добавлять и редактировать пользователей, но также получить список всех пользователей.
Теперь, основываясь на том, что говорят уроки, у меня есть мои события, сохраненные в db, скажем, каждый пользователь имеет 3 изменения в своем профиле, и у нас 100 000 пользователей.
Теперь у меня есть репо с GetById. В обычной системе без CQRS я получаю ровно одну запись на основе Id. Быстрое и малое использование ресурсов.
Но теперь в системе CQRS мне нужно загрузить 3 записи из БД и применить их к новому пользовательскому объекту и вернуть это ... это не то, что исполнитель, но я бы сказал: Возможно, жизнь с ним, из-за вырубки леса и так далее ».
Но как я могу использовать сценарий списка, где я показываю 50 пользователей на одной странице. 50 раз x 3 записи, и это для каждой страницы нажмите ??? И это не только для клиентов, может быть, счетов-фактур, заказов и т. Д., Какими ресурсами это?
Получаю ли я что-то совершенно неправильное в отношении CQRS/EventSourcing или у меня есть жизнь с этим сумке?
Сердечные приветы
Я знаю, что CQRS - это разделение на чтение и запись, и в этом большая часть. Но все после этого неясно для меня. Крошечный пример в реальном мире был бы замечательным. UpdateUserCommand в UserAggregat запускает событие UserUpdatedEvent, которое будет храниться в сериализованной таблице событий SQL. Я тоже получил эту часть. Это сторона записи. Но как обрабатывать сторону чтения, есть ли таблица пользователя или нет (только таблица событий), если она есть, делает ли она команду не только вставлять в таблицу событий, но также обновляет пользователя в таблице пользователя ? И чтение работает только с пользовательской таблицей? – SharpNoiZy
Посмотрите на образец от MS, он охватывает все это. Там может быть одна или несколько пользовательских таблиц, которые предназначены для отображения необходимой информации. Событие может обрабатываться одним или несколькими процессорами, которые обновляют другие представления. Эти представления, как правило, очень просты, и данные можно отбросить и просмотреть перестроенные путем запуска событий через процессор снова – GraemeMiller