【问题标题】:Multi-tenant IoT application with Azure使用 Azure 的多租户 IoT 应用程序
【发布时间】:2021-11-27 10:46:15
【问题描述】:

我正在构建一个 Azure IoT 中心应用程序。我有几个客户,每个客户都有一套设备。您认为所有这些客户都应该连接到同一个集线器还是不同的集线器?

我想通过 azure 流分析填充多租户数据库(单个数据库、多个模式)。这个想法是使用一项按客户划分数据并将其保存在我的数据库上的特定模式(与特定客户关联的模式)的表中的作业。有可能做到这一点,或者保持客户数据分离的唯一方法是拥有多个数据库(而不是拥有一个数据库和多个模式)?

【问题讨论】:

    标签: azure multi-tenant azure-iot-hub azure-stream-analytics


    【解决方案1】:

    我正在构建一个 Azure IoT 中心应用程序。我有几个客户, 每个都有一套设备。你认为所有这些客户都应该是 连接到同一个集线器还是不同的集线器?

    这实际上取决于处理的数据以及您的实际要求。如果与其他客户共享 IoT 中心资源详细信息不成问题,则可以使用相同的 IoT 中心。否则,请选择单独的 IoT 中心。

    我想填充一个多租户数据库(单个数据库,多个 架构)通过 azure 流分析。这个想法是使用一个工作 按客户对数据进行分区并将其保存在特定的表中 我的数据库上的架构(与特定客户关联的架构)。它是 有可能做到这一点,或者将客户数据分开的唯一方法是 拥有多个数据库(而不是拥有一个数据库和多个架构)?

    Azure 流分析中的 SQL 输出支持并行写入作为选项。此选项允许fully parallel 作业拓扑,其中多个输出分区并行写入目标表。但是,在 Azure 流分析中启用此选项可能不足以实现更高的吞吐量,因为它在很大程度上取决于您的数据库配置和表架构。索引、集群键、索引填充因子和压缩的选择会影响加载表的时间。有关如何根据内部基准优化数据库以提高查询和加载性能的更多信息,请参阅SQL Database performance guidance。并行写入 SQL 数据库时,不保证写入顺序。

    更多详情请见Increase throughput performance to Azure SQL Database from Azure Stream Analytics

    【讨论】:

    • 感谢您的回复。除非通过将使用 db azure 的应用程序,否则客户将无法访问数据。我想确保来自一组设备(客户 A)的数据流通过流分析进入我的数据库架构 A 中的表。同样,对于客户 B(在我的数据库的模式 B 中,obv)。该表在每个模式中都具有相同的结构,客户看不到彼此的数据(这是通过我的应用程序执行的模式选择机制完成的)
    • 举个例子,我想了解在转换查询中是否可以做这样的事情:select * into [A]。 [table] 来自输入 where customer = 'A';选择 * 进入 [B]。 [table] 来自输入 where customer = 'B'; (其中 [A] 是我的数据库架构的名称,[table] 是表的名称)我也可以将每个语句作为特定流的一部分。
    • 您当然可以这样做,但请注意,您需要在 ASA 中为每个模式/表组合创建一个输出(因此在您的示例中为 2,一个用于 A,一个用于 B)。在您的情况下,这可能无法很好地扩展(而且我们对每个作业的输出数量有硬性限制)。
    • 我会将所有数据从 ASA 输出到 SQL 中的单个登陆表,然后在 SQL 中分发数据。如果您的成本模型允许,另一种方法是为每个客户指定一个 ASA 作业,并投资于发布管道,以便您可以尽可能轻松地配置这些作业。
    • 非常感谢您的回答 :) 所以,如果我理解正确,最好的解决方案是为每个客户单独工作(因此,更多的客户,更多的工作)。另一个成本较低的有效解决方案是使用单个 ASA 作业将数据注入到单个表中,然后使用 sql 将这些数据划分为正确的架构。你会以不同的方式来做吗?
    猜你喜欢
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 2018-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    相关资源
    最近更新 更多