我想建立一个小型活动资源库.

唯一的问题是,在这些不同的教程中,有两种不同的数据库策略,但没有任何说明为什么要使用他们使用的数据库策略.

所以,我想征求你的意见.

  1. 解决方案是 for each 事件创建一个表的db struct .

  2. 解决方案是db struct ,在该 struct 中,您只创建一个泛型表,并将事件作为序列化字符串保存到一列中.

在这两种情况下,我不确定它们如何处理事件更改,也许它们会创建一个全新的事件更改.

亲切的问候

推荐答案

我构建了自己的事件源代码库,并 Select 了选项2,原因如下.

  • 您可以按聚合id而不是事件类型查询事件流.
  • 如果这些事件都在不同的表格中,那么按顺序重现它们将是一件痛苦的事情
  • 这会让升级活动变得有点痛苦

有一种说法是,您可以在每个聚合上存储事件,但这取决于项目的要求.

我确实有一些关于如何使用事件流的帖子,你可能会觉得有用.

Database相关问答推荐

如何替换对象数组内的数组元素

使用 prisma ORM 在我的迁移中手动添加触发器

从 GCP 机密管理器中读取 .DER 值并将其保存到 .DER 文件

使用自动递增主键将 csv 导入 sqlite

在 MongoDB 中模拟关系

不同的数据库是否使用不同的名称引用?

如何从 MySQL 行中修剪前导和尾随引号?

PHP + SQL Server - 如何设置连接字符集?

在 SQL SERVER 中监视 SQL 查询的进度

为什么在 Hibernate 中不推荐hibernate.connection.autocommit = true?

在默认路径下使用脚本创建数据库?

在 SQL Server 中,如何以类似于 Oracle 的SELECT FOR UPDATE WAIT的方式锁定单行?

SQL - 如何转置?

如何在 PostgreSQL 事务中获得实时?

表格字段可以包含连字符吗?

为 django 模型自动创建数据的工具

防止 PostgreSQL 有时 Select 错误的查询计划

为什么在数据库设计中使用一对一的关系?

遍历数据库中的每条记录 - Ruby on Rails / ActiveRecord

如何知道mongodb使用的是哪个存储引擎?