【发布时间】:2010-12-06 23:37:04
【问题描述】:
我们正在开发让用户订阅特定事件组的 Web 应用程序。 例如:用户在 blob 中创建评论,所有订阅此博客的用户都应在其列表中包含此事件。
目前,我们正在寻找存储这些数据的数据模型。
从可用性的角度来看,将所有事件存储在一个表中似乎是个好主意:
- 对象(在示例中:注释参考)
- 可订阅对象(示例中:博客参考)
- 引发事件的用户
- 事件类型(如:更新、创建等)
特定用户的订阅事件可以通过 sql 查询收集,该查询将按用户订阅过滤事件。
此数据模型中的问题是可订阅对象可能具有“继承”。例如:用户可能订阅了博客或博客中的特定帖子。 这意味着博客订阅扩展了帖子订阅,并且此数据模型不反映此行为。在这种情况下,我将不得不产生 2 个事件:一个用于博客,一个用于发布。
将所有事件放在一个表中或将它们拆分到不同的表中是个好主意吗?无论如何,事件表将包含大量数据。组织事件日志记录有更好的主意吗?
【问题讨论】:
标签: database-design events datamodel