Amazon dynamodb 在收到DynamoDB streams事件后立即查询GSI-可靠吗?

Amazon dynamodb 在收到DynamoDB streams事件后立即查询GSI-可靠吗?,amazon-dynamodb,Amazon Dynamodb,从下面的引文中,我很难理解事务到全局二级索引(GSI)、流和备份的传播是并行进行的,还是顺序进行的 事务完成后,在该事务中所做的更改将传播到全局辅助索引(GSI)、流和备份 因此我的问题是:dynamodb流事件是在所有gsi都被重建(复制)之后才引发的,还是这样的陈述是错误的? 换句话说,如果我在收到其INSERTstream事件后立即使用相应的键查询GSI,我是否可以确保我可以在某些GSI中找到项目的投影 为了提供一些上下文,我正在研究一个过程的概念,该过程可以跨越多个lambda,并且每

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

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

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

为了提供一些上下文,我正在研究一个过程的概念,该过程可以跨越多个lambda,并且每个lambda只执行一个事务。在开始该过程之前,我确切地知道我应该期望多少事务,并且我在dynamo streams和原子计数器的帮助下对它们进行计数,这样我可以确定过程何时完成(编辑请不要将我重定向到使用阶跃函数,我知道它们的巨大潜力,但我的堆栈将爆炸:))

然而,如果AWS的上述引用不能保证在发出dynamo stream事件之前进行GSI复制,我就有点糊涂了,因为我不能立即启动依赖插入数据的其他过程,而是希望通过GSI查询它

谢谢


编辑:经过有益的讨论和进一步的挖掘,我发现这为我提供了进一步的理解,特别是使用DynamoDB Streams的
最佳实践部分

是的,这是可能的。GSI和流是并行写入的,但也是异步写入的。时间会有所不同,但两者通常都在数十到数百毫秒之间。作为设计目标,传播应在1s内发生,但存在异常值。

是的,这是可能的。GSI和流是并行写入的,但也是异步写入的。时间会有所不同,但两者通常都在数十到数百毫秒之间。作为设计目标,传播应在1s内发生,但存在异常值。

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

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

谢谢!我正在编写一个低代码的解决方案,供开发人员进行实验,然后优化他们的模型。它涉及服务总线/模式匹配/用于调用原子/幂等元/事务lambda,但其核心是关于Dynamo模型。你的演讲激发了我的灵感,我希望有一天你能看看我所做的决定。该文件是开源的,但没有合适的文档,仍然有点混乱。是MonoRepoB提供的dynamodb包吗?那么我想,考虑到并行程序分散到streams/GSI,我应该确保在某些其他程序被充分及时退回之后启动的“程序”,可能是通过将延迟事件发送到处理器lambda的SQSThanks Rick!我正在编写一个低代码的解决方案,供开发人员进行实验,然后优化他们的模型。它涉及服务总线/模式匹配/用于调用原子/幂等元/事务lambda,但其核心是关于Dynamo模型。你的演讲激发了我的灵感,我希望有一天你能看看我所做的决定。该文件是开源的,但没有合适的文档,仍然有点混乱。是MonoRepoB的dynamodb包吗?那么,我想,考虑到这一并行向streams/GSI展开,我应该确保在其他一些过程之后启动的“过程”能够及时得到充分的备份,可能是通过将延迟事件发送到处理器lambda的SQS中