我有一个包含具有浮点时间戳的项目的数据库。当用户访问具有URL /item/id/<the-id-here>
的页面时,应显示具有相应标识符的文档(这很容易)以及按时间顺序的前一个和下一个文档的链接(如果存在)。
这些链接必须是持久的,并且项目会根据外部条件在各种时间戳上出现和消失,因此我无法在URL中缓存这些标识符中的一个或两个。
现在,我正在使用按时间戳排序的视图来进行两个查询(一个降序,一个升序),以便获取上一个和下一个文档。
答案 0 :(得分:0)
是否有可能以某种方式在数据库中维护每个文档的上一个/下一个文档? 它取决于您拥有的读/写比率,但在每次插入/删除时执行这两个查询可能比在每个页面视图中更快。
答案 1 :(得分:0)
不确定您是否仍在努力解决此问题,但如果是这样,您可以尝试以下操作:
[2012, 04, 30, 03, 20, 35]
?startkey=[2012, 04, 30, 03, 20, 0]&endkey=[2012, 04, 30, 03, 20, 60]
获取最后一分钟(或小时,天等)索引中的键/值范围
取决于你发射的粒度。这会让你得到一个单一的GET请求,并且需要更大的响应大小。但是,如果您使用HTTP If-Not-Match
/ ETag
标头和一些客户端缓存,您可以通过单个请求获取更大范围的文档 - 缓存列表对于日期或星期范围并使用该缓存数组/以及后续查找对服务器的“更轻”命中(因为它只检查ETag
值并返回“仅”{{1}响应代码。
FWIW,它也适用于Couchbase Server 2.0 API(因为它基于CouchDB的View系统/ API)。
希望有所帮助。