2017-02-09 11 views
0

Я задаюсь вопросом, считается ли использование других моделей для чтения моей модели чтения с определенной точностью. Например, есть два корня: Активация и Отчет. Чтобы создать запрос отчета, мне нужно текущее состояние пользователя, и у меня уже есть модель чтения, которая предоставляет мне эту информацию. Могу ли я использовать его или я должен перестроить свой запрос, зависит только от событий (от разных агрегированных)?В зависимости от моделей чтения для построения другой прочитанной модели

Одна из проблем, которые я вижу в этом подходе, заключается в том, что я могу захотеть получить User в состоянии в конкретную дату из прошлого в этих отчетах. И, конечно же, я оставляю без внимания текущие проблемы.

Может быть, я могу построить таблицу поддержки пользователей для запроса отчетов?

ответ

1

Ответ зависит от того, насколько вы отделите себя от моделей с чтением.

  1. Если вы хотите тип развязки микросервиса (свободный), модель чтения отчетов должна зависеть только от событий, генерируемых User AR; в этом случае вы должны создать еще одну модель чтения, которая отображает только интересные события из User AR (UserWasCreated, UserHasChangedHisUsername и т. д.), а модель чтения в отчетах должна использовать эту локальную модель чтения. При восстановлении модели чтения отчетов вы также можете перестроить модель чтения локальных пользователей, и вы получаете состояние пользователя в этот конкретный момент в прошлом (две модели чтения перестраиваются синхронно). Для этого требуется больше кода, но он дает вам развязанную систему.
  2. Если вы хотите монолитную систему, модель чтения отчетов может запрашивать модель чтения пользователей; в этом случае невозможно получить состояние пользователя в какой-то момент в прошлом, поскольку модель чтения пользователей отражает (возможно) последнее состояние.