设计模式使云量上的文档到期

时间:2014-04-05 01:35:06

标签: couchdb cloudant

因此,删除文档时,实际上会永久保留元数据。对于像cloudant这样每月存储成本的托管服务,我想完全清除已删除的文档。

我在某处读到了一个设计模式,你在视图中使用dbcopy将文档放入“当前”数据库,然后定期删除过期的数据库。但我找不到这篇文章,我不太明白数据库命名如何工作。云客户端如何始终知道“当前”数据库名称?

2 个答案:

答案 0 :(得分:6)

Cloudant不公开_purge端点(群集节点之间的松散一致性保证使得清除变得棘手)。

此问题的最常见解决方案是创建第二个数据库并使用validate_document_update复制,以便拒绝目标数据库中没有现有条目的已删除文档。复制完成后(如果使用连续复制,则可接受最新),切换应用程序以使用新数据库并删除旧数据库。目前无法重命名数据库,但您可以使用指向“当前”数据库的虚拟主机。

我要提醒一下,生成高比率的已删除:活动文档的工作负载通常是Cloudant中的反模式。我首先考虑是否可以更改您的文档模型以避免它。

答案 1 :(得分:1)

已删除的文档在couchdb中永久保留。即使在压缩之后。尽管文档的大小非常小,因为它只包含三个字段

{_id:234wer,_rev:123,deleted:true}

这样做的原因是确保所有复制的数据库都是一致的。如果从一个位置删除在多个数据库上复制的文档,则无法将其告知其他复制的存储。

_purge但正如维基中所解释的那样,它仅用于特殊情况。