Проекции и воспроизведение
Проекция преобразует записанные события в модель чтения. Воспроизведение пересобирает производные данные, а не выполняет исходные команды заново.
Проекция и модель чтения
Проекция содержит правила преобразования событий. Модель чтения содержит полученные данные, используемые запросами.
Изменение логики проекции может потребовать новой сборки модели чтения. Пересборка не исправляет недопустимые события домена, созданные ошибочным обработчиком команды.
Воспроизведение и контрольные точки
Пересобирайте модель из нужной истории событий либо из корректного сохранённого состояния и соответствующей ему позиции.
Если удалить модель чтения, но оставить завершённую контрольную точку, потребитель не восстановит недостающие данные автоматически. Явно сбросьте позицию или используйте отдельный процесс пересборки.
Согласованность в конечном счёте
Асинхронная модель чтения может отставать от записанных событий. Согласованность в конечном счёте не обещает фиксированную или всегда короткую задержку.
При необходимости показывайте состояние обработки, отслеживайте отставание и определяйте, как интерфейс подтверждает запись до обновления модели чтения.
Надёжная обработка
Согласованно сохраняйте изменения модели чтения и позицию обработки. По возможности фиксируйте их в одной транзакции либо предусмотрите явный способ восстановления.
Обрабатывайте дубликаты и отделяйте внешние побочные эффекты от пересборки. Фиксируйте версии проекций и проверяйте процедуры восстановления.
Практическое упражнение
Пересоберите модель чтения в отдельное хранилище, сравните результаты и измерьте время воспроизведения. Проверьте сбой между изменением данных и сохранением позиции.
Путь обучения Event Sourcing · Назад · Далее · Документация Chronacta
