MongoDB实现保存对象更改历史的数据库结构

14 浏览
0 Comments

MongoDB实现保存对象更改历史的数据库结构

我想要把一些对象和它们之间的关系保存在Mongodb中。同时,我还需要保存所有对象的历史变化记录,并能够查看过去对象的状态。

目前,我将对象的当前版本保存在相应的集合中,并使用不同的集合来保存变化记录(包括对象的ID和变化时间),通过按时间收集所有变化来获取过去对象的状态。

我感觉我正在重复造轮子,可能有更好的数据库结构或现有的框架可以更轻松地实现这个功能。有人能推荐一些吗?将非常感激,谢谢。

0
0 Comments

在使用MongoDB保存对象更改历史时,通常会遇到"版本控制"或"文档版本控制"的问题。常见的方法有四种:

  1. 每次写入时,在同一集合中存储一个完整的文档,并使用某种方案确定哪个版本是"当前版本"
  2. 每次写入时,在一个集合中存储一个完整的文档,将"当前版本"存储在一个集合中,将旧版本存储在另一个集合中
  3. 在单个文档中存储所有文档版本
  4. 仅为每个版本存储增量(更改)

每种方法都有自己的优点和权衡之处。以下是一些进一步探讨这些方法的好资源:

我不知道有哪些流行的Java框架可以处理这个问题,这可能也取决于您是否使用ODM(例如Spring Data MongoDB或Morphia)。Mongooose(Node.js)确实有文档版本控制

原因:在使用MongoDB保存对象更改历史时,需要解决版本控制的问题,即如何有效地保存和管理每个版本的对象。

解决方法:常见的解决方法包括将每个版本的完整文档存储在同一集合中,并使用某种方案确定当前版本;将每个版本的完整文档存储在一个集合中,并将当前版本存储在另一个集合中;将所有文档版本存储在单个文档中;仅为每个版本存储增量(更改)。每种方法都有自己的优点和权衡之处,可以根据具体需求选择合适的方法。

相关资源提供了进一步探索这些方法的详细信息。对于Java来说,并没有流行的框架来处理这个问题,这可能与您是否使用ODM有关。而Mongooose(Node.js)则提供了文档版本控制的功能。

0