首页 > 解决方案 > 在收到 DynamoDB 流事件后立即查询 GSI - 它可靠吗?

问题描述

从下面的引用中,我很难理解事务到全局二级索引 (GSI)、流和备份的传播是并行发生的,还是顺序发生的。

事务完成后,该事务中所做的更改将传播到全局二级索引 (GSI)、流和备份。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/transaction-apis.html

因此我的问题是:只有所有 GSI 都被重建(复制)之后才会引发 dynamodb 流事件,还是这样的陈述是错误的?换句话说,如果我使用相应的键查询 GSI,我可以确定我可以在某个 GSI 中找到项目的投影,​​在我收到它的流事件之后立即INSERT

给出一些上下文 - 我正在研究一个可以跨越多个 lambda的过程的概念,每个 lambda 只做一个事务。在开始程序之前,我确切地知道我应该期待多少事务,并且我在发电机流和原子计数器的帮助下计算它们,这样我可以确定程序何时完成(编辑请不要将我重定向到使用步骤函数,我知道它们的巨大潜力,但我的堆栈会爆炸 :))

但是,如果 AWS 的上述引用在发出 dynamo 流事件之前不能保证 GSI 复制,我有点搞砸了,因为我不能立即启动其他依赖于插入的数据但想通过 GSI 查询它的程序...

谢谢!

编辑:经过有益的讨论和更多的挖掘,我发现这篇aws文章让我有了进一步的理解,特别是该Best practices for working with DynamoDB Streams部分

标签: amazon-dynamodb

解决方案


流事件和 GSI 复制同时发生。不能保证一个会在另一个之前发生。正确配置的 GSI 不会受到来自热分区的任何背压,复制将在 10 毫秒内发生。流事件处理通常在不到 1 秒的时间内发生。使用设计良好的数据模型,GSI 复制很可能会在处理 Stream 事件之前完成,但不能保证会出现这种情况。


推荐阅读