我注意到 QLDB 不支持实现基本分页所需的 LIMIT
或 SKIP
查询参数。
将来是否会支持此功能,或者是否有其他方法可以在 QLDB 中实现分页?
最佳答案
当前不支持限制/跳过。 QLDB 专为数据摄取而构建。我们建议在另一个专门构建的数据库中进行报告和分析。
让我们考虑一个具有 2 个用例的银行应用程序:
第一个非常适合 QLDB,其中使用索引读取余额,然后更新或创建很少的文档。在 OCC 下,QLDB 可以轻松正确地编写这些事务,并且性能应该非常好。例如,如果一个账户剩余 50 美元,并且两个相互竞争的交易试图扣除 50 美元,那么只有 1 个会成功(另一个将无法提交)。同时,其他交易将继续成功。除了简单和高性能之外,您还可以通过 QLDB 哈希链和证明系统获得完整性。
第二个不太合适。要计算报表,我们需要查找帐户的交易。但是,如果在我们进行查找时该帐户发生变化(也许有人刚刚向您发送了一些钱!),会发生什么情况?同样,在 OCC 下,我们将使事务失败并且语句生成将需要重试。对于一家小银行来说,这可能没问题,但我认为你可以看到这是怎么回事。 QLDB 专为数据摄取而构建,您偏离它的构建目的越远,性能就越差。
这就引出了如何在另一个数据库中实际执行这些查询的问题。您可以使用 S3 导出或 Kinesis Data Streaming 功能来获取数据。 S3 导出更适合批量操作(许多分析数据库更喜欢这种操作,例如 Redshift),而 Streams 更适合实时分析(例如使用 ElasticSearch)。
相反,我不建议在第一个用例中使用 Redshift 或 ElasticSearch,因为您将无法获得专为 OLTP 用例设计的数据库(例如 QLDB、DynamoDb、Aurora)所提供的性能、完整性或持久性。
关于amazon-qldb - QLDB 中的分页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59502337/