从下面的引用中,我很难理解事务到全局二级索引(GSI)、流和备份的传播是并行发生的,还是顺序发生的。
事务完成后,该事务中所做的更改将传播到全局二级索引 (GSI)、流和备份。
https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html
因此我的问题是:仅在重建(复制)所有 GSI后才会引发 dynamodb 流事件还是这样的声明是错误的?换句话说,如果我在收到其流事件后立即使用相应的键查询 GSI,我能否确定可以在某个 GSI 中找到某个项目的投影?INSERT
为了提供一些背景信息 - 我正在研究一个可以跨越多个 lambda 的过程的概念,并且每个 lambda 只执行一个事务。在开始该过程之前,我确切地知道应该预期有多少事务,并且我在发电机流和原子计数器的帮助下对它们进行计数,这样我可以确定过程何时完成(编辑请不要将我重定向到使用步骤函数,我知道它们的巨大潜力,但我的堆栈会爆炸:))
但是,如果上面来自 AWS 的引用不能保证在发出发电机流事件之前进行 GSI 复制,那么我就有点搞砸了,因为我无法立即启动依赖于插入的数据但想通过 GSI 查询数据的其他程序...
谢谢!
编辑:经过有益的讨论和更多的挖掘,我发现这篇aws 文章为我提供了进一步的理解,特别是该Best practices for working with DynamoDB Streams部分
流事件和 GSI 复制同时发生。无法保证其中一个会先于另一个发生。通过正确配置的 GSI,如果没有受到热分区的任何背压,复制将在 10 毫秒内完成。流事件处理通常发生在不到 1 秒的时间内。如果数据模型设计良好,GSI 复制很可能会在处理 Stream 事件之前完成,但不能保证一定会出现这种情况。
| 归档时间: |
|
| 查看次数: |
983 次 |
| 最近记录: |