【问题标题】:Azure Stream Analytics to Azure Sql Database and PerformanceAzure 流分析到 Azure Sql 数据库和性能
【发布时间】:2021-12-14 08:29:09
【问题描述】:

首先,我是流分析和处理的初学者。

我正在探索 Azure 流分析,遇到了各种设计,大部分时间流程都是这样的。

数据流 (Azure Eventhub) -> 配置为 ASA 的输入 -> 一些查询 -> 输出到目标,如 Sql Server、Power BI、事件中心。

现在假设现在有一分钟内有 10000 个事件,ASA 正在借助一些窗口功能(例如 Tumbling 窗口等)对其进行处理。然后输出到 Azure Sql 数据库。现在在这里如果我们看一下Sql Server中可能有很多插入并且它包含太多的数据作为数据进来。

  • 这是使用 SQL Server 的好解决方案吗?如果一天中有太多的事件,那么您不认为它会成为性能瓶颈。

  • 任何建议/指导或示例将不胜感激。

【问题讨论】:

  • 你存储什么样的数据,最终目标是什么?如果它不是严格的关系数据,并且不需要连接到现有 SQL 数据库中的其他数据,那么我会说 Cosmos DB 更适合您想要实现的目标并且通常用于流场景 + IoT 事件摄取。有一些用例here 以及关系数据库和 NoSQL 数据库之间的比较here
  • 我还强烈建议您查看Azure Architecture Center,它有很多针对各种问题的不同解决方案的示例。喜欢thisthisThis module 也可能有帮助。
  • @MattStannett 感谢您的评论。我已经经历了其中的一些并明白了这一点。我的问题是,如果每秒有 1000 个事件,那么每天基本的事件过程太多,它会产生那么多的输出,并且如果有很多用户看到该报告,那么再次查询这些数据库就会成为问题。
  • 弗洛里安在下面提供了一个非常棒的答案——一定要看看。关于查询对数据库的潜在影响的问题,您有几个选择: 1. 确保为有问题的表添加良好的索引,并且只允许命中这些索引的查询。 2. 分离您的运营和报告数据存储。数据可以登陆操作数据存储,然后通过报告同步,这样运行报告不会影响摄取。 3. 您可能需要查看数据聚合或减少用户可以获取的数据窗口。

标签: azure azure-sql-database azure-stream-analytics


【解决方案1】:

是的,Azure SQL DB 可以毫无问题地摄取这么多数据(实际上每秒可以达到数百万行)。这是您可能会感兴趣的学习路径: https://docs.microsoft.com/en-us/learn/modules/deploy-iot-solution-azure-sql-database/2-analyze-solution-architecture

【讨论】:

  • 虽然我接受了下面的一个答案,同时我想说你提供的建议也很好。谢谢。
【解决方案2】:

这里有多个方面需要考虑。

ASA 可用于逐个事件处理(用于类似 ETL 的实时摄取),但它真正的亮点在于 aggregationstime windowing(用于实时分析和报告)。这些操作可以显着减少插入数据库的数据量。

使用ASA降低输出量

如果您的用例符合这些要求,您可以从每分钟 10000 个事件(您的设备组中的所有设备)增加到每小时 5 个(5 个工厂每小时的平均指标)。如果特定指标超过阈值超过 5 秒(预计每 30 秒 1 个警报),您始终可以添加第二个输出,该输出将生成警报。

因此,任何规模讨论都需要在业务案例的背景下进行。对于上述情况,您可能需要一个中等规模的作业来处理每分钟 10K 事件的数据,但任何入门级 SKU 都适用于数据库。

SQL 输出可扩展

现在假设您的用例需要每分钟在 SQL 数据库中插入 10000 条记录。

This article 讨论了针对 Azure SQL 的性能影响。在那里您会看到,如果目标表按照输入和查询进行分区,并且您处于批量插入批量大小的最佳位置,它应该可以很好地处理负载。在这里,它不是能力问题,而是性能/价格问题。在大多数情况下,您可以扩展数据库直到它处理负载,但它可能会变得过于昂贵而无法运行。

另一种方法是定位Synapse SQL Pool(以前的SQL DWH),它可以轻松扩展到200MB/秒。它是一个分布式系统,和 ASA 一样,所以它会更优雅地扩展,并具有更好的性价比(但起点更高,需要考虑distribution)。

其他输出

正如上面一位评论者指出的那样,如果您不需要 SQL 数据库的关系方面,您可能想要探索切换到 Cosmos DB output。 Cosmos DB 是一个分布式数据库(可与 ASA 很好地扩展),存储文档而不是行。这里的主要好处是您不会在写入该数据库时遇到数据类型问题,它们不是强制执行的,与 SQL 数据库相反。

但这附带了一系列您需要了解的其他方面,因此,如果您已经对 SQL 数据库感到满意,那么您可能首先要坚持使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    相关资源
    最近更新 更多