首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DynamoDB突变会被放置到哪个流碎片中?

DynamoDB突变会被放置到哪个流碎片中?
EN

Stack Overflow用户
提问于 2016-07-06 17:12:59
回答 1查看 459关注 0票数 2

我正在研究如何将DynamoDB复制到ElasticSearch (ES)中。为此,我们对logstash输入插件进行了评估,但发现了以下缺点:

  • 拉模式下的logstash不具有HA/故障转移功能。它成为一个用于复制的SPOF。
  • 由于我们不想对ES索引执行应用程序级别的联接,所以我们希望将多个表合并到一个ES文档中。插件没有为这个用例提供功能。

因此,我们正在评估以下两种方法

  1. Lambda读取DynamoDB流并通过SQS将它们推送到ES。
  2. 我们自己的DynamoDB流处理器取代AWS

现在来看实际的问题:排序在将数据从Dynamo流复制到ES中很重要,因为同一个实体可能有多个突变。从Streams/Lambda文档中可以看到,不同流碎片中的内容将由Lambda并发处理。

AWS没有记录(至少我还没有找到) DynamoDB突变是如何映射到流碎片的详细信息--不管是与表的哈希键有任何关联,还是某种装箱算法。

没有控制哪个流碎片,一个突变被映射到,并不提供开发人员控制流处理并行化的能力。上面的方法#1可以按顺序更新相同的ES文档。方法2可以通过串行处理来解决问题,但不允许并行化/复制的规模(甚至跨数据分区),因为碎片放置策略上没有契约。

对于如何进行扩展以及如何使复制具有抗故障能力,有什么想法吗?或者有人能说明突变是如何放置到dynamodb流碎片中的?

EN

回答 1

Stack Overflow用户

发布于 2016-10-16 03:02:36

来自AWS (或更多经验)的人应该澄清,但我的理解是,每个Dynamo分区最初映射到一个碎片。当这个碎片填满时,将创建子碎片。每个碎片及其子程序由一个KCL工作人员依次处理。

因为一个项目的分区键用于决定它的分解碎片,同一项的突变将落在同一个碎片(或其子部分)中。一个碎片及其子程序保证由一个KCL工人按正确的顺序处理。每个KCL工作人员还映射到单个lambda实例,因此同一项将不会因不同的突变而被并行处理。

虽然Dynamo流与Kinesis不同,但阅读Kinesis文档有助于在拼图中找到一些片段。还有一个有趣的博客,里面有非常有用的信息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38229846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档