CouchDB有一个特殊的_all_docs
视图,它返回按ID排序的文档。但由于ID默认是随机的,因此排序没有意义。
我总是需要按'添加日期'排序。现在我有两个选择:
现在第二个解决方案不那么苛刻了,但我怀疑第一个解决方案更有效,更快,因为所有查询都将在真正的行ID上完成,该行被编入索引。
这两种解决方案的性能有所不同吗?如果这是真的,哪一个可能更快或更喜欢?
答案 0 :(得分:3)
这两种解决方案的性能有所不同吗?
您的示例描述了CouchDB中的主要和次要索引方法。
_all_docs
是唯一的主要索引,并始终是最新的。第二个解决方案中的二级索引(视图)在请求时会更新。
这就是为什么请求者的观点_all_docs
可能更快"。实际上,请求已经是最新的索引没有区别。潜在过时视图(二级索引)的两种解决方法是使用查询参数stale=ok
(在响应请求后更新视图)或所谓的"视图加热器" (发送一个简单的HTTP Get到视图以触发更新过程)。
如果它是真的,哪一个是[...]首选的?
构建有用索引和响应有效负载的功能在二级索引方面要高得多。
如果您想使用主索引,您必须设计"设计"正如你所描述的那样你的身份。你可以想象,对于doc和id也可以做些什么是一个巨大的预先决定。
我的建议是使用二级索引(视图)。只有当您需要存储在实时或高并发场景中的数据时,才应在搜索中包含主索引,以便最适合请求数据。