Преимущества снимков Ncqrs?
При подготовке будущего проекта приложения я начал некоторые исследования приложений в стиле CQRS и особенно Ncqrs.
Хотя большинство концепций достаточно ясны, меня немного смущает концепция моментального снимка.
Я понимаю, почему восстановление объекта по его событиям может потреблять много ресурсов, но, поскольку денормализатор будет строить модель чтения с последним состоянием объекта (или фактически с последними значениями, необходимыми для представления), зачем беспокоиться о концепции? восстановить объект из снимков?
Правильно ли я считаю, что такие сценарии возникают только время от времени и по требованию, в основном после обновления версии или отладки?
Если нет, то какие будут хорошие ситуации для создания снимка?
2 ответа
Я должен признать, что я не большой пользователь источников событий (или, по крайней мере, я не использую его в полной мере), но моментальные снимки помогают с производительностью вашей системы при перестройке агрегата. Вместо того, чтобы перестраивать все события со времени 0, вам нужно только перестроить обратно к последнему снимку. Так что, если в вашей системе большое количество событий и перестройка источника событий для вашей совокупности начинает влиять на производительность вашей командной стороны, вы можете рассмотреть возможность использования снимков.
Проверьте заметки из класса Грега Янга DDD/CQRS, который он преподавал в прошлом году или около того; это может дать вам некоторые идеи относительно того, откуда он идет, относительно снимков.
Надеюсь это поможет. Удачи!
Моментальные снимки полезны, когда в ваших общих корнях большое количество событий (возможно, более 1000). Но следует учитывать, что в большинстве сценариев ваша совокупность недолговечна и поэтому имеет небольшое количество событий; в этом случае снимки можно рассматривать как раннюю оптимизацию; что не обязательно хорошая вещь.