我正在尝试进入Couchbase世界并学习有关视图的内容。 几次在演示和演示中,我听到从一个观点回归整个文档是不好的:
emit(meta.id, doc);
我的问题是为什么?那么我应该返回什么?如何获取文档的正确值?
答案 0 :(得分:6)
这是一个坏主意,因为它实际上适得其反。将文档写入视图意味着它将与视图索引本身一起存储在磁盘上。您支付了再次将文档写入磁盘的IO价格(原始密钥/值doc的副本),并在查询时再次支付它以便读取它。由于视图查询是从磁盘(或文件系统缓存)提供的,因此您永远不会利用集成缓存层来更快地检索文档。简而言之,平均而言,从视图中获取文档ID并通过id检索文档比从视图中读取整个文档更快。对于多个文档的操作尤其如此。
答案 1 :(得分:2)
它很糟糕,因为它耗费大量资源,视图通常会更新并覆盖索引,所以如果你反复编写整个文档,它将需要大量的处理器时间和磁盘I / O(以及文件系统缓存)。
因此,建议(并且效率更高)让视图返回doc.id,然后使用标准get
过程返回整个文档。