In preparation of a future application design, I've started some investigations on CQRS-style applications and especially Ncqrs.
While most concepts are quite clear, I'm a bit confused by the concept of a snapshot.
I can see why rebuilding an object from its events can be highly resource-consuming, but as the denormalizer will build the read model with the latest state of the entity (or actually the latest values required for a view), why bother with the concept of rebuilding the object from snapshots?
Am I right to think such scenarios occur only sporadically and on-demand, mostly after upgrading a version or debugging?
If not, what would be good situations for taking a snapshot?