Axon users and CQRSers…
Have been working with CQRS for a while now and am seeing a traditional CQRS antipattern emerging as a controversial aggregate oriented pattern.
Traditional CQRS is where you update into aggregate, send events to reporting store and read from reporting store. This is great for data which is in reporting streamlined format/view data.
A lot of times data needs to be read in an aggregate orientation for the application. That is where we are seeing that the Aggregate and its entities stored in aggregate are easily accesible for reading. Now, the problem is that if you don’t do that you land up duplicating aggregate oriented storage on the reporting side for that type of data access with a lot of duplicate code and similar data.
Fowler has written about this term aggregate oriented data storage and access in the noSql book, which I think is interesting vs traditional never read an aggregate store policy.
This is more of a dilema and want to get opinion from the crew here on their thoughts as there are pros and cons to both approaches with respect to reading and writing from aggregate store.
One problem we have run into is that we land up storing object blobs similar to aggregate in the reporting store after trapping events and reading the object oriented aggregate oriented storage from reporting store, which seems redundant once you see the pattern repeating and related code bloat for handling events and storing data in the reporting store in an aggregate oriented format for domains.
Wanted to get a discussion going on other peoples experiences on design and thoughts and opinions.
Thanks and Cheers…