We are trying CQRS and DDD and event sourcing. Let's say I have a customer update an email address, which fires out CustomerUpdatesEmailAddress Event, this goes through to my operational (write DB) and updates the tables. Our system is designed such there is an ETL process that runs which takes operational data and updates the database (this is a read database).Given that the ETL can do some heavy lifting based on email address being changed (Email address is just an example), how do we sync up reporting database (DataMart and the operational side) as the user wants to see the email address update immediately in the screen?
+3
A:
In this podcast (slide 47 for example) Udi Dahan states that the client doesn't have to wait for the read site to get updated. The client can "fake" it. So for example, if a user changes his or hers email-address, the client can take the new address from the command it sent and show it to the user before the command has actually been processed.
Mikael Koskinen
2010-08-08 07:21:35
+1 for this answer. It is more important to ask the question "Why does the user needs to see the email address updated immediately?". If it's for user feedback, then Mikael's answer should buy you enough time to run the ETL process.
stung
2010-08-19 17:26:25