2

我在这里有几个相关的问题。

  1. 关于流的 DynamoDB 文档说:

一个分片可能会因其父表上的高水平写入活动而分裂,以便应用程序可以并行处理来自多个分片的记录。

我的理解是,当一个分片分成两个子分片时,DynamoDB 停止写入父分片并开始以循环方式写入两个子分片。在这种情况下,我如何确定记录的时间顺序?我是否必须在应用层中读取两个子分片并按记录序列号对记录进行排序?如果第二个孩子在某个时候分裂成两个孙子碎片怎么办?在按顺序获取记录之前,我现在是否必须同时读取子分片和孙分片?

  1. 上述文件说:

由于分片具有沿袭(父分片和子分片),因此应用程序必须始终在处理子分片之前处理父分片。

如果您查看文档中提供的Low-Level DynamoDB Streams API 示例,在// Get the shards in the stream注释下,您会注意到代码只是获取给定流的所有分片,然后迭代列表分片而不用担心父子关系。

这是否意味着如果我想按时间顺序获取记录列表,我必须从给定流中读取所有记录,然后按应用层中的记录序列号对它们进行排序?

  1. 尝试从 DynamoDB 流中获取按时间顺序排列的记录顺序是不是一个坏主意?请不要问我要解决的具体问题。我在这里进行理论分析。

更新:

当我在考虑处理过去 24 小时的流记录时,上面的问题出现了。但是为什么要首先处理过去 24 小时的流数据呢?

我认为流首先是为实时表更改处理而构建的。通过触发 Lambda 函数实时处理流记录更有意义。

我想到的过去 24 小时流记录的唯一用例是某种流记录处理故障恢复(对于很快检测到的故障)。

奖金问题:

  1. 当您想要挖掘过去 24 小时的 DynamoDB 流时,您能想到用例吗?
4

0 回答 0