代码之家  ›  专栏  ›  技术社区  ›  w0051977

什么是聚合函数?

  •  1
  • w0051977  · 技术社区  · 6 年前

    我在业余时间尝试学习活动采购(使用Greg Youngs活动商店)。我已经设置了一个简单的流,我可以从中读取并写入它。

    请查看此链接: https://eventstore.org/docs/getting-started/?tabs=tabid-1%2ctabid dotnet client%2ctabid dotnet client connect%2ctabid-4 。它说:

    “如果是事件源域模型,则流等同于聚合函数。”“

    我不相信我以前遇到过聚合函数这个词——我知道聚合根和聚合,但不知道聚合函数。假设我有以下事件:

    bookingCreatedEvent
    预订更新事件
    < /代码> 
    
    

    如果我要在SQL Server中创建一个事件日志,那么它可能看起来像这样(cargo列包含序列化对象):。

    我会在事件存储中为此设置什么事件流?我在这里读到一个用户的回答,他似乎非常了解事件源,他建议如下:

    aggregateType+aggregateID+版本
    < /代码> 
    
    

    在此基础上,相信这些事件的名称如下:

    bookingCreatedEvent511(51是聚合ID,1是版本)
    BookingUpdatedEvent511(51是聚合ID,1是版本)
    BookingUpdatedEvent512(51是聚合ID,2是版本)
    BookingCreatedEvent521(52是聚合ID,1是版本)
    BookingUpdatedEvent513(51是聚合ID,3是版本)
    BookingCreatedEvent531(53是聚合ID,1是版本)
    BookingUpdatedEvent514(51是聚合ID,4是版本)
    BookingUpdatedEvent515(51是聚合ID,5是版本)
    BookingUpdatedEvent516(51是聚合ID,6是版本)
    BookingUpdatedEvent517(51是聚合ID,7是版本)
    < /代码> 
    
    

    因此,有10个事件流。这看起来有点混乱,即连接聚合ID和版本-例如,假设我有以下内容:

    bookingUpdatedEvent51745
    < /代码> 
    
    

    我如何知道51745的哪个部分是聚合ID,哪个部分是版本。

    我理解正确吗?

    请查看此链接:https://eventstore.org/docs/getting-started/?tabs=tabid-1%2Ctabid-dotnet-client%2Ctabid-dotnet-client-connect%2Ctabid-4. 它说:

    如果是事件源域模型,则流等同于聚合函数。

    我不相信我以前遇到过聚合函数这个词——我知道聚合根和聚合,但不知道聚合函数。假设我有以下事件:

    BookingCreatedEvent
    BookingUpdatedEvent
    

    如果我要在SQL Server中创建一个事件日志,那么它可能如下所示(cargo列包含序列化对象):

    enter image description here

    我会在事件存储中为此设置哪些事件流?我在阅读一位用户的回答,他似乎非常了解事件源,他建议如下:

    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个事件流。这看起来有点混乱,即连接聚合ID和版本-例如,假设我有以下内容:

      BookingUpdatedEvent51745
    

    我如何知道51745的哪个部分是聚合ID,哪个部分是版本。

    我理解正确吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   VoiceOfUnreason    6 年前

    如果是事件源域模型,则流等同于聚合函数

    我找不到任何有意义的证据。

    丹·利奇于2014年提交的该部分文件的原文使用了这种拼写。

    如果您是事件源域模型,那么流将等同于聚合。

    克里斯做出改变的承诺是 available in github 但是它与一个主要的重写混合在一起,所以没有文档化的解释来解释这个变化。

    假设我有一个订单总数(包含订单项),其中有100万个,那么我将有100万个流,而不是1个

    基本上,是的。

    更准确地说,每个流在逻辑上都与所有其他流隔离开来;事件存储并没有为您提供一次对多个流进行原子更改的功能。

    因此,域模型中的每个立即一致的事务应该只写入一个事件流。