这类似于给this question不具有任何答案。我读过所有关于如何使用游标与twitter,facebook和disqus API和也this article如何disqus普遍建立了自己的游标,但我似乎仍不能神交的他们是如何工作的概念,以及如何实现类似的解决方案在我自己的项目。有人能具体解释不同的技术和概念在他们身后?
让我们先了解为什么大型数据集的例子偏移分页失败。
客户端提供两个参数限制结果的数量和偏移量和页面偏移。例如,偏移量= 40,上限= 20,我们可以告诉数据库返回下一个20个项目,跳过第40。
缺点:
游标会如何解决这个问题?
通过在数据集中的指针恢复到特定项目基于指针分页作品。在随后的请求,服务器返回给定的指针后的结果。
我们将使用参数next_cursor随着限制由客户端在这种情况下提供的参数。
假设我们想从最近的用户首次最古老的user.When客户端请求进行分页,假设我们通过查询选择的第一页:
SELECT * FROM users
WHERE team_id = %team_id
ORDER BY id DESC
LIMIT %limit
其中限制等于限制加一,以获取一个不是由客户指定的更个性化的结果。额外的结果不会在结果集中返回,但我们使用值作为next_cursor的ID。
从服务器的响应将是:
{
"users": [...],
"next_cursor": "1234", # the user id of the extra result
}
然后,客户机将提供next_cursor作为光标在所述第二请求。
SELECT * FROM users
WHERE team_id = %team_id
AND id <= %cursor
ORDER BY id DESC
LIMIT %limit
有了这个,我们已经解决偏移分页基础的弊端:
对于详细的解释,你可以参观从slack!这个奇妙的工程文章
下面是关于分页的文章:paginating-real-time-data-cursor-based-pagination
游标 - 我们需要有唯一的顺序值至少一列来实现基于光标分页。这可能是类似的参数后,Twitter的max_id参数或Facebook的。
一般来说,你应该通过当前项目或页面数的请求作为PARAM。其他常用的参数是页面的批量大小。然后在服务器端后端您选择并返回正确的数据集,与SQL查询的例子。
一些图形API的连接默认使用游标。你可以“后”在你的调用参数使用“限制”和“前” /。如果你还不清楚,你可以在这里发布您的代码,我可以用它解释。