来自运动流/壁炉的人口动态表

问题描述 投票:4回答:1

问题

用来自运动学数据源(流或流水线)的数据填充dynamodb表的推荐方法是什么?

当前工作流程

  • 数据被提取到运动型水带中
  • lambda会在写入运动运动软管的每个记录上触发,并将数据发送到dynamodb

为什么

我想对此获得一些建议,因为

  • 我不确定这种方法是否创造了不必要的工作。也就是说,我需要为lambda编写和维护代码
  • 我看到可以将redshift或s3之类的东西配置为kinesis数据源的使用者。为什么我不能用dynamodb做同样的事情?是否有一个原因?其他人没有使用这种工作流程吗?
amazon-web-services amazon-dynamodb amazon-kinesis
1个回答
0
投票

我的看法是,您的工作流程目前或多或少是正确的方式。我唯一要更改的是,我将使用Kinesis Streams代替Firehose。然后,您可以将流配置为Lambda事件源,并且可以配置批量大小。这将大大降低您的Lambda成本,因为您每批将有一个Lambda执行(而不是每条记录执行一次Lambda)(例如,500条记录的大小)。有关详细信息,请参见AWS文档(https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html

我不确定将DynamoDB不提供为目的地的真正原因。我的猜测是; Kinesis不知道您内容的结构。 Kinesis的当前目的地或者具有某种机制来构造需要的传入数据,或者根本不关心对象结构(S3)。另一方面,DynamoDB需要用户做出一些决定。这些架构决策对于每个表(性能,成本,分区,访问模式等)都非常重要。哪个字段将是您的分区键,您将使用排序键吗?您会格式化任何字段吗?您如何确保主键值是唯一的?每个字段的类型是什么(字符串,十进制等)?我认为,由于Lambda具有灵活性,因此是最适合这些决策的机制。

[有一些自动机制可以从数据本身推断模式(例如AWS Glue使用的方法,但是在DynamoDB的情况下,这并不简单。

© www.soinside.com 2019 - 2024. All rights reserved.