python – 允许用户使用SQLAlchemy从db审计跟踪回滚

我开始将SQLAlchemy用于一个新项目,我计划在这个项目中实现类似于此静默提议的审计跟踪:

> Implementing Audit Trail for Objects in C#?
> Audit trails and implementing SOX/HIPAA/etc, best practices for sensitive data
> Ideas on database design for capturing audit trails
> What is the best implementation for DB Audit Trail?
> Is this the best approach to creating an audit trail?
> Good strategy for leaving an audit trail/change history for DB applications?
> Data Auditing in NHibernate and SqlServer.
> Ideas on database design for capturing audit trails

因为我已经拥有了“有趣”对象的完整历史,所以我在考虑允许用户回滚到给定版本,让他们可以无限制地撤消.

这可以用SQLAlchemy以干净的方式完成吗?

在内部API(业务逻辑和ORM)中公开此功能的正确方法是什么?

我是user.rollback(ver = 42)的方式.

解决方法:

虽然我没有专门使用SQLAlchemy,但我可以给你一些可以在任何ORM中轻松实现的一般提示:

>将版本化项目分成两个表格,例如Document和DocumentVersion.文档存储的版本之间永远不会更改的信息,DocumentVersion存储确实发生更改的信息.
>为每个DocumentVersion指定一个“父”参考.为同一个表创建一个外键,指向该文档的先前版本.
>通过将文档中的引用更新为“当前”版本,回滚到以前的版本.不要删除链底部的版本.
>当它们在回滚后制作更新的版本时,它将创建另一个版本的分支.

例如,创建A,B,C,回滚到B,创建D,E:

(A)
 |
(B)
 | \
(C) (D)
     |
    (E)
上一篇:MySQL审计特性调研


下一篇:牛客在线编程练习:SQL46_中等