数据库中的暂存表与存储区域

Staging tables in DB vs storage area

通常在本地 SQL 服务器上通过 SSIS 的 ETL 工作流程,我们将数据从任何地方加载到临时表中,然后将验证和转换应用到 load/merge 它们到下游数据仓库表中。

我的问题是我们是否应该在 Azure 上做类似的事情,我们在 azure SQL 数据库中设置了暂存表和下游表,或者使用 azure 存储区域作为暂存区并将数据从那里移动到最终下游通过 ADF 的表格。

尽管看起来很疯狂,但我们也有一个建议,即拥有单独的登台数据库和下游数据库,我们使用 ADF 在它们之间移动。

数据移动管道有不同的模型,没有一个是完美的。我将对我看到的常见模式做一些评论,以帮助您对您的应用程序做出决定。

对于您尝试暂存数据和创建维度的许多数据仓库,通常有一个过程,您将原始源数据作为原始数据加载到其他 database/tables,然后将其处理到您想要插入事实和维度 tables 的格式。这个过程很复杂,因为你可能有数据迟到或数据在晚些时候得到纠正,所以这些系统通常设计为在目标事实 tables 上使用分区 tables 以允许重新处理一个分区的数据(例如一天),而不必重新处理整个事实 table。此外,如果数据本身的形式与您希望在 DW 中表示的方式相去甚远,则该暂存 table 上的转换过程可能会很密集。通常在本地系统中,这些在单独的数据库中处理(可能在同一 SQL 服务器上)以将其与生产系统隔离开来。此外,有时这些暂存 table 是从原始源数据(CSV 文件或类似文件)重新创建 table 的情况,因此它不是该源的记录存储 material.这允许您考虑在该数据库上使用简单恢复模式(与完全恢复相比,它减少了日志 IO 要求和恢复时间)。虽然不是每个 DW 都对已处理的 DW 数据使用完全恢复模式(有些会双重加载到第二台机器,因为管道在那里),使用完全恢复和物理日志复制(AlwaysOn 可用性组)的能力 SQL 服务器使您可以灵活地在世界不同地区创建数据库的灾难恢复副本。 (如果愿意,您也可以在该服务器上进行查询读取扩展)。这个基本模型有多种变体,但很多本地系统都有类似的东西。

当您查看 SQL Azure 时,在考虑如何设置等效模型时,有一些重要的相似点和一些不同点:

  1. 您对所有用户数据库进行了完全恢复(但 tempdb 处于简单恢复中)。当使用 v-core 或 premium dbs 时,您还可以对 N 个副本(如可用性组)的更改进行仲裁提交,这很重要,因为在 public 云系统中通常具有更通用的网络拓扑,而不是在云系统中。您自己构建的自定义系统。换句话说,日志提交时间可能比您当前的系统慢。对于批处理系统,它不一定太重要,但您需要小心使用足够大的批处理大小,这样您的应用程序就不会一直在网络上等待。鉴于您的暂存 table 也可能是 SQL Azure 数据库,您需要注意它也有仲裁提交,因此您可能需要考虑哪些数据将每天保留(保留在 SQL Azure 数据库中)与可以进入 tempdb 以降低延迟并在丢失时重新创建的对比。
  2. 今天在 SQL Azure 中没有数据库内资源治理模型(弹性池除外,它是部分的并且针对与 DW 不同的用例)。因此,拥有一个单独的登台数据库是一个好主意,因为它将您的生产工作负载与登台数据库中的处理隔离开来。您可以避免嘈杂的邻居问题,因为您的主要生产工作负载会受到您要加载的当天数据处理的影响。
  3. 当您为本地 DW 置备计算机时,您通常会购买足够大的存储空间 array/SAN 以承载您的工作负载和可能的许多其他(整合场景)。 premium/v-core Azure 中的 premium/v-core DB 设置了本地 SSD(Hyperscale 是新添加的,它为您提供了一些跨机器横向扩展模型,在某些方面有点像 SAN) .因此,您需要考虑生产系统和 staging/loading 流程所需的 IOPS。您可以选择扩展 up/down 中的每一个以更好地管理您的工作负载和成本(不同于 CAPEX 购买大型存储阵列,后者是预先制作的,然后您调整工作负载以适应它)。
  4. 最后,还有一个 SQL DW 产品,其工作方式与 SQL Azure 略有不同 - 它针对更大的 DW 工作负载进行了优化,并具有横向扩展计算能力up/down 还有。根据您的工作负载需求,如果更合适,您可能希望将其视为最终的 DW 目标。

回到您最初的问题 - 您可以 运行 SQL Azure 上的数据加载管道吗?是的你可以。与您现有的本地体验相比,有一些注意事项,但它会起作用。公平地说,还有一些人直接从 CSV 文件或类似文件加载而不使用暂存 table。通常他们不会做那么多的转换,所以YMMV根据你的需要。

希望对您有所帮助。