在我的问题之后,我正在探讨在CouchDB中文档版本控制的通用方法的想法.虽然我想可能没有规范方法,但我有以下想法并且正在寻找反馈.
我希望尽可能保持可读的文档ID,因此存在的文档document1将包含指向系统上所有现有版本的指针文档.实际的修订文件,将在像document1/308ef032a3801a这里
308ef032a3801a是一些随机数或哈希值.
指针文件
{
"_id" : "document1",
"versions" : [ "document1/308ef032a3801a" ]
}
Run Code Online (Sandbox Code Playgroud)
版本文件
{
"_id" : "document1/308ef032a3801a",
... actual content
}
Run Code Online (Sandbox Code Playgroud) 这是其中之一"我知道我不应该这样做,但它非常方便." 的问题.对于那个很抱歉.
我计划使用CouchDB存储一堆文档并保留其整个修订历史记录.CouchDB会自动进行版本控制,但强烈建议程序员不要使用它:
"除了并发控制之外,你不能将文档修订用于任何其他目的."
根据我在CouchDB wiki上发现的内容,可以在压缩期间或复制期间删除版本.据我所知,压缩必须始终手动触发,只有当有多个数据库服务器时才会发生复制.
问题是:如果我不运行压缩并且只对我的文档使用单个数据库实例,我可以使用CouchDB的文档版本并期望它能够工作吗?
我可能会遇到哪些其他问题?例如,不运行压缩会损害性能或消耗更多的磁盘空间(比如果我手动处理版本控制)?
我在基于Mongoid的类中包含了Mongoid :: Versioning模块.检查以前的"版本"或文档化身的最佳方法是什么?我希望能够看到它的历史.这可以是通过rails console或MongoDB shell.查看文档历史记录的最简单方法是什么?