我正在寻找一个合适的流程来保存数据库中的行(及其关系)的修订或快照。
以电子商务平台为例 -
我看过几个概念,一个是重复的表,另一个是临时数据库,另一个是保留修订版ID和活动标记。
虽然我很感激没有人能真正告诉我最适合我应用的解决方案,因为这是一个容易接触的问题,我希望有人可能通过比较来证明优势/劣势。我已经阅读了很多关于SO的问题,以及关于各种实现的一些文章,但没有一个真正比较每个想法或指出它们最适合的地方。下面我概述了我对每个概念的理解。
将信息存储在与需要快照的数据相关的行中。即将地址保留在在线商店的订单表中的列中。
“时间感知”的数据库行,即它们的上下文是两个日期时间之间的时间。数据可以在时间上下文位于时间表之间的地方加入。
有一个表格,可以跟踪所有表格的变化,并记下与之相关的行以及它在时间方面的有效性。
我已经在SO和其他资源上查看了以下问题
编辑:我没有用特定的DBMS标记这篇文章的原因,因为我希望这个概念尽可能多地与平台一起工作,目前是DBMS独立的,抽象层允许它工作使用MySQL和MSSQL,但希望将来能够支持其他人。
答案 0 :(得分:1)
我最终使用了一个时态数据库,而这个实现导致了Temporal Model中的FuelPHP。
我现在可以配置我的模型将行视为时间敏感实体。更改会导致创建新行并相应地设置原始行的结束时间。
这允许我在某个时间点检索一行。
答案 1 :(得分:0)
还有另一个选项(至少在Oracle上)你可以设置时间点并运行你喜欢的任何查询。
我相信它可以使用大量的闪存恢复空间,但是如果你只想跟踪一些表,这可能会有点过分。