I’m using EventStore in the typical fashion as an… event store. I have aggregates, which are stored as event streams, and all my events have CorrelationId (as well as a CausationId), which initially always comes from a command that came into the system somewhere. I was thinking, since all the events are written to eventstore, it would be good to write all commands as well, and use the projections feature to build a pretty effective auditing log that shows the commands that led to a chain of events.
Question is, what might be the most appropriate way to organise the streams for commands? I wondered about a few options:
- Single stream with all commands written to it.
- Stream-per-aggregate (which obviously parallels the event storage, and means streams don’t get massive).
- Stream-per-period (monthly? annually?).
Does anyone have any advice?