Couchdb 拿到最后的文件了吗?

Couchdb 拿到最后的文件了吗?,couchdb,Couchdb,CouchDB有一个特殊的\u all\u docs视图,它返回按ID排序的文档。但是由于ID在默认情况下是随机的,所以排序没有意义 我总是需要按“添加日期”排序。现在我有两个选择: 生成我自己的ID并确保它们以时间戳开头 使用标准GUID,但在json中添加时间戳,并按 那 现在,第二种解决方案不那么粗俗,但我认为第一种解决方案效率更高、速度更快,因为所有查询都将在实际的行id上完成,该行id已被索引 这两种解决方案的性能是否确实不同?如果这是真的,哪一个可能更快或更受欢迎 这两种解决方案的性

CouchDB有一个特殊的
\u all\u docs
视图,它返回按ID排序的文档。但是由于ID在默认情况下是随机的,所以排序没有意义

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

  • 生成我自己的ID并确保它们以时间戳开头
  • 使用标准GUID,但在json中添加时间戳,并按 那
  • 现在,第二种解决方案不那么粗俗,但我认为第一种解决方案效率更高、速度更快,因为所有查询都将在实际的行id上完成,该行id已被索引

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

    这两种解决方案的性能是否确实不同

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

    \u所有文档
    是唯一的主索引,并且始终是最新的。第二个解决方案中的二级索引(视图)在请求时得到更新

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

    如果这是真的,[…]更喜欢哪一个

    与二级索引相比,构建有用索引和响应负载的能力要高得多

    当你想使用主索引时,你必须按照你描述的那样“设计”你的id。你可以想象,这是一个巨大的预先决定,也可以用doc和id做什么


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

    回答很好,只是想插一句,说这个答案也适用于数据库。:)@nlawson^5!很高兴知道。