【发布时间】:2012-10-20 00:27:41
【问题描述】:
可能重复:
How to provide an API client with 1,000,000 database results?
想知道Cursors的使用是使用PostgreSQL实现“分页”的好方法。
用例是我们希望向 API 客户端提供超过 100,000 行。我们认为实现这一点的一个好方法是允许客户端批量(页面)请求信息。客户端一次可以请求 100 行。我们将返回 100 行以及一个游标,然后当客户端准备好时,他们可以使用我们发送给他们的游标请求接下来的 100 行。
但是,我对游标的工作方式以及应该如何以及何时使用游标有点模糊:
- 游标是否要求数据库连接保持打开状态?
- 游标是否在事务中运行,锁定资源直到它们“关闭”?
- 还有其他我不知道的“陷阱”吗?
- 还有其他更好的方法来处理这种情况吗?
非常感谢!
【问题讨论】:
-
我们在谈论什么样的客户?特别是,HTTP 客户端很容易“消失”...
-
是的,HTTP 客户端,所以它们可以并且将会消失。
-
如果您必须发布多个问题,请交叉链接问题。
-
不是完全重复的。我发布两个问题的原因是一个解决了“我应该如何将数据发送给客户”这个更普遍的问题?这个人在问“如果我进行分页,那该怎么办?”。结束这个问题的你们是出色的开发人员,回答了很多问题。不过,你们都没有太多的提问经验。才华横溢的开发者往往不熟悉新手的视角。如果你不问很多问题,然后大方地关闭格式良好且表达清晰的问题,那么你就是在自讨苦吃。
-
请注意,与 REST API 相关的术语“游标”与数据库查询游标完全不同。我怀疑这个问题,而且很多答案都将两者混为一谈。
标签: postgresql pagination