Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将CouchDB复制到本地coach可以减少大小-为什么?_Couchdb_Replication - Fatal编程技术网

将CouchDB复制到本地coach可以减少大小-为什么?

将CouchDB复制到本地coach可以减少大小-为什么?,couchdb,replication,Couchdb,Replication,我最近开始使用coach来开发一个大型应用程序 我使用7907文档创建了一个数据库,并希望重命名该数据库。我摸索了一下,但不知道如何重命名它,所以我想我应该把它复制到我想要的名字的本地数据库中 第一次尝试时,复制失败,我认为错误是超时。我又试了一次,效果很快,有点令人不安 复制之后,我将显示新数据库具有正确数量的记录,但数据库大小约为原始数据库的1/3 还有一点奇怪的是,如果我刷新futon,原版的大小在94.6到95.5 mb之间波动 这给我留下了几个问题: 第二个数据库是否存储对第一个数据库

我最近开始使用coach来开发一个大型应用程序

我使用7907文档创建了一个数据库,并希望重命名该数据库。我摸索了一下,但不知道如何重命名它,所以我想我应该把它复制到我想要的名字的本地数据库中

第一次尝试时,复制失败,我认为错误是超时。我又试了一次,效果很快,有点令人不安

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

还有一点奇怪的是,如果我刷新futon,原版的大小在94.6到95.5 mb之间波动

这给我留下了几个问题:

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

  • 为什么尺寸会如此不同?最初的索引是否已经建立,而新的索引最终将建立

  • 为什么尺寸在波动

  • 编辑

    以下几点可能会有所帮助:

    • 这是在cloudant couchdb上安装的
    • 我检查了新db的第一条和最后一条记录,它们是匹配的,所以我不认为futon漏报了

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

    • b树索引得到平衡
    • 来自旧文档修订的数据将被丢弃
    • 以前对数据库的更新中的元数据将被丢弃
    复制存储到检查点或从检查点进行复制,因此如果您从同一源重新复制到同一位置(即重新运行超时的复制),它将恢复到停止的位置

    答复:

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

  • 非常棒,非常有用的答案。我对大小的缩减感到惊讶,因为我没有创建任何视图,而且实际上已经从本地数据库复制了原始数据库。我也没有做任何更新,所以元数据应该相对无关紧要。但是,我现在不太担心这些数据,所以我将继续删除原始数据库。我认为这种波动与cloudant进行内部复制和访问不同的节点有关,如果说有什么能让我觉得在那里使用数据更安全的话。这还有改进的余地,我认为CouchDB 1.2也有改进。但这是CouchDB被误解的众多方式之一。它采用的数据结构和算法严重牺牲了磁盘使用(以及i/o)的可靠性。考虑<代码>杀死- 9 <代码>是关闭CouCHDB的完美方法。没有风险。我们自然认为这是“浪费”,但真正的代价是花费硬件资源而不是人力资源。