I know that streams can be partitioned multiple ways using projections, but I am wondering about the tradeoffs. In general, is it better to have a large stream that is split with projections, or many streams that are joined with projections? Is ordering more expensive when you join multiple streams as opposed to splitting one stream? What circumstance would lead me to use emit instead of linkTo on a projected stream? The hardware is planned to be a 3-node failover.
I’m looking at 3 general types of streams so far:
Command streams - one stream for the active command handler (shared storage to record the stream position)
Events streams - stream per aggregate, joined streams (maybe all events) for denormalizers, a few specific projected streams for integrators
System streams (things like command failed/succeeded) - one stream for notification purposes. probably projected a couple of different ways from message properties
I’ll also want to make command to event causation projections for regression testing.
Spot anything wrong or inefficient there?