我们有一个构建在 SQL 数据库之上的 Web 应用程序。几种不同类型的对象可以添加注释,其中一些对象需要字段级跟踪,类似于在大多数问题跟踪系统上跟踪字段更改的方式(例如状态、分配、优先级)。我们想显示更改是谁,之前的值是什么,以及新的值是什么。
在纯设计级别,跟踪通用表中任何对象的每个更改是最直接的,其中列对象类型、对象主键、进行更改的用户的主键、字段名称和旧值和新值。在我们的例子中,如果用户在进行更改时输入了评论,这些也可以有一个评论 ID。
然而,随着这些数据的增长速度有多快,这是最好的架构吗?通常采用哪些方法将此类功能添加到已经大规模的应用程序中?
[编辑]我开始对这个问题进行赏金主要是因为我想特别找出在处理规模方面最好的架构是什么。Tom H. 的回答提供了丰富的信息,但推荐的解决方案似乎相当低效(对象的每个新状态都有一个新行,即使许多列没有改变)并且鉴于我们必须是还能够跟踪对用户创建的字段的更改。特别是,我可能会接受一个可以解释常见问题跟踪系统(JIRA 或类似系统)如何实现这一点的答案。