CouchDB中允许的最大观看次数是多少

tha*_*hpk 2 performance couchdb

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

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

Dom*_*nes 5

视图数量没有硬性限制。不过,我还是建议您做一些事情:

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

视图由设计文档在内部进行分组,这会影响视图的重建时间,存储位置等。因此,将内容划分开来将有助于防止1个用户的视图影响其他任何用户的性能。

此外,在不定期压缩数据库的情况下,每个文档(包括设计文档)都会在不同的写入之间保留旧副本,这是CouchDB使用大量磁盘空间的原因之一。(它需要使用更多的磁盘空间来进行快速写操作)

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

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

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