我有一个按键排序的服务器上的记录列表,并使用分页API逐个返回段列表。由于项目可以插入列表的中间,因此我将下一页的第一个键作为分页标记返回,以便获取下一页。
但是,我发现DynamoDB使用当前页面的最后一个键代替查询API,如果下一页不存在则为null。
使用当前页面的最后一项和下一页的第一项作为分页标记有什么优缺点?
至于我,返回第一项更直观,因为只有在下一页不存在时它才为空。
答案 0 :(得分:8)
使用“当前页面的最后一项”( LICP )比使用“下一页的第一项”( FINP )要好,因为它处理得更好在此期间,有可能在这两个项目之间插入一些项目。
例如,假设第一页包含3个按字母顺序排列的名称:Adam / Basil / Claude。假设下一页是Elon / Francis / Gilbert。
然后使用LICP,令牌为Claude
,而使用FINP时,令牌为Elon
。如果没有插入新名称,当我们到达下一页时结果是相同的。
但是,假设我们在获取第一页之后但在获取第二页之前插入名称Daniel
。在这种情况下,当我们获得带有LICP的第二页时,我们获得Daniel/Elon/Francis
,而使用FINP,我们得到Elon/Francis/Gilbert
。也就是说,FINP将错过Daniel
,而LICP将不会。{/ p>
此外,FINP可能会消耗比LICP更多的计算资源,因为您必须检索一个额外的项目(上面的示例中有4个项目,而不是3个项目。)