Couchdb 在cloudant上使文档过期的设计模式

Couchdb 在cloudant上使文档过期的设计模式,couchdb,cloudant,Couchdb,Cloudant,因此,当文档被删除时,元数据实际上会永久保留。对于像cloudant这样的托管服务,每个月的存储成本都很高,我希望完全清除删除的文档 我在某个地方读到过一个设计模式,您在视图中使用该模式将文档放入“当前”数据库,然后定期删除过期的数据库。但是我找不到这篇文章,我也不太明白数据库命名是如何工作的。cloudant客户端如何始终知道“当前”数据库名称?已删除的文档将永远保存在couchdb中。即使在压缩之后。虽然文档的大小非常小,因为它只包含三个字段 {{u id:234wer,{u rev:123

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


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

已删除的文档将永远保存在couchdb中。即使在压缩之后。虽然文档的大小非常小,因为它只包含三个字段

{{u id:234wer,{u rev:123,deleted:true}

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


但正如维基中所解释的,它只在特殊情况下使用

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

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

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