CouchDB文档版本控制的最佳实践

Jac*_*ter 8 revision couchdb version

在我的问题之后,我正在探讨在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)

Rob*_*son 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"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

显然这会使事情变得混乱,这就是为什么将文档的完整旧版本推送到附件中通常更简单.这种模式很常见,CouchDB附带了一个库jquery.couch.js,它实现了它(在saveDoc(doc)函数中).