我曾与许多现成的系统合作过,一般来说,在数据库级别及以上,它们都有像CreatedBy/On、ModifiedBy/On等元数据,用于记录/实体,以便至少在一定程度上了解谁做了什么和什么时候做了什么。
显然,虽然这些字段相当浅,但您永远不知道谁做了第二次到最后一次编辑,但这些字段可能相当有用。
如果您正在从头构建一个需要某种级别审计的系统,无论是基本创建/修改的字段,还是跟踪与记录的每一个交互,还是一个完整的审计跟踪,它不仅跟踪谁做了什么,而且跟踪了以前的字段,并且after...is那里有一个标准的、可接受的方法来执行这些操作?
我遇到的问题之一,尤其是创建/修改字段时,您的对象模型不应该真正知道或关心应用程序级别上发生了什么,因此试图将这些关注点分开会带来挑战。
所以我想我是在问,这是个解决问题了吗?因为谷歌我似乎找不到一个标准的,普遍接受的方式来做它。
发布于 2019-01-31 15:03:22
实现这一目标的方法有很多种,因此,希望这个问题能够解决,因为这是一个很大的领域。但是,我在过去使用过/遇到过的几个例子:
作为数据库更新的一部分,可以将以前的数据库保存在镜像表中,以便在数据库使用时可以继续更新。当切换发生时,镜像表被复制到虚拟表中,活动表复制到镜像表,虚拟表复制到虚拟表中。
显然,这只会告诉您在更新之间发生了什么,但是这个工具是存在的,并且可能很有用。
对于感兴趣的表,历史表与数据的前后图片以及用户和日期时间一起保存。这些表可能会变得非常大,因此只有关键表才会被包括在内。
有时,将所有数据更改保存在存储库中,并且只保存高性能集市中的最新信息,这是一种权宜之计。既然一切都被保留着,空间就会成为一个问题。
Oracle数据库支持闪回技术,它可以在某个时间点告诉您数据库的状态。通过前后遍历,您可以准确地看到何时进行了更改,以及由谁(前提是您正确地设计了数据库)。
https://softwareengineering.stackexchange.com/questions/386413
复制相似问题