【问题标题】:Azure SQL DWH Design For Micro-batch Update用于微批量更新的 Azure SQL DWH 设计
【发布时间】:2019-03-25 02:51:49
【问题描述】:

我只需要关于使用 Azure SQl DWH 进行数据库设计的意见

这是当前场景:

我们正在使用 Azure SQL DWH 构建一个 DWH 系统,其来源来自 Timeseries DB,每 15 秒捕获一次传感器相关信息。现在我们有每 2 分钟运行一次的数据块集群,它聚合这些数据并将其存储在我们的 Fact 表中。 对于所有事实表,我保留了索引类型:具有循环分布的聚集列存储索引

同样,我们的维度表是从服务总线主题中填充的。这些主题接收所有插入/更新/删除记录,并在 Azure Web 作业的帮助下捕获这些记录,这些作业不断汇集这些主题并将必要的条目添加到我们的维度表中。

对于所有维度表,我保留了索引类型:Clustered Index(For business key) with Round Robin distribution..

你认为这是 Azure SQl DWH 的一个很好的设计,其中记录在目标中以微批量方式更新。还有一些 Power BI 报告在 DWH 中的这些表上运行,使用 Direct Query Mode 进行近乎实时的分析。

请建议是否有任何替代方法

【问题讨论】:

  • 这个问题不应该被否决。它包含一个关于产品最佳使用的合法问题。这个问题可能对其他人有用。

标签: azure azure-sqldw


【解决方案1】:

通过将 Fact 分布更改为 HASH() 并将 Dimension 分布更改为 Replicate,您将获得更好的性能。

轮询表将强制对后续查询进行重新分配,复制将避免连接前的跨节点数据混洗。

【讨论】:

  • 感谢您的宝贵反馈,我将对桌子设计进行更改。因此,就数据负载和实时报告要求而言,这种变化就足够了。我需要扩展 Azure SQL DWH DWU 吗?
  • 如果不了解您的配置和数据,我无法回答这个问题……尤其是因为我不知道您使用的是哪个 DWU :)
  • 重读问题,您如何处理来自 Databricks 和 Web 作业的数据移动?确保您使用的是 Databricks 中的数据仓库连接器(不是 SQL Server 连接器),并且不要从您的 Web 作业中运行单行插入/更新/删除语句。在这两种情况下,将数据处理为微批次而不是单行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 1970-01-01
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
相关资源
最近更新 更多