Azure Synapse 管道:如何将增量更新从 SQL Server 移动到 Synapse 以处理数字
Posted
技术标签:
【中文标题】Azure Synapse 管道:如何将增量更新从 SQL Server 移动到 Synapse 以处理数字【英文标题】:Azure Synapse pipeline: How to move incremental updates from SQL Server into synapse for crunching numbers 【发布时间】:2021-12-14 16:35:31 【问题描述】:我们正在为我们的项目构建一个新的数据管道,我们必须将全天在我们的 SQL 服务器上发生的增量更新移动到 Azure 突触中以进行一些数字处理。 我们必须将发生在 60 多个表中的更新(每天 1-2 百万次更新)转化为突触,以处理全天发生的一些聚合和统计数据。
其中一个要求是接近实时,并且批量导入突触并不理想,因为对所有数据进行完整计算需要 10 多分钟。
我一直在阅读有关突触https://docs.microsoft.com/en-us/azure/data-factory/tutorial-incremental-copy-change-data-capture-feature-portal 的 CDC 馈送信息,这是一种可能的解决方案。 想知道是否有其他替代方案或建议来实现近乎实时的数据处理以进行数据库更新的最终目标。
【问题讨论】:
你需要保留历史变化吗? 【参考方案1】:变更数据捕获 (CDC) 是捕获变更并添加到目标位置(存储/数据库)的合适方式。
除此之外,您还可以使用水印列来捕捉SQL Server中多个表的变化。
为源数据存储中的每个表选择一列,您可以在 可以识别每次运行的新记录或更新记录。通常情况下, 此选定列中的数据(例如,last_modify_time 或 ID) 在创建或更新行时不断增加。最大值 在此列中用作水印。
这是此方法的高级解决方案图:
这个官方文档Incrementally load data from multiple tables in SQL Server to Azure SQL Database using PowerShell给出了一步一步的方法。
【讨论】:
以上是关于Azure Synapse 管道:如何将增量更新从 SQL Server 移动到 Synapse 以处理数字的主要内容,如果未能解决你的问题,请参考以下文章
将 Azure Databricks 增量表迁移到 Azure Synapse SQL 池
如何在 Azure Synapse 或数据工厂管道中设置和获取变量值