Database CouchDB-由PUT\u deleted属性删除的文档仍然可用

Database CouchDB-由PUT\u deleted属性删除的文档仍然可用,database,synchronization,couchdb,pouchdb,Database,Synchronization,Couchdb,Pouchdb,我通过将_deleted属性设置为true PUT method来删除CouchDB中的文档。删除了文档的最后一个版本,但以前的版本仍然可用 当我从数据库中提取特定类型的文档时,该文档仍然可用 如何删除不可用的文档 我在服务器上的CouchDB和移动应用程序上的PockDB实例之间使用同步。您需要压缩数据库。压缩是从数据库或视图索引文件中删除未使用和旧数据的过程,与RDBMS中的真空不同。它可以通过调用数据库的_compact端点来触发,例如curl-X POSThttp://192.168.9

我通过将_deleted属性设置为true PUT method来删除CouchDB中的文档。删除了文档的最后一个版本,但以前的版本仍然可用

当我从数据库中提取特定类型的文档时,该文档仍然可用

如何删除不可用的文档


我在服务器上的CouchDB和移动应用程序上的PockDB实例之间使用同步。

您需要压缩数据库。压缩是从数据库或视图索引文件中删除未使用和旧数据的过程,与RDBMS中的真空不同。它可以通过调用数据库的_compact端点来触发,例如curl-X POSThttp://192.168.99.100:5984/koi/_compact -H'Content-Type:application/json'。在此之后,尝试访问已删除文档的先前修订版时应返回错误404,并说明原因


请注意,文档本身不会完全消失,会留下一个称为墓碑的东西。原因是CouchDB需要在复制过程中跟踪已删除的文档,以防止意外的文档恢复。

感谢您的快速响应。我有两个问题:-我应该怎么做?我阅读了文件,但没有关于这方面的书面材料。-这样的情况对我有帮助吗:我更新了三次文档,当我删除DOCPUT时,_deleted=true我对该文档进行了以前的修订。所以,只有当我运行压缩时,在删除文档后,我才不会得到以前的修订版?压缩的频率取决于您的业务需要。通常执行它不是为了删除过时的文档修订,而是为了回收空间,一个很好的经验法则是,一旦数据库包含了大约70%的碎片,就运行它,其中碎片定义为文件大小-数据大小/文件大小*100。文件大小和数据大小都可以在GET/db端点找到。我不确定我是否理解您的第二个问题。如果您询问是否仅删除已删除文档的旧修订版,则“否”,压缩将删除已删除和呈现文档的所有过期修订版。如果问题是除了压缩之外,是否还有其他方法可以删除过时的修订,那么,同样,也不是真的,MVCC是Coach和base的一个组成部分,因为它的分布式功能。谢谢。但是发生了一些奇怪的事情。在运行压缩和视图清理之后,数据库开始快速增长。在此之前,DB有10MB,现在每分钟增长约0.5MB。我做错了什么?或者这是正常的行为?