MongoDB实现保存对象更改历史的数据库结构
在使用MongoDB保存对象更改历史时,通常会遇到"版本控制"或"文档版本控制"的问题。常见的方法有四种:
- 每次写入时,在同一集合中存储一个完整的文档,并使用某种方案确定哪个版本是"当前版本"
- 每次写入时,在一个集合中存储一个完整的文档,将"当前版本"存储在一个集合中,将旧版本存储在另一个集合中
- 在单个文档中存储所有文档版本
- 仅为每个版本存储增量(更改)
每种方法都有自己的优点和权衡之处。以下是一些进一步探讨这些方法的好资源:
我不知道有哪些流行的Java框架可以处理这个问题,这可能也取决于您是否使用ODM(例如Spring Data MongoDB或Morphia)。Mongooose(Node.js)确实有文档版本控制。
原因:在使用MongoDB保存对象更改历史时,需要解决版本控制的问题,即如何有效地保存和管理每个版本的对象。
解决方法:常见的解决方法包括将每个版本的完整文档存储在同一集合中,并使用某种方案确定当前版本;将每个版本的完整文档存储在一个集合中,并将当前版本存储在另一个集合中;将所有文档版本存储在单个文档中;仅为每个版本存储增量(更改)。每种方法都有自己的优点和权衡之处,可以根据具体需求选择合适的方法。
相关资源提供了进一步探索这些方法的详细信息。对于Java来说,并没有流行的框架来处理这个问题,这可能与您是否使用ODM有关。而Mongooose(Node.js)则提供了文档版本控制的功能。