问题
使用来自运动学数据源(流或流水线)的数据填充dynamodb表的推荐方法是什么?
当前工作流程
为什么
我想就此寻求一些建议,因为
答案 0 :(得分:0)
我的观点是,您的工作流程目前或多或少是正确的方式。我唯一要更改的是,我将使用Kinesis Streams代替Firehose。然后,您可以将流配置为Lambda事件源,并且可以配置批处理大小。这将大大降低您的Lambda成本,因为每个批次将有一个Lambda执行(例如,500条记录的大小),而不是每条记录执行一次Lambda。有关详细信息,请参见AWS文档(https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html)
我不确定将DynamoDB作为目标不提供服务的真正原因。我的猜测是; Kinesis不知道您内容的结构。 Kinesis的当前目的地或者具有某种机制来构造需要的传入数据,或者根本不关心对象结构(S3)。另一方面,DynamoDB需要用户做出一些决定。这些架构决策对于每个表(性能,成本,分区,访问模式等)都非常重要。哪个字段将是您的分区键,您将使用排序键吗?您会格式化任何字段吗?您如何确保主键值是唯一的?每个字段的类型是什么(字符串,十进制等)?我认为,由于Lambda具有灵活性,因此是最适合这些决策的机制。
有一些自动机制可以从数据本身推断模式(例如AWS Glue使用的方法),但是在DynamoDB情况下,这并不简单。