Я думаю, что понимаю идею модели чтения в контексте ES + CQRS (пожалуйста, поправьте меня, если не так). Однако у меня все еще есть некоторые сомнения относительно его использования в контексте «серьезных» репортажей. Допустим, я использую реляционную базу данных плюс немного ORM для проверки моих моделей чтения. Одна базовая «модель чтения сводной статистики» может выглядеть так:
class SummaryStats1
{
public Guid TypeId { get; set; }
public string TypeName { get; set; }
public Guid SubTypeId { get; set; }
public string SubTypeName { get; set; }
public int Count { get; set; }
}
Учитывая событие:
TypeId = 3acf7d6f-4565-4672-985d-a748b7706a3e
TypeName = Bla1
SubTypeId = 41532aa1-f5d1-4ec4-896b-807ad66f75fc
SubTypeName = Bla2
Нормализатор будет:
(1) Проверьте, существует ли экземпляр вышеуказанной комбинации (определяется TypeId, TypeName, SubTypeId, SubTypeName) (2) Если экземпляра нет, он создаст экземпляр и установит Count равным единице. Если есть, это увеличит количество на единицу.
Является ли это приемлемым подходом к отчетности? Я предполагаю, что можно использовать очень эффективные выборки для этой денормализованной структуры данных (для фильтрации и других «проекций» sql):
SELECT TypeName, Sum(Count) FROM SummaryStats1 GROUP BY TypeName
Согласятся ли с этим эксперты CQRS/ES? Является ли это «способом» ведения дел (т. Е. Создавать эти специальные модели чтения отчетов)? Буду очень признателен за любые ссылки на исходный код/реальные примеры.