代码之家  ›  专栏  ›  技术社区  ›  Wouter van Koppen

从物联网中心到azure sql数据库中的多个表

  •  0
  • Wouter van Koppen  · 技术社区  · 7 年前

    我有一个IoT集线器,设备将传感器数据推送到它,并存储在一个SQL数据库中。通过流分析工作,这似乎很容易做到。

    然而,棘手的部分如下。我正在推送的数据不是标准化的,而且由于我使用的是sql数据库,所以我希望在多个表之间构造它。对于流分析来说,这似乎不是一项容易的任务。

    这是我推送到物联网中心的有效载荷的一个例子:

    {
        "timestamp" : "2019-01-10 12:00",
        "section" : 1,
        "measurements" : 
        {
            "temperature" : 28.7,
            "height" : 280,
            "ec" : 6.8
        },
        "pictures" : {
            "101_a.jpg",
            "102_b.jpg",
            "103_c.jpg"
        }
    }
    

    我的数据库有一个表 测量 , 测量值 图片 . 我想将时间戳和节存储在 测量 记录温度、高度和EC 测量值 记录和图片 图片 表。 填充一个表很容易,但是要填充第二个表,我需要生成上一条记录的自动增量id,以保持关系的完整性。

    流分析真的能做到吗?如果不行,我该怎么做?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Alexander Schmidt VPP    7 年前

    你不应该尝试流分析(SA)有几个原因。它不是为这样的工作负载而设计的,因为否则sa将无法执行它的工作。它只是根据输入数据向一个或多个接收器发送数据。

    我建议将数据传递给能够在输出端执行逻辑的组件。有一些选择。两个例子可能是:

    • Azure Function (通过指向IoT集线器内置端点的服务总线触发器,如前所述 here )
    • 基于事件网格的触发器,该触发器基于您将物联网数据写入的存储(因此您可以再次使用azure功能,但允许它由存储帐户中的事件触发)

    此解决方案还附带了一个价格,即每个传入的数据包都将调用一个逻辑单元,您必须另外为此支付费用。请注意,azure功能上有一些计费选项,这些选项将不依赖于调用的数量,而是在更类似于应用服务的模型中为您提供逻辑。

    如果要处理大量数据,可以考虑使用 Data Lake Storage Account 结合 Data Lake Analytics 相反。后者可以收集、汇总和分发您的传入数据到不同的数据存储。

        2
  •  0
  •   Wouter van Koppen    6 年前

    最后我得到了一个带有物联网中心触发器的azure函数。该函数使用ef core将json消息存储在sql数据库中,分布在多个表上。我对这种方法有点不情愿,因为它引入了额外的逻辑,我希望为此付出额外的代价。

    事实似乎恰恰相反。对于azure函数,前40万gb/s的执行和100万次执行是免费的。此外,该解决方案提供了额外的灵活性和控制,因为单表限制不再适用。

    Azure function costs