Продвинутый
Что такое Snapshot (Снимок) в паттерне Event Sourcing и зачем он нужен?
В Event Sourcing текущее состояние сущности вычисляется путем последовательного применения всех исторических событий (например, 10 000 транзакций по банковскому счету за 5 лет).
Проблема: Читать и "проигрывать" 10 000 событий при каждом запросе баланса — слишком медленно.
Решение (Snapshot):
Система периодически (например, каждые 100 событий) делает Снимок текущего состояния и сохраняет его.
Теперь, чтобы получить баланс, системе нужно загрузить последний Snapshot (состояние на 100-м событии) и применить к нему только новые события (со 101-го по текущее). Это кардинально ускоряет чтение.