CouchDB中允许的最大视图数是多少

时间:2016-02-20 12:37:25

标签: performance couchdb

我正在构建一个流量跟踪应用程序。我最终使用CouchDB存储所有流量日志,应用程序可以根据用户的查询和自定义数据动态创建视图。

我想创建数千个(或可能高达数百万)的视图。 有限制吗?太多观点会影响CouchDB的表现吗?

1 个答案:

答案 0 :(得分:4)

视图数量没有硬性限制。我会推荐一些东西:

首先,在许多设计文档中分割您的视图。我的第一个想法是每个用户1,但你可以根据你实际拥有的视图进一步细分它们。

视图由设计文档在内部分组,这会影响它们的重建时间,存储位置等。因此,保持分区关闭将有助于防止1个用户的视图影响任何其他用户的性能。

此外,如果不定期压缩数据库,每个文档(包括设计文档)都会在不同的写入中保留旧副本,这是CouchDB使用如此多磁盘空间的原因之一。 (它使用更多磁盘空间进行交易以便快速写入)

其次,非常保守,你的视图中的emit()值。避免像emit(key, doc)这样的事情。如果在视图中发出整个文档,它将被视为视图索引的一部分(与主数据库索引分开存储)并创建文档的多个副本。如果您需要在视图中访问源文档,则应使用include_docs=true

根据具体情况,您可能还需要考虑跨多个数据库进行分区。这可能是不可能的,这取决于你想如何编写查询等等,但值得一提。如果您可以分区到数据库,这将使创建备份更容易,并且从长远来看可能会更好地扩展。

重点是,CouchDB 非常灵活,这是我最喜欢的事情之一,因为它将权力作为开发人员掌握在你手中。