Designing our read model implementation
Now that we have a high-level idea of CQRS, let's set about designing how to use this pattern to support the query needs for our bookstore app. If you remember correctly, in Chapter 4, Making History with Event Sourcing, we had to remove the comment out of the code that we had previously working to handle multientity queries within our app. We have events for all of our entities stored in Cassandra, via Akka Persistence, currently. Unfortunately, the way this data is stored (binary via protobuf) and the nature of the data itself (events versus actual current state) makes it next to impossible to write queries against it. This means that we can't currently handle things such as looking up books by authors or sales orders by users. In order to get this functionality back, we will have to build read models for our entities.
Selecting our read model data store
Our first order of business in designing our read-model implementation is selecting a good storage...