Что такое агрегатная функция? - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь изучить Event Sourcing (используя Greg Youngs Event Store) в свободное время. Я настроил простой поток, и я могу читать из него и писать в него.

Пожалуйста, смотрите эту ссылку: https://eventstore.org/docs/getting-started/?tabs=tabid-1%2Ctabid-dotnet-client%2Ctabid-dotnet-client-connect%2Ctabid-4. Там написано:

«Если вы используете Event Sourcing для доменной модели, поток приравнивается к статистической функции.»

Не думаю, что я когда-либо сталкивался с термином «Агрегатная функция» раньше - я знаю агрегатный корень и агрегат, но не агрегатную функцию. Скажем, у меня есть события ниже:

BookingCreatedEvent
BookingUpdatedEvent

Если бы я должен был создать журнал событий на сервере SQL, он мог бы выглядеть примерно так (столбец Cargo содержит сериализованный объект):

enter image description here

Какие потоки событий у меня будут в Event Store для этого? Я читал ответ от пользователя, который, кажется, очень хорошо разбирается в Event Sourcing, и он предложил следующее:

AggregateType+AggregateId+Version

На этом основании полагают, что события будут названы следующим образом:

BookingCreatedEvent511 (51 is the aggregate ID and 1 is the version)
BookingUpdatedEvent511 (51 is the aggregate ID and 1 is the version)
BookingUpdatedEvent512 (51 is the aggregate ID and 2 is the version)
BookingCreatedEvent521 (52 is the aggregate ID and 1 is the version)
BookingUpdatedEvent513 (51 is the aggregate ID and 3 is the version)
BookingCreatedEvent531 (53 is the aggregate ID and 1 is the version)
BookingUpdatedEvent514 (51 is the aggregate ID and 4 is the version)
BookingUpdatedEvent515 (51 is the aggregate ID and 5 is the version)
BookingUpdatedEvent516 (51 is the aggregate ID and 6 is the version)
BookingUpdatedEvent517 (51 is the aggregate ID and 7 is the version)

Таким образом, существует 10 потоков событий. Это немного сбивает с толку, т. Е. Объединение совокупного идентификатора и версии - например, скажем, у меня было следующее:

  BookingUpdatedEvent51745

Как узнать, какая часть 51745 является идентификатором агрегата, а какая - версией.

Правильно ли я понял?

1 Ответ

0 голосов
/ 19 сентября 2018

Если вы используете Event Sourcing для доменной модели, поток приравнивается к статистической функции

Я не могу найти никаких доказательств, которые что-либо значат.

ОригиналВ тексте этого раздела документа, принятого Дэном Личем в 2014 году, использовалось это написание

Если вы используете Event Sourcing для модели домена, поток будет приравнен к совокупности.

Коммит, в котором Крис сделал изменение, доступен в github , но он смешан с основным переписыванием, так что нет никакого документированного объяснения изменения.

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

В основном да.

Точнее, каждыйпоток логически изолирован от всех остальных;Хранилище событий не дает вам возможности вносить элементарные изменения в более чем один поток за раз.

Таким образом, каждая немедленно согласованная транзакция в вашей доменной модели должна записывать точно в один поток событий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...