我们需要跟踪跟踪的某些数据库字段历史记录并报告时间,即假设有一个帐户表,其中包含字段状态(活动/非活动)。
帐户状态可能会变为“活动”状态,反之亦然,反之亦然。
我们需要在帐户级别进行报告,以查看帐户在一段时间内保持多长时间,即一个月
我们正在讨论数据库表中的几个选项来跟踪数据,
[时间戳] [字段] [旧值] [新值] - 更通用但很难生成没有数据转换的报告。
[时间戳] [状态] [非活动开始时间] [非活动结束时间] - 无需任何数据转换即可轻松生成报告。
答案 0 :(得分:0)
选项1看起来更像审计。选项2看起来更像报告。我指出你的方向 - 你更喜欢哪一个?
如果您选择选项1,那么您将接近域事件架构的哲学。在该理论中,您只需存储系统事件,已发生的事件以及导致它们的所有低级细节。然后计算您想要的所有结果 - 例如,可以从事件流构建不同的报告,但您必须破解数据才能达到该阶段。
如果您选择选项2,那么您就接近于CQRS架构的哲学。在那里,您保持单独的只读模式(Q表示系统的查询部分)。查询存储中的数据易于阅读,即格式化的方式易于呈现视图。
现在,您可以在系统中看到对您来说更重要的内容。您是否希望能够重建发生的事件序列(审计很重要)?如果是,则选择选项1.您是否希望能够轻松显示报告,而无需关心事情如何发生?如果是,则选择选项2.