首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一种不需要复杂存贮的可审计系统的设计

一种不需要复杂存贮的可审计系统的设计
EN

Stack Overflow用户
提问于 2019-09-27 10:13:55
回答 1查看 44关注 0票数 0

我们目前正试图为我们的系统设计一个简单的模块,以使其可审计,但我们不确定最佳的策略是什么。我们希望尽可能早地修复它,因为在应用程序运行后,将所有数据迁移到不同的策略可能会成为一种标记。

策略1-我们目前的选择

我们目前正在试验的系统包括每次更新时创建一个新记录,在查询时,只需获得具有最新created_on时间戳的记录即可。如果我们有父子关系,而孩子要被更新,我们只会更新孩子,而不是父母。在查询这些信息时,我们会对每个受抚养人关系使用相同的策略。

策略2-不太喜欢它

我们考虑过的另一种策略是在每个表中有两个列,一个valid_from和一个valid_to时间戳。每次更新记录时,我们都会将valid_to填充到先前有效的记录,并将当前的记录保留一个空值。我们将遵循与前一种情况类似的抓取策略。

最后,我想强调,我们不坚持策略1的主要原因是,为了保存数据,要求我们经历一个相当复杂的差异过程,而我们不喜欢。每次前端使用新的有效负载调用我们的API时,我们都会获取最新的聚合(父级+子代+孙辈等),做一个完全不同的操作,并确定要更新什么。

所以我想问你们的问题是,你们有没有使用过其他你引以为豪的审计策略,并愿意分享?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-27 15:22:03

我建议你考虑下一种方法,除此之外,你已经有:

审计结构

对于每个要审计的表,创建另一个用于审计记录的表,其中包含要审计的字段加上字段revision (以及您想要的其他字段)。例如,如果您有表"Order",则创建"Order_aud“。

Revision字段应该是递增计数器,它会使您的审核记录有序。此外,如果希望能够识别保存在同一事务中的一组对象,则可以使其对每个事务都是唯一的。

更新数据

每次更新可审计表中的记录时,只需使用相同的数据在相应的审计表中创建新记录即可。

取取数据

一切都将与现在一样,因为您根本不更改原始表。

冬眠寄主中使用了非常类似的方法。它将允许您独立于实际数据处理您的审计,您可以删除它,您可以对它进行分区,您可以对它进行切分,您可以将它存档,并且可以很容易地禁用它,使您的应用程序像以前一样工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58132491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档