CouchDb - 具有多个视图的一个设计文档与具有拆分视图的多个设计文档
CouchDb - One design doc with multiple views vs multiple design docs with split views
我正在尝试权衡这两者。
使用一个设计文档和多个视图似乎可以快速更新,因为在建立索引时,每个文档都会一次性传递到每个视图。
但是,如果我在设计文档中更改视图,则需要权衡所有视图。
这看起来正确吗?还有其他人可以补充这种理解吗?
可以找到更多详细信息here :
视图被组织到设计文档中。从理论上讲,您可以在数据库中拥有任意数量的设计文档,并在单个设计文档中拥有任意数量的视图。理论上,每个视图可以为每个文档发出任意多个 b 树节点,并且您的 map/reduce 代码可以任意复杂。但请记住:
- 有很多视图会降低性能,因为每次文档更改时每个视图都必须 运行
同一设计文档中的所有视图都被索引在一起;更改、添加或删除任何视图都需要重新索引所有视图
在一个视图中为每个文档发出很多信息会降低性能(但比将每个发出信息放在其自己的视图中性能略高)
复杂的映射和减少代码会降低性能
- 发出 null 以外的值会降低性能
- 使用 _sum、_count、_stats 内置函数以外的 reduce 代码会降低性能
作为旁注,CouchDB 和 Cloudant 在更新视图的确切时间上存在差异:
- CouchDB 延迟更新视图,即在查询时更新视图。这可能会导致不常访问的视图等待时间过长。
- Cloudant 在后台异步更新视图。这意味着不再访问的视图仍在消耗系统资源。
我正在尝试权衡这两者。
使用一个设计文档和多个视图似乎可以快速更新,因为在建立索引时,每个文档都会一次性传递到每个视图。
但是,如果我在设计文档中更改视图,则需要权衡所有视图。
这看起来正确吗?还有其他人可以补充这种理解吗?
可以找到更多详细信息here :
视图被组织到设计文档中。从理论上讲,您可以在数据库中拥有任意数量的设计文档,并在单个设计文档中拥有任意数量的视图。理论上,每个视图可以为每个文档发出任意多个 b 树节点,并且您的 map/reduce 代码可以任意复杂。但请记住:
- 有很多视图会降低性能,因为每次文档更改时每个视图都必须 运行
同一设计文档中的所有视图都被索引在一起;更改、添加或删除任何视图都需要重新索引所有视图
在一个视图中为每个文档发出很多信息会降低性能(但比将每个发出信息放在其自己的视图中性能略高)
复杂的映射和减少代码会降低性能
- 发出 null 以外的值会降低性能
- 使用 _sum、_count、_stats 内置函数以外的 reduce 代码会降低性能
作为旁注,CouchDB 和 Cloudant 在更新视图的确切时间上存在差异:
- CouchDB 延迟更新视图,即在查询时更新视图。这可能会导致不常访问的视图等待时间过长。
- Cloudant 在后台异步更新视图。这意味着不再访问的视图仍在消耗系统资源。