关注我的问题here我正在探讨CouchDB中文档版本控制的通用方法的想法。虽然我想可能没有规范的方法,但我有以下想法,我正在寻找反馈。
我希望尽可能地维护可读文档ID,因此document1
中存在的文档将包含一个指针文档到所有现有版本系统。实际的修订文档将类似于document1/308ef032a3801a
308ef032a3801a
是一些随机数或哈希值。
指针文件
{
"_id" : "document1",
"versions" : [ "document1/308ef032a3801a" ]
}
版本文件
{
"_id" : "document1/308ef032a3801a",
... actual content
}
答案 0 :(得分:5)
将文档的旧版本保留在当前版本中更为常见(作为JSON或通常作为附件)。对于JSON案例;
{
"_id":"foo",
"_rev":"3-fsfsfsdf",
"foo":"current value of foo",
"history": {
"2": {
"foo":"previous version of foo"
},
"1": {
"foo":"initial version of foo"
}
}
}
显然这会使事情变得混乱,这就是为什么将文档的完整旧版本推送到附件中通常更简单。这种模式很常见,以至于CouchDB附带了一个库jquery.couch.js
,它实现了它(在saveDoc(doc)
函数中)。
答案 1 :(得分:2)
以下是关于文档版本控制方法的一些讨论:
建议的方法是将旧版本作为当前文档的附件。 正如文档所提到的,它是简单,可扩展和复制的。 jquery couchdb库已经烘焙了很好。