我有这样的管道 -
表 1(发电机 db) - > aws lambda - > 表 2(发电机 db)
因此,只要表 1 中有任何更新 hapeens,就会触发 lambda。所以 lambda 基本上是从表 1 中批量读取(1000 条记录),然后执行批量计算以得出表 2 中需要更新的记录列表。表 2 基本上维护了表 1 中发生的某些事件的计数。
所以问题是如果我们两次发送同一批记录,那么它会将表 2 中的计数增加两次。
为什么我认为这是在一个 lambda 函数中断期间(运行的 lambda 数量与 dynamo db 中的分区数量成 1:1 关系),而它已经执行了一些写入操作,它将重新发送最后一批读。
为了避免这种情况,一种方法可以是存储我们已经计算过的记录的序列号并将其存储在表 2 中。所以当我们更新时,我们可以检查它是否已经计算过。但是我们需要保持该列表的大小,否则我们将遇到性能问题。但它应该是多大的尺寸是个问题。
处理此类问题的写入方法应该是什么?