At this time the developers have decided to use a stream per event (and i mean event, not event type or anything). Which means we have as many streams as we have events. To me who is responsible for ops on the event store it feels weird and causes few issues, the biggest being snapshots. How do you do snapshot in this context ? I can’t conceptualize a way to actually do it in a way that makes sense (to me). It makes loading data from a point in time other than inception impossible. At least not from the event store only. I’d have to load the read model at the same point in time and then replay events.
Considering the application, to me streams should be related to an instance of an object and it would contain the initial state at its creation, all event that happened. To take a simple example, a user account would be a stream. The first event would contain a blank form of the account and all subsequent events would contain modifications to the initial blank object. Name update, email updates, etc… When taking a snapshot, we would take all the past event since inception (or previous snapshots), apply them to the object and save the state.
Which brings me to snapshots. When taking a snapshots via the WebUI or a command, is the event store actually able to denormalize (if i understand the usage correctly here) the object and store its state or do we need to tell it how ?
Also, can snapshoting be used in a valid manner in the current way the devs are using it ? If so, how ?