如何通过大量的删除、清除操作有效地保持CouchDB?

如何通过大量的删除、清除操作有效地保持CouchDB?,couchdb,Couchdb,我有一个couchdb数据库,有大约2000个文档(50MB),但在3个月内删除了150K个文档,并且会增加 那么,保持高绩效的更好策略是什么? 使用清除+压缩,定期重新创建整个数据库 couchdb文档建议在存储短期数据时重新创建数据库,这不是我的情况,但在某些类型的文档中,删除是常量 如果您的用例创建了大量已删除的文档(例如,如果您正在存储日志条目、消息队列等短期数据),您可能希望定期切换到新数据库并删除旧数据库(一旦其中的条目全部过期) 使用apachecouchdbv。2.1.1在Co

我有一个couchdb数据库,有大约2000个文档(50MB),但在3个月内删除了150K个文档,并且会增加

那么,保持高绩效的更好策略是什么? 使用清除+压缩,定期重新创建整个数据库

couchdb文档建议在存储短期数据时重新创建数据库,这不是我的情况,但在某些类型的文档中,删除是常量

如果您的用例创建了大量已删除的文档(例如,如果您正在存储日志条目、消息队列等短期数据),您可能希望定期切换到新数据库并删除旧数据库(一旦其中的条目全部过期)


使用apachecouchdbv。2.1.1

在CouchDB 2.x系列(从2.0.0到2.2.0)中,清除操作没有在集群级别实现,因此在您的情况下,它似乎不是一个选项

这似乎将在下一版本2.3.0中得到支持。您可以查看相关问题

同样的问题还包括一个可能的解决方法,该方法基于所描述的数据库切换方法


在您的情况下,使用Apache CouchDB 2.1.1数据库切换是唯一可行的选择。

性能对您来说是个问题吗?2000文档似乎太小了,以至于我认为性能应该仍然很快。不,现在还没有问题,但我需要在成为问题之前设计一个解决方案,系统是全天候的,而且我的预算有限。更多的资源(空间、进程或内存)可能是一个问题。清除+压缩将清除磁盘中的数据?清除前应使用压缩。压缩后,保留了一小部分已删除文档(用于复制目的)。通常,当磁盘达到某个阈值时,CouchDB会自动压缩。过早优化是万恶之源。谢谢@Flimzy,但我不认为这像YAGNI和大设计的前期原则,只是让环境健康的更好策略。列车到达时放置轨迹:)现在,随着2.3.0的发布,您可以清除文档。您必须为每个要清除的文档发送一个api调用,提供文档id甚至版本id。到目前为止,2.3.0中还没有“清除所有已删除内容”。其他数据库中的CouchDB同步文档也必须清除。