CouchDB:获取最后的文件?

时间:2015-04-10 08:31:08

标签: couchdb couchbase pouchdb couchbase-view

CouchDB有一个特殊的_all_docs视图,它返回按ID排序的文档。但由于ID默认是随机的,因此排序没有意义。

我总是需要按'添加日期'排序。现在我有两个选择:

  1. 生成我自己的ID并确保它们以时间戳开头
  2. 使用标准GUID,但在json中添加时间戳,然后排序 该
  3. 现在第二个解决方案不那么苛刻了,但我怀疑第一个解决方案更有效,更快,因为所有查询都将在真正的行ID上完成,该行被编入索引。

    这两种解决方案的性能有所不同吗?如果这是真的,哪一个可能更快或更喜欢?

1 个答案:

答案 0 :(得分:3)

  

这两种解决方案的性能有所不同吗?

您的示例描述了CouchDB中的主要和次要索引方法。

_all_docs是唯一的主要索引,并始终是最新的。第二个解决方案中的二级索引(视图)在请求时会更新。

这就是为什么请求者的观点_all_docs可能更快"。实际上,请求已经是最新的索引没有区别。潜在过时视图(二级索引)的两种解决方法是使用查询参数stale=ok(在响应请求后更新视图)或所谓的"视图加热器" (发送一个简单的HTTP Get到视图以触发更新过程)。

  

如果它是真的,哪一个是[...]首选的?

构建有用索引和响应有效负载的功能在二级索引方面要高得多。

如果您想使用主索引,您必须设计"设计"正如你所描述的那样你的身份。你可以想象,对于doc和id也可以做些什么是一个巨大的预先决定。

我的建议是使用二级索引(视图)。只有当您需要存储在实时或高并发场景中的数据时,才应在搜索中包含主索引,以便最适合请求数据。