【发布时间】:2013-12-03 07:26:46
【问题描述】:
我正在尝试使用 mongoid 和 mongoid-history gems 对 MongoDB 中的文档进行版本控制。不幸的是,我遇到了性能问题。
当我获取文档集合并且我想获取每个条目的特定版本时,每次调用方法:entry.history_tracks 都会导致调用 1 个数据库查询以访问历史轨迹集合。所以当我有 100 个条目的集合时,我会得到 1+100 个数据库查询。
有什么简单的方法可以解决这个问题吗?我尝试了cache 方法,但它并没有解决问题,因为每个查询都是不同的。
【问题讨论】:
-
您的文档是什么样的?
-
假设它是一个简单的文档,包含 2 个字符串字段:标题和内容。我想跟踪它的创建、更新和删除。
-
我不知道 mongoid-history 是如何工作的,但是为什么它不将文档的历史嵌入到条目本身中呢?或者可能创建一个不同的模型,例如 EntryHistory,它包含对象的整个历史,而不是单独存储它们。
-
如果您打开 mongoid-history 问题列表,您会发现在文档中存储整个历史记录与他们的假设不一致:github.com/aq1018/mongoid-history/issues/60 在一个文档中存储整个集合的历史记录可能会导致可伸缩性问题。
标签: ruby-on-rails mongodb mongoid