0

我正在创建一个使用 RDS 数据 API 连接到 AWS RDS 实例(Aurora Serverless/Postgres)的 REST API。请求流程:
Client -> API Gateway -> Lambda -> RDS Data API -> RDS

Lambda 将请求映射到通过数据 API 发送到 RDS 的 sql 语句。查询的结果(行)以 json 格式发送回客户端。

我所有的表都有一个索引的主键列。然而,这个主键的值并不总是递增 1,存在间隙。这些表最多可以包含数十亿行。

该解决方案对于较小的表很简单,但对于较大的表,由于数据 API 限制(1 MB 响应大小)和 Lambda 运行时限制(最多 15 分钟),必须实现某种分页。我已经阅读了实现分页的不同方法。唯一合适的方法似乎是基于游标的分页,因为它是唯一可以在不使用order by子句的情况下保证稳定结果集的方法。

但是我不能使用(服务器端)游标,因为当 Lambda 超时时,数据库连接以及游标都会关闭。

我可以使用包含开始值和结束值的 url 参数来过滤表的主键列,但是该列并不总是递增 1。因此,执行类似的操作https://website.com/table/users?start_idx=0&end_idx=100不一定会返回 100 条记录,这是不可取的。

我怎样才能以惯用的方式最好地解决这个问题?

4

0 回答 0