title: CQRS: write to RDBMS, read from NoSQL?
body: <p>I've been thinking on separation the read and write flows and even make them use different databases to provide best fast data availability by horizontally scaling the "read" databases. I'm gonna make my project write into a database, push objects change notifications into a queue so another service read messages and copies updated data to one or more denormalized "read" databases. Thinking on this I've found that this would be bad if the "write" database is denormalized too.<br>
  Example: say there is a user profile with a name of university user has graduated. Say I store this information in the "write" database like this:  </p>
  
  <pre><code>{ userId: 100, name: "John", universityId: 200, universityName: "Cambridge"}
  </code></pre>
  
  <p>Say user opened his profile for editing and while he was doing it another person, the Cambridge representative, has changed name from "Cambridge" to "C.U." and saved changes so they gone to both "write" and "read" databases. Service which updated university name finished its work and "thinks" now university is OK everywhere. After this moment the first user saves updated profile with old university name and this name will go to every place his profile presents.<br>
  This kind of issues make me think that "write" database <strong>must</strong> always be normalized, not contain duplicates. But I never met this principle from what is written about the CQRS. Am I thinking wrong?</p>