我正在通过 HTTP 制作一个 API,它通过分页从 PostgreSQL 中获取许多行。在一般情况下,我通常通过 naive OFFET
/LIMIT
子句来实现这样的分页。但是,在这种情况下有一些特殊要求:
- 有很多行,所以我相信用户无法到达终点(想象一下 Twitter 时间线)。
- 页面不必是随机访问的,而只是顺序访问。
- API 将返回一个 URL,其中包含指向连续块页面的光标标记。
- 光标令牌不必永久存在,而是存在一段时间。
- 它的排序经常波动(如 Reddit 排名),但连续游标应保持其一致的排序。
我怎样才能完成使命?我准备为它更改我的整个数据库架构!