许多设计文档会使Couchdb陷入困境吗?

许多设计文档会使Couchdb陷入困境吗?,couchdb,Couchdb,我的公司正在使用CouchDB,我很快就要和它互动了,所以我正在参加一个速成班,当我在阅读各种教程和示例时,我遇到了一个让人好奇的问题:许多设计文档会让CouchDB陷入困境吗 我阅读的具体示例反映了我自己的用例,其中中间层为每个客户创建一个新的设计文档,将所有查询和相关生成的b树限制在该客户的范围内 但这是否意味着,在最佳情况下(从业务角度来看),您将拥有数千个设计文档?我突然想到,由于每次插入都必须运行这些设计文档中的每一个,如果只是为了不发出任何信息,那么这将对服务器造成极大的压力 我是否

我的公司正在使用CouchDB,我很快就要和它互动了,所以我正在参加一个速成班,当我在阅读各种教程和示例时,我遇到了一个让人好奇的问题:许多设计文档会让CouchDB陷入困境吗

我阅读的具体示例反映了我自己的用例,其中中间层为每个客户创建一个新的设计文档,将所有查询和相关生成的b树限制在该客户的范围内

但这是否意味着,在最佳情况下(从业务角度来看),您将拥有数千个设计文档?我突然想到,由于每次插入都必须运行这些设计文档中的每一个,如果只是为了不发出任何信息,那么这将对服务器造成极大的压力


我是否遗漏了CouchDB设计中一些基本的东西,使其成为一个非问题?或者有更聪明的方法来处理这个问题吗?

AFAIK CouchDB只在第一次请求结果时更新视图(这就是为什么它们有一个“过时视图”选项)


因此,这种类型的负载对您来说应该不是问题。但是,如果视图输出大量数据,您最好注意磁盘空间消耗。

我可能不推荐这种方法。让我们考虑一些情况:

新顾客 您将创建一个新的设计文档,并将其添加到数据库中。在这种情况下,当从该设计文档请求第一个视图时,它将遍历数据库中的所有文档以创建索引。因此,每个新客户都将扫描所有文档

新记录/或记录更改 所有其他文档更改都将通过所有设计文档视图功能运行

可供替代的
为每个客户创建一个数据库。每个数据库中有一个设计文档。拥有一个用于聚合的主数据库,所有客户数据库都复制到该数据库。

这是一种为每个客户存储设计文档的有趣方法。你有什么想法吗?Ryan:找到了:啊,我不知道一棵树只是根据视图的需要生成的。谢谢。这并不能改变这样一个事实,即更新成千上万的b-树会很慢。延迟视图更新只会延迟工作,不会消除任何工作。是的。但OP显然担心特定的场景“我突然想到,由于这些设计文档中的每一个都必须针对每个插入运行,如果只是不发出任何信息,那么最终会对服务器造成极大的压力”,而这并不是会发生的事。