2

Гипотетически я работаю над системой, использующей «Event Sourcing» (хранение бизнес-событий), которая имеет покупку и продажу материалов; в какой-то момент создается отчет с информацией о ценах и расходах.Повторные события для корректировок

Представьте, что один из моих клиентов позвонил мне и сказал: «Затраты неправы, для меня правила от прибыли таковы».

Я мог бы добавить больше обработчиков или изменить правила, чтобы приспособиться к этому конкретному случаю, и воспроизвести события.

Но мой вопрос в том, что это правильный подход (или, по крайней мере, лучший)?

+0

К сожалению, если it'is неконструктивный вопрос, я новичок в DDD/CQRS и ES, и для меня это реальный прецедент. –

ответ

1

В случае с системой источников события неизменны - простые факты того, что произошло. Переписывание истории событий - вещь, которую просто не делают [1].

Изменение логики расчета, которая выводит результат, основанный на этих событиях, абсолютно нормальная вещь (это одна из ключевых вещей, которую позволяет даже поиск источников).

Если вы действительно изменяете свой код или предоставляете альтернативный алгоритм вместе, это вопрос выбора - если оригинал был фактически ошибкой (звучит как ваш случай), измените код. Если нет, напишите новый.

В некоторых случаях (обычно не рекомендуется), каждый всегда работает с оригинальными событиями; если это так, все, что вам нужно сделать, это изменить логику деривации, и все готово.

В случае, когда вы проектируемого события и denormalised в постоянное хранилище, и решили, что ситуация представляет собой ошибку, нормальный подход заключается в следующем:

  1. сдуть существующие denormalised государству
  2. повтор событий для получения предполагаемого версии альтернативного диф ференцирование

Обратите внимание, что это приходит только в игру, если вам имеют неэфемерное денормализованное государственное хранилище, которое сохраняет значения, рассчитанные на основе теперь заменяемой. (Совершенно верно проецировать денормализованное состояние в тайник в памяти, в таком случае «выдувание» проще).

Другой сценарий - это то, где вы реализовали оптимизацию моментальных снимков - в этом случае можно было бы повторно спроектировать денормализацию по-разному.

[1] Да, есть экзотические случаи, когда это может быть оправдано, но это +0,001% случай А

+1

Изменение логики расчета, которая выводит результат, основанный на этих событиях, абсолютно нормальная вещь (это одна из ключевых вещей, которая позволяет использовать только источники). Это Он, спасибо –

Смежные вопросы