这是一个在 stackoverflow 上表现不佳的意见问题,但是您将映射数据流与存储过程进行比较的事实告诉我,您拥有 Azure SQL 数据库(或类似数据库)和Azure 数据工厂(ADF)在你的架构中。
如果您考虑到 Mapping Data Flows 由 Spark 集群支持,并且您已经拥有 Azure SQL DB,那么您真正拥有的是两种类型的计算。那么为什么两者都有呢?在进行连接、嵌套查询等方面,没有什么比 SQL 更好的了。Azure SQL DB 可以轻松地向上和向下扩展(例如,通过其 REST API)——这似乎是您的观点之一。
话虽如此,映射数据流功能强大,并提供了良好的低代码体验。因此,如果您的要求是具有强大转换的低代码,那么它可能是一个不错的选择。请记住,如果您的数据已经在数据库中并且您正在使用 Mapping Data Flows,那么您所做的就是将数据从 SQL 中取出,放到 Spark 集群中,对其进行处理,然后将其推回。这对我来说似乎是重复的,我将映射数据流(和 Databricks 笔记本)保留为我在 SQL 中无法完成的事情,例如高级分析、硬数学、复杂的字符串操作可能是很好的候选者。另一个用例可能是工作卸载,您有意从数据库中卸载工作。请记住同时运行两种类型的计算的成本影响。
我最近还看到一个示例,其中有人使用映射数据流实现了缓慢变化的维度类型 2 (SCD2),但使用了 20 多个不同的 MDF 组件来实现。这对我来说只是名义上的低代码,复杂性高,难以维护和调试。可以使用MERGE
SQL 中的单个语句完成相同的过程。
所以我个人的观点是,将映射数据流用于您已经无法使用 SQL 完成的事情,特别是当您的架构中已经有 SQL 数据库时。我个人更喜欢 ELT 模式,使用 ADF 进行编排(不是 MDF),我认为这更易于维护。
您可能会问的其他一些问题是:
- 你的团队有什么技能?SQL 是一种相当常见的技能。MDF 仍然是低代码但小众。
- 您的支持团队有哪些技能?当你交出这个时,你打算在 MDF 上训练他们吗?
- 鉴于上述情况,您如何评价这两种方法的复杂性和可维护性?
HTH