7 sql-server database-design domain-driven-design foreign-keys event-sourcing
我们使用SQL Server 2016的事件采购.我们有总的客户产品应用程序,每个都标有CustomerId并在事件存储中获得一个指南行项目.这是写事件存储guid的主要标识符.产品应用程序带有许多不同的关系事物(没有guid但是自然键)每个客户都有多个地址,帐户,多个采购订单.写事件存储将以我们选择的任何方式映射到关系数据库表.在数据库中,我们尝试通过代理键而不是自然键来关联连接.
代理键可以是Guids,还是我们可以使用Integers(也许是Identity)来加快连接速度?
请记住,Write Event存储中唯一的主要标识符是来自Customer ID应用程序的Guid(我们想要建模的带有一堆表列属性的大json blob),但是在读取模型中可以随时更改的子关系表没有写事件商店中的孩子Guid.
是的,您可以在特定read model实现中使用您需要的任何内容,但您需要考虑到 aread model应该随时可重建。因此,当read model重新构建 a 时,它可能会使用其他代理 ID,或者您只需以每次获得相同 ID 的方式实现它(我指的是该Autoincrement功能)。
PS 你为什么不尝试对你的数据进行非规范化呢?通常event sourcing避免使用 join 而不是使它们在read model.