Как говорится в вопросе, как лучше хранить команды и события ?! я должен хранить только команды, так как команды будут генерировать события?!
Хранение только «команд» работает в некоторых настройках. Например, если вы рассмотрите, что команда из LMAX делится своими проектами, вы увидите, что то, что они писали в свои журналы, было входными сообщениями .
В их контексте им не нужно было беспокоиться о том, что базовая модель домена процесса изменится (что произойдет во время ежедневного периода обслуживания, когда все было тихо), поэтому никогда не возникало никаких вопросов о том, что состояние системы будет после заданной последовательности событий.
Но обычно под event-sourcing
подразумевается сохранение представления о состоянии системы - просто вместо того, чтобы перезаписывать нашу структуру данных, мы расширяем ее (представьте себе связанный список изменений). Сохраняемые нами изменения, как правило, являются наблюдаемыми эффектами входных данных, а не только исходных данных.