В настоящее время я пытаюсь понять, как построить внутреннюю структуру хранилища событий. Что я получил до сих пор:
- В хранилище событий есть две таблицы (коллекции,...), одна для агрегатов и одна для событий.
- Таблица агрегатов содержит следующие данные:
aggregateId
(вероятно, это GUID) иaggregateVersion
(который представляет собой целое число, которое просто представляет номер последнего события, повлиявшего на этот агрегат). - Таблица событий содержит следующие данные:
eventId
(опять же GUID),aggregateId
(к которому относится событие),payload
и aversion
(который является просто целым числом, которое описывает порядок событий).
Насколько это правильно? Должны ли события упорядочиваться с использованием целого числа? Или они должны быть заказаны на основе временной метки? В чем преимущества каждого из них? Каковы недостатки?