Eag*_*eak 10 amazon-web-services amazon-dynamodb aws-lambda amazon-dynamodb-streams
我的目标是确保DynamoDB流发布的记录以"正确"的顺序处理.我的表包含客户的事件.哈希键是事件ID,范围键是时间戳."正确"订单意味着按顺序处理同一客户ID的事件.可以并行处理不同的客户ID.
我正在通过Lambda函数使用流.每个碎片自动生成消费者.因此,如果运行时决定对流进行分片,则消耗并行发生(如果我做对了)并且我冒着在CustomerCreated之前处理CustomerAddressChanged事件的风险(例如).
该文档暗示,有没有办法能够影响分片.但他们并没有这么明确地说.有没有办法,例如,通过使用客户ID和时间戳组合范围键?
我刚刚收到 AWS 支持人员的回复。这似乎证实了@EagleBeak关于分区映射到分片的假设。或者按照我的理解,分区映射到分片树。
我的问题是关于由于 TTL 过期而导致的 REMOVE 事件,但它也适用于所有其他类型的操作。
- 是否为每个主分区键创建一个分片?然后,如果同一分区中有太多项目,分片会被分割成子分片吗?
DynamoDB 表中的每个分区都会创建一个分片。如果由于同一分区中的项目太多而需要分区拆分,则分片也会拆分为子分片。分片可能会因其父表上的高水平写入活动而进行拆分,以便应用程序可以并行处理来自多个分片的记录。
- 如果删除的 100 个项目都具有相同的分区键,它们是否会被放入一个分片中?
假设所有 100 个项目具有相同的分区键值(但排序键值不同),它们将存储在同一分区上。因此,它们将从同一分区中删除并放入同一分片中。
- 既然“发送到您的AWS Lambda函数的记录是严格序列化的”,那么在TTL的情况下,这种序列化是如何工作的呢?分片内的顺序是通过分区/排序键、TTL 过期等建立的吗?
DynamoDB Streams 捕获 DynamoDB 表中按时间顺序排列的项目级修改序列。这个按时间排序的序列在每个分片级别上保留。换句话说,分片内的顺序是根据创建、更新或删除项目的顺序建立的。
归档时间: |
|
查看次数: |
6085 次 |
最近记录: |