CouchDB具有特殊的_all_docs
视图,该视图返回按ID排序的文档。但是,由于默认情况下ID是随机的,因此排序没有意义。
我总是需要按'添加日期'进行排序。现在我有两个选择:
现在第二种解决方案的功能不那么强大,但是我怀疑第一种解决方案的效率和速度要高得多,因为所有查询都将在索引的真实行ID上进行。
这两个解决方案在性能上是否确实不同?如果是真的,哪一个可能更快或更受欢迎?
这两个解决方案在性能上是否确实不同?
您提供的示例描述了CouchDB中的主索引和辅助索引方法。
_all_docs
是唯一的主索引,并且始终是最新的。如第二个解决方案中的二级索引(视图)在被请求时得到更新。
这就是从请求者的角度来看_all_docs
可能“更快”的原因。实际上,请求已经是最新的索引没有什么区别。可能过时的视图(二级索引)的两种解决方法是使用查询参数stale=ok
(在请求响应后更新视图)或所谓的“视图加热器”(发送简单的HTTP Get到视图以触发)更新过程)。
如果是真的,则首选[...]?
在二级索引方面,建立有用的索引和响应有效负载的能力要高得多。
[当您要使用主索引时,您必须按照说明来“设计”您的ID。您可以想象,这是对文档和ID所做的巨大决定。
我的建议是使用二级索引(视图)。仅当您需要实时或高并发场景中存储的数据时,才应在搜索中包括主索引,以最适合请求数据。