Skip to content

CQRS Framework

Duncan Jones edited this page Dec 9, 2016 · 5 revisions

The CQRS Framework provides the library that allows the classes created by the CQRS Designer to be hosted on an Azure Storage back end and for projections and classifiers to be run against them.

(You can think of this as providing the event sourcing equivalent of a rudimentary RDBMS does for entity-relational data)

Backing storage

There are currently 6 implementations of the backing storage for an event stream:-

  • In Memory Event Stream - The event stream exists in memory only. This is mainly used for unit testing or prototyping.
  • Local File Event Stream - The event stream exists on a local file system only. This is mainly used for unit testing, proof of concept or prototyping.
  • Azure Blob Event Stream - The event stream is an append-only blob, with one blob per instance of an aggregate. This offers spectacularly fast write performance and so is recommended for any sensor derived or trading data.
  • Azure File Event Stream - The event stream is in a file which is pre-allocated to a given size, with one file per instance of an aggregate. The event sequence is given by the file pointer at which that event is stored.
  • Azure Tables Event Stream - This is based on an Azure Tables NoSQL set-up. All the aggregate instances of any given type share the same table (which makes it a less-parallelisable solution) and dynamic types are used for the payload of each event class in the stream.
  • Azure SQL Event Stream - This is an SQL server based solution. A main table is created for each aggregate that is the event stream and detail tables are used for the additional payload for each event. All the aggregate instances of any given type share the same table (which makes it a less-parallelisable solution).
Clone this wiki locally