CouchDB 中允许的最大视图是多少
What is the maximum allowed views in CouchDB
我正在构建流量跟踪应用程序。我最终使用 CouchDB 来存储所有的流量日志,应用程序可以根据用户的查询和自定义数据动态创建视图。
我想创建数千(或多达数百万)的视图。
有限制吗?过多的视图会影响 CouchDB 性能吗?
观看次数没有硬性限制。不过,我会推荐一些东西:
首先,将您的观点分散到许多设计文档中。我的第一个想法是每个用户 1 个,但您可以根据实际拥有的浏览量进一步细分它们。
视图按设计文档在内部分组,这会影响它们的重建时间、存储位置等。因此,保持分区将有助于防止 1 个用户的视图影响任何其他用户的性能。
此外,如果不定期压缩数据库,每个文档(包括设计文档)都会在不同的写入过程中保留旧副本,这也是 CouchDB 使用如此多磁盘的原因之一 space。 (它使用更多磁盘 space 来换取快速写入的能力)
其次,非常保守您emit()
的价值观。避免像 emit(key, doc)
这样的事情。如果您在视图中发出整个文档,它将被视为视图索引的一部分(与主数据库索引分开存储)并创建文档的多个副本。如果您需要在您的视图中访问源文档,您应该使用 include_docs=true
.
根据实际情况,您可能还需要考虑跨多个数据库进行分区。这可能是不可能的,具体取决于您要如何编写查询等,但值得一提。如果您可以分区到数据库中,这将使创建备份更容易一些,并且在长期 运行.
中可能会更好地扩展
要点是,CouchDB 非常 灵活,这是我最喜欢它的地方之一,因为它让开发人员掌握了权力。
我正在构建流量跟踪应用程序。我最终使用 CouchDB 来存储所有的流量日志,应用程序可以根据用户的查询和自定义数据动态创建视图。
我想创建数千(或多达数百万)的视图。 有限制吗?过多的视图会影响 CouchDB 性能吗?
观看次数没有硬性限制。不过,我会推荐一些东西:
首先,将您的观点分散到许多设计文档中。我的第一个想法是每个用户 1 个,但您可以根据实际拥有的浏览量进一步细分它们。
视图按设计文档在内部分组,这会影响它们的重建时间、存储位置等。因此,保持分区将有助于防止 1 个用户的视图影响任何其他用户的性能。
此外,如果不定期压缩数据库,每个文档(包括设计文档)都会在不同的写入过程中保留旧副本,这也是 CouchDB 使用如此多磁盘的原因之一 space。 (它使用更多磁盘 space 来换取快速写入的能力)
其次,非常保守您emit()
的价值观。避免像 emit(key, doc)
这样的事情。如果您在视图中发出整个文档,它将被视为视图索引的一部分(与主数据库索引分开存储)并创建文档的多个副本。如果您需要在您的视图中访问源文档,您应该使用 include_docs=true
.
根据实际情况,您可能还需要考虑跨多个数据库进行分区。这可能是不可能的,具体取决于您要如何编写查询等,但值得一提。如果您可以分区到数据库中,这将使创建备份更容易一些,并且在长期 运行.
中可能会更好地扩展要点是,CouchDB 非常 灵活,这是我最喜欢它的地方之一,因为它让开发人员掌握了权力。