Have a general question on CQRS -
Posted on Stackoverflow: http://stackoverflow.com/q/16601758/59561 if you’d rather discuss there.
Synchronizing Query-side Data in CQRS - won’t there still be contention?
I have a general question about the CQRS paradigm in general.
I understand that a CommandBus and EventBus will decouple the domain model from our Query-side datastore, the merits of eventual consistency, and being able to denormalize the storage on the Query side to optimize reads, etc. That all sounds great.
But I wonder as I begin to expand the number of the components on the Query side responsible for updating the Query datastore, if they wouldn’t start to contend with one another to perform their updates?
In other words, if we tried to use a pub/sub model for the EventBus, and there were a lot of different subscribers for a particular event type, couldn’t they start to contend with one another over updating various bits of denormalized data? Wouldn’t this put us in the same boat as we were before CQRS?
As I’ve heard it explained, it sounds like CQRS is supposed to do away with this contention all together, but is this just an ideal, and in reality we’re only really minimizing it? I feel like I could be missing something here, but can’t put my finger on it.