获取最后的文件?

问题描述 投票:1回答:1

CouchDB具有特殊的_all_docs视图,该视图返回按ID排序的文档。但是,由于默认情况下ID是随机的,因此排序没有意义。

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

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

现在第二种解决方案的功能不那么强大,但是我怀疑第一种解决方案的效率和速度要高得多,因为所有查询都将在索引的真实行ID上进行。

这两个解决方案在性能上是否确实不同?如果是真的,哪一个可能更快或更受欢迎?

couchdb
1个回答
3
投票

这两个解决方案在性能上是否确实不同?

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

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

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

如果是真的,则首选[...]?

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

[当您要使用主索引时,您必须按照说明来“设计”您的ID。您可以想象,这是对文档和ID所做的巨大决定。

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

© www.soinside.com 2019 - 2024. All rights reserved.