如何使用 RDBMS 进行设计事件溯源?

How to use RDBMS for design event sourcing?

我想在实际项目中使用事件溯源。

我发现了以下结构:

Table Events:
    Id [uniqueidentifier] NOT NULL,
    TimeStamp [datetime] NOT NULL,
    Name [varchar](max) NOT NULL,
    Version [varchar](max) NOT NULL,
    EventSourceId [uniqueidentifier] NOT NULL,
    Sequence [bigint], 
    Data [nvarchar](max) NOT NULL

但我的问题是我不知道这个 table 是否适用于我的整个项目,还是我必须为每个域聚合创建一个事件 table?

But my problem is I don't know if this table is for my whole project or do I have to create an event table for each domain aggregation?

Message DB 的人员建议对所有消息使用单个 table。

请注意,这是在 Postgres 中;他们没有对您应该如何在其他关系数据模型中实现事件存储做出任何声明。消息数据库设计利用了 Postgres 中可能不通用的锁定功能。

我鼓励您找到像 message-db 这样的“开箱即用”商店,而不是尝试自己动手。但是如果你找不到 suitable 的东西,那么看看 message db 的设计和 Jon Oliver 的 CQRS event store 笔记,可能会帮助你避免一些更常见的错误。