【问题标题】:Seperating data sent by iot device before storing in aws dynamodb?在存储到aws dynamodb之前分离iot设备发送的数据?
【发布时间】:2023-03-24 20:26:02
【问题描述】:

我尝试实现将物联网数据存储在 aws dynamodb 中的特定功能。 设备将发送的 JSON 数据的结构是这样的:

{'deviceid':123,'time':[t1,t2,t3,t4,t5],'voltage':[v1,v2,v3,v4,v5]}

每个电压值都对应它的时间值。我希望它以这种格式存储在 dynamodb 中

Device_ID Time Voltage
123 t1 v1
123 t2 v2
123 t3 v3
123 t4 v4
123 t5 v5

我将使用 device_id 和 time 作为我的主键和排序键。一点帮助将不胜感激!

【问题讨论】:

  • 设备传输到物联网核心了吗?您如何/在哪里接收这些数据?
  • 流程的哪一部分需要帮助?解析 JSON?连接到 DDB?
  • 你能提供你想要满足的访问模式吗?这将有助于充分理解您要在此处使用的数据建模。
  • @RodrigoM 我目前正在测试该方法。是的,设备会将数据发送到 iot 核心,它将以我在问题中提到的格式发送数据。我确实相信我可以从 iot 规则中调用 aws lambda,然后使用 labmda 来分离数据。
  • @SethGeoghegan 解析 JSON。

标签: amazon-web-services aws-lambda amazon-dynamodb amazon-kinesis aws-iot


【解决方案1】:

Lambda 最适合这里。读取 lambda 中的 JSON 数据,并像您一样将其保存在 DynamoDB 中。纯 JSON 处理和 DynamoDb api 调用应该足够好

【讨论】:

    【解决方案2】:

    考虑到您正在从 IoT 设备收集数据,并且当前使用 dynamodb 的设置运行良好。但您也应该考虑其他选项,例如 Kinesis Firehose/Streams,以兼顾成本效益和性能。

    假设您将有大量来自设备的数据点,这将导致大量数据。 Dynamodb 是性能良好的 nosql 数据库,但从长远来看,它可能是相当昂贵的解决方案。尤其是在 Dynamodb 中写入非常昂贵,扫描查询也是如此。

    另一种设计可能是:

    IoT Core -> Kinesis Firehose(+ record transformation lambda) -> S3 buckets
    

    您可以将事件发送到 Kinesis Firehose。由于您想将记录拆分为多条记录,因此您可以实现一个 lambda 函数并在 firehose 转换中调用它。您可以将目标定义为 S3 目标,并选择数据格式为 parquet/ORC 和压缩技术。

    【讨论】:

      猜你喜欢
      • 2022-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多