QLDB中的分页

时间:2019-12-27 14:44:40

标签: amazon-qldb partiql

我注意到QLDB不支持实现基本分页所需的LIMITSKIP查询参数。

这会在将来得到支持吗,还是有其他方法可以在QLDB中实现分页?

1 个答案:

答案 0 :(得分:3)

当前不支持

LIMIT / SKIP。 QLDB专为数据摄取而构建。我们建议在另一个专用数据库中进行报告和分析。

让我们考虑一个具有两个用例的银行应用程序:

  1. 在帐户之间转移资金
  2. 提供月结单

第一个非常适合QLDB,在QLDB中,索引用于读取余额,然后很少文档被更新或创建。在OCC下,QLDB使得正确编写这些事务变得容易,并且性能应该非常好。例如,如果一个帐户有$ 50的余额,而两个竞争的交易试图扣除$ 50,则只有1个成功(另一个将不提交)。同时,其他交易将继续成功。除了简单,高效之外,您还可以通过QLDB哈希链和证明系统获得完整性。

第二个不合适。要计算对帐单,我们需要查找一个帐户的交易。但是,如果在执行查询时该帐户发生更改(也许有人刚给您寄了钱!)会发生什么?同样,在OCC下,我们将使事务失败,并且语句生成将需要重试。对于一家小型银行来说,这可能很好,但是我认为您可以看到发展的方向。 QLDB是专门为数据提取而构建的,您偏离它的构建目的越远,性能就越差。

这就引出了如何在另一个数据库中实际执行这些查询的问题。您可以使用S3导出或Kinesis数据流功能来获取数据。 S3导出更适合批量操作(许多分析数据库都喜欢Redshift等),而Streams更适合实时分析(例如使用ElasticSearch)。

相反,我不建议在第一个用例中使用Redshift或ElasticSearch,因为您将无法获得为OLTP用例设计的数据库(例如QLDB,DynamoDb,Aurora)所提供的性能,完整性或持久性。