2013-10-04 34 views
0

我一直在试图删除couchdb中的文档(使用ruby couchrest)来恢复磁盘空间。我意识到deleting文档可能无法释放空间。然后我使用Document :: destroy(它听起来像它会工作)。在压缩了看法之后,它看起来好像比它应该释放的更多。couchrest与destroy和delete_doc的区别

你能解释破坏是什么吗?你知道我为什么回收这么多空间吗?

回答

1

从源头上看,这两种方法似乎都差不多(销毁电话delete_doc())。唯一的区别似乎是destroy()也从本地对象中删除_id_rev字段,这在服务器端没有任何区别。

虽然这两种方法似乎都会做某种配料(当通过bulk = true时)。因此,您可能会遇到拨打delete_doc()的电话,并且您的后续呼叫destroy()已超出限制,并在服务器上执行批量删除操作。

+0

让我检查并取回。我从各种文章中得到的印象是,即使删除了文档,也无法从couchdb返回磁盘空间。你知道这是否属实 – nilanjan

+1

这是部分正确的。您可以通过简单地向其添加“_deleted:true”属性来删除文档。在这种情况下,文档被认为被删除,但其所有其他属性将保持不变,并且仍会占用其全部磁盘空间。您可以使用它来存储文档被删除的原因。或者,您可以使用HTTP方法DELETE,它将删除所有属性并添加删除标志。在这种情况下,压缩数据库时大部分空间将被释放,但一个小的“doc墓碑”将永远留在后面。 –

相关问题