CouchDB文档版本控制的最佳实践
在我的问题之后,我正在展示CouchDB中文档版本控制的通用方法。虽然我认为可能没有规范的方法,但我有以下想法,正在寻求反馈 我希望尽可能维护可读的文档ID,因此CouchDB文档版本控制的最佳实践,couchdb,version,revision,Couchdb,Version,Revision,在我的问题之后,我正在展示CouchDB中文档版本控制的通用方法。虽然我认为可能没有规范的方法,但我有以下想法,正在寻求反馈 我希望尽可能维护可读的文档ID,因此document1中存在的文档将包含指向系统上所有现有版本的指针。实际的修订版文档将位于类似document1/308ef032a3801a的位置 308ef032a3801a是一些随机数或散列 例子 指针文档 { "_id" : "document1", "versions" : [ "document1/308ef0
document1
中存在的文档将包含指向系统上所有现有版本的指针。实际的修订版文档将位于类似document1/308ef032a3801a的位置
308ef032a3801a
是一些随机数或散列
例子
指针文档
{
"_id" : "document1",
"versions" : [ "document1/308ef032a3801a" ]
}
版本文档
{
"_id" : "document1/308ef032a3801a",
... actual content
}
以下是关于文档版本控制方法的一些讨论: 一种建议的方法是将旧版本作为附件粘贴到当前文档中。
正如文档中提到的,它简单、可扩展且可复制。jquery couchdb库中有这样一个插件,它很好。更典型的做法是将文档的旧版本保存在当前版本中(作为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.coach.js
(在saveDoc(doc)
函数中)。FYI在_id中使用“/”可能会导致一些问题:。哇,这是无意的;编辑以澄清问题对于一个可能包含许多KB文本的大型文档,此方法是否会导致不必要的开销?考虑到100个版本,每个版本的大小为1KB,压缩前的总大小是多少?我建议使用附件方法,我提到JSON方法,因为它更容易显示示例。仅供参考web archive链接: