DynamoDB Stream 中序处理

cod*_*ons 4 amazon-dynamodb

假设我有以下带有条目的 DynamoDB 表:

ABC // 列

a1 b1 c1 // 条目 1

a1 b2 c2 // 条目 2

A是键(分区键),B是排序键(唯一),C是属性。

我想确保 DynamoDB 流可以保证 B 的有序处理。

如果按此顺序进行更改 - (注 C 更新了 3 次)

{a1, b1, c1} => {a1, b1, c2} => {a1, b1, c3}

DynamoDB Stream 能否保证排序?看起来可以保证对同一密钥的更新进行有序处理。对于此示例,那么将保留对 a1(键)的任何更新顺序?

Mik*_*scu 7

是的,排序会被保留,因为在 DynamoDB 中,对项目的所有更改都是使用项目键(无论是仅分区还是复合)进行的,而 DynamoDB Streams 保证对每个项目的所有突变按顺序交付一次。

文档

  • 每个流记录在流中只出现一次。

  • 对于 DynamoDB 表中修改的每个项目,流记录的显示顺序与项目的实际修改顺序相同。

  • 仅当您有单个消费者或以其他方式协调您的消费者时,订单处理才有意义,因此不确定您真正的问题是什么:DynamoDB 保证更改按顺序流式传输,并且恰好一次 - 您如何使用它们取决于您;也就是说,即使使用 lambda,并发性也是由分片数量控制的,而分片数量又由分区数量控制,因此实际上并不像您有多个 lambda 处理对同一项目的更改 (2认同)