morphia skip 如何处理分页期间到达的新记录?
how does morphia skip deal with new records arriving during pagination?
我已经阅读了很多有关将跳过与分页一起使用(以及相关的性能问题)的文章。对于我的应用程序,性能问题不是问题,但是,如果新记录在请求页面之间到达,我不清楚 skip 会发生什么。
例如,假设我有 10 条记录,一个用户请求一个 5 的页面,我们提供了它们。当用户浏览第一页时,另外 5 条记录被插入到数据库中,用户请求下一页 5。假设我们按 id 或日期排序,用户现在会返回相同的 5 条记录(因为,对于第二页,skip 跳过前 5 个新添加的记录和 returns 接下来的 5 个,它们现在是最初返回的相同记录)?
你是对的。添加/删除条目的性能和正确性都是一个问题。
有关详细解释,请参阅 http://use-the-index-luke.com/no-offset(Markus Winand 多年来一直在与偏移作斗争 ;-))。
据我所知,MongoDB 和 Morphia 都不支持键集分页,因此您必须自己构建它。确保您始终使用独特的东西(例如日期和 ID)。
其他系统已经在本地实现了此功能,例如在 Elasticsearch 中 search after。
我已经阅读了很多有关将跳过与分页一起使用(以及相关的性能问题)的文章。对于我的应用程序,性能问题不是问题,但是,如果新记录在请求页面之间到达,我不清楚 skip 会发生什么。
例如,假设我有 10 条记录,一个用户请求一个 5 的页面,我们提供了它们。当用户浏览第一页时,另外 5 条记录被插入到数据库中,用户请求下一页 5。假设我们按 id 或日期排序,用户现在会返回相同的 5 条记录(因为,对于第二页,skip 跳过前 5 个新添加的记录和 returns 接下来的 5 个,它们现在是最初返回的相同记录)?
你是对的。添加/删除条目的性能和正确性都是一个问题。
有关详细解释,请参阅 http://use-the-index-luke.com/no-offset(Markus Winand 多年来一直在与偏移作斗争 ;-))。 据我所知,MongoDB 和 Morphia 都不支持键集分页,因此您必须自己构建它。确保您始终使用独特的东西(例如日期和 ID)。
其他系统已经在本地实现了此功能,例如在 Elasticsearch 中 search after。