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

时间:2012-01-16 05:15:56

标签: couchdb replication

我最近开始使用Couch来处理我正在开发的大型应用程序。

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

我第一次尝试复制失败,我认为错误是超时。我再次尝试,它的工作非常快,这有点令人不安。

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

还有点奇怪的是,如果我刷新被褥,原件的尺寸在94.6和95.5 mb之间波动

这给我留下了几个问题:

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

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

  3. 为什么尺寸会波动?

  4. 修改

    可能有用的一些事情:

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

1 个答案:

答案 0 :(得分:7)

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

  • b-tree索引得到平衡
  • 废弃旧文档修订版中的数据。
  • 以前对数据库的更新中的元数据将被丢弃。

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

数目:

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