Sorting CouchDB中的上一个和下一个文档
我有一个包含带有浮点时间戳的项目的数据库。当用户访问url为Sorting CouchDB中的上一个和下一个文档,sorting,timestamp,couchdb,Sorting,Timestamp,Couchdb,我有一个包含带有浮点时间戳的项目的数据库。当用户访问url为/item/id/的页面时,应显示具有相应标识符的文档(这很容易),以及按时间顺序指向上一个和下一个文档的链接(如果存在) 这些链接必须是持久的,并且项目往往会根据外部条件在不同的时间戳出现和消失,因此我没有选择在URL中缓存一个或两个标识符 现在,我正在使用一个按时间戳排序的视图进行两个查询(一个降序,一个升序),以获取上一个和下一个文档 我可以用更少的请求来完成吗 如果对象的时间戳非常接近,浮点精度恐怕会造成混乱。我怎样才能避免这
/item/id/
的页面时,应显示具有相应标识符的文档(这很容易),以及按时间顺序指向上一个和下一个文档的链接(如果存在)
这些链接必须是持久的,并且项目往往会根据外部条件在不同的时间戳出现和消失,因此我没有选择在URL中缓存一个或两个标识符
现在,我正在使用一个按时间戳排序的视图进行两个查询(一个降序,一个升序),以获取上一个和下一个文档
- 我可以用更少的请求来完成吗
- 如果对象的时间戳非常接近,浮点精度恐怕会造成混乱。我怎样才能避免这种情况
这取决于您的读/写比率,但在每次插入/删除时执行这两个查询可能比在每次页面查看时更快。不确定您是否仍在解决此问题,但如果是,您可以尝试以下方法:
[2012,04,30,03,20,35]
?开始键=[2012,04,30,03,20,0]&结束键=[2012,04,30,03,20,60]
来
获取索引中最后一分钟(或小时、天等)的键值范围。
取决于发射的内容的粒度)if Not Match
/ETag
头和一些客户端缓存,您可能只需要请求一个更大范围的文档即可——缓存一个日或周范围的列表,并使用缓存的数组/任何内容,以便以后查找时对服务器的点击更轻(因为它只会检查ETag
值,并返回“仅”未修改的304响应代码
FWIW,这也适用于Couchbase Server 2.0 API(因为它基于CouchDB视图的system/API)
希望有帮助