将CouchDB复制到本地沙发可以减小尺寸 - 为什么?

Jes*_*sse 2 replication couchdb

我最近开始使用Couch作为我正在开发的大型应用程序.

我有7907文件的数据库,并想重命名数据库.我捅了一下,但无法弄清楚如何重命名它,所以我想我会把它复制到我想要的名字的本地数据库.

我第一次尝试复制失败,我相信错误是超时.我再试一次,它工作得很快,这有点令人不安.

复制后,我显示新数据库具有正确的记录数量,但数据库大小约为原始数据的1/3.

另外有点奇怪的是,如果我刷新蒲团,原件的尺寸在94.6和95.5 mb之间波动

这给我留下了一些问题:

  1. 第二个数据库是否存储了对第一个的引用?如果是这样,我可以删除第一个而不造成伤害吗?

  2. 为什么尺寸会如此不同?原来建成的索引最终将是新的吗?

  3. 为什么尺寸波动?

编辑:

一些可能有用的事情:

  • 这是在cloudant couchdb安装上
  • 我检查了新数据库的第一个和最后一个记录,它们匹配,所以我不相信被褥不足.

Jas*_*ith 7

复制到新数据库与压缩类似.两者都涉及某些副作用(分别是偶然的和有意的),这些副作用会减小新.couch文件的大小.

  • b树索引得到平衡
  • 旧文档修订版中的数据将被丢弃.
  • 先前对DB的更新的元数据将被丢弃.

复制存储到检查点/从检查点存储,因此如果您从同一个源重新复制到同一位置(即重新运行超时的复制),它将从中断处继续.

回答:

  1. 复制不会创建对另一个数据库的引用.您可以删除第一个而不会造成伤害.
  2. 复制(和压缩)通常会减少磁盘使用量.如果您在任何设计文档中有任何视图,那么当您第一次查询它们时,这些视图将重新构建.查看索引使用自己的.view文件,这也占用空间.
  3. 我不确定为什么尺寸会波动.浏览器和代理缓存是CouchDB(和Web)开发的祸根.但也许它也是内部Cloudant行为的结果(例如,群集中的不同节点报告的大小略有不同).