在收到 DynamoDB 流事件后立即查询 GSI - 它可靠吗?
Querying a GSI immediately after DynamoDB streams event received - is it reliable?
根据下面的引述,我很难理解事务向全局二级索引 (GSI)、流和备份 的传播是并行发生的,还是顺序发生的。
Once a transaction completes, the changes made within that transaction are propagated to global secondary indexes (GSIs), streams, and backups.
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html
因此我的问题:dynamodb 流事件是否仅在 所有 GSI 重建(复制)后引发,或者这样的陈述是错误的?
换句话说,如果我在收到其 INSERT
的流事件后立即使用相应的键查询 GSI,我是否可以确定我可以在某些 GSI 中找到某个项目的投影
为了提供一些背景信息 - 我正在研究一个可以跨越多个 lambda 的 过程 的概念,并且每个 lambda 只做一个事务。在开始 过程 之前,我确切地知道我应该期望有多少事务,并且我在 dynamo 流和原子计数器的帮助下计算它们,这样我可以确定什么时候 程序已完成(编辑请不要将我重定向到使用步骤函数,我知道它们的巨大潜力但我的堆栈会爆炸:))
但是,如果上面引用的 AWS 不能保证在发出 dynamo 流事件之前进行 GSI 复制,我有点搞砸了,因为我不能立即启动依赖于插入数据但想要查询的其他程序通过 GSI...
谢谢!
edit:经过有益的讨论和更多的挖掘,我发现这个 aws article 让我有了进一步的理解,特别是 Best practices for working with DynamoDB Streams
部分
是的,这是可能的。 GSI 和 Streams 是并行编写的,但也是异步编写的。时间各不相同,但两者通常都在几十到几百毫秒的数量级。作为设计目标,传播应在 1 秒内发生,但存在异常值。
流事件和 GSI 复制同时发生。不能保证一个会先于另一个发生。通过正确配置的 GSI,如果没有遇到来自热分区的任何背压,复制将在不到 10 毫秒的时间内发生。流事件处理通常发生在不到 1 秒的时间内。使用设计良好的数据模型,GSI 复制很可能会在处理 Stream 事件之前完成,但不能保证会是这种情况。
根据下面的引述,我很难理解事务向全局二级索引 (GSI)、流和备份 的传播是并行发生的,还是顺序发生的。
Once a transaction completes, the changes made within that transaction are propagated to global secondary indexes (GSIs), streams, and backups.
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html
因此我的问题:dynamodb 流事件是否仅在 所有 GSI 重建(复制)后引发,或者这样的陈述是错误的?
换句话说,如果我在收到其 INSERT
为了提供一些背景信息 - 我正在研究一个可以跨越多个 lambda 的 过程 的概念,并且每个 lambda 只做一个事务。在开始 过程 之前,我确切地知道我应该期望有多少事务,并且我在 dynamo 流和原子计数器的帮助下计算它们,这样我可以确定什么时候 程序已完成(编辑请不要将我重定向到使用步骤函数,我知道它们的巨大潜力但我的堆栈会爆炸:))
但是,如果上面引用的 AWS 不能保证在发出 dynamo 流事件之前进行 GSI 复制,我有点搞砸了,因为我不能立即启动依赖于插入数据但想要查询的其他程序通过 GSI...
谢谢!
edit:经过有益的讨论和更多的挖掘,我发现这个 aws article 让我有了进一步的理解,特别是 Best practices for working with DynamoDB Streams
部分
是的,这是可能的。 GSI 和 Streams 是并行编写的,但也是异步编写的。时间各不相同,但两者通常都在几十到几百毫秒的数量级。作为设计目标,传播应在 1 秒内发生,但存在异常值。
流事件和 GSI 复制同时发生。不能保证一个会先于另一个发生。通过正确配置的 GSI,如果没有遇到来自热分区的任何背压,复制将在不到 10 毫秒的时间内发生。流事件处理通常发生在不到 1 秒的时间内。使用设计良好的数据模型,GSI 复制很可能会在处理 Stream 事件之前完成,但不能保证会是这种情况。