批处理还是流处理?永恒的数据处理困境

“我们应该批量处理数据还是实时处理数据?”这不是批处理与流处理的问题:而是“答案何时重要?”后的批处理还是流处理?永恒的数据处理困境首先出现在《走向数据科学》上。

来源:走向数据科学

在数据工程领域的任何时候,您都可能至少遇到过一次这样的争论。也许两次。好吧,大概十几次😉“我们应该批量处理数据还是实时处理数据?”如果您和我一样,您会注意到答案通常以:“嗯,这取决于……”

这是真的。这确实取决于。但只有当你真正知道它取决于什么时,“取决于”才有用。这就是我想用这篇文章来填补的空白。这不是批处理与流处理的另一个理论比较(我希望您已经了解基础知识)。相反,我想为您提供一个实用的框架,用于决定哪种方法对您的特定场景有意义,然后向您展示这两种路径在 Microsoft Fabric 中实现时的外观。

这不是批处理与流处理的问题:而是“答案何时重要?”

让我跳过枯燥的定义,直接跳到这两种方法的实际区别:新鲜度的价值。

每条数据都有保质期。并不是说它会过期并变得无用,而是说它的商业价值会随着时间的推移而变化。 200 毫秒内检测到欺诈性信用卡交易?无价——您刚刚避免了损失。 6 小时后在夜间批处理作业中检测到同样的欺诈行为?举报有用,但钱已经没了。

另一方面,根据昨天的数据与 3 分钟前的数据生成的月度销售报告?在大多数组织中,没有人能分辨出其中的差异(并且可能没有人关心)。基于该报告的业务决策是在提前几天安排的会议中做出的,而不是在数据到达后的几毫秒内进行。

所以,第一个问题不是“批处理还是流处理?”第一个问题是:某人(或某物)需要多快对这些数据采取行动才能使其发挥作用?

权衡

成本

复杂性

正确性

再说一次,这不是避免流式传输的理由。这是要了解流式结果和批处理结果可能不同的原因,并且您的架构需要考虑到这一点。