得到最后的文件?

Get the last documents?

CouchDB 有一个特殊的 _all_docs 视图,其中 returns 文档按 ID 排序。但由于默认情况下 ID 是随机的,因此排序没有意义。

我总是需要按 'date added' 排序。现在我有两个选择:

  1. 生成我自己的 ID 并确保它们以时间戳开头
  2. 使用标准 GUID,但在 json 中添加时间戳,然后排序 那

现在第二种解决方案不那么骇人听闻了,但我怀疑第一种解决方案更高效、更快速,因为所有查询都将在索引的真实行 ID 上完成。

这两种解决方案在性能上是否存在差异?如果这是真的,哪一个可能更快或更受欢迎?

Is it true that both solutions differ in performance?

您给出的示例描述了 CouchDB 中的主索引和辅助索引方法。

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

这就是为什么从请求者的角度来看 _all_docs 可能是 "faster" 的原因。实际上,请求已经是最新的索引没有区别。可能过时的视图(二级索引)的两个解决方法是使用查询参数 stale=ok(在响应请求后更新视图)或所谓的 "view-heaters"(发送一个简单的 HTTP Get 到视图触发更新过程)。

And if it's true, which one is [...] prefered?

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

当您想使用主索引时,您必须 "design" 您所描述的 ID。你可以想象这是一个巨大的预先决定,也可以用 doc 和 ids 来完成。

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