io流 节点流 处理流
如果说“软件正在吞噬世界”,那么“数据就是新的石油”。 那些能够最好地管理海量数据的人将脱颖而出。 精炼这种油的最先进方法是物流加工 。
在这篇文章中,我想描述什么是流处理,以及为什么在当今时代必须这样做。
这是第1 周在后流处理重点series.Other职位包括:
过去的好时光
将数据从一个位置移动到另一位置的需求可能与存储本身一样古老。 这称为Extract-Transform-Load 。
在计算,提取,转换,加载(ETL)中,这是将数据从一个或多个源复制到目标系统的一般过程,该目标系统表示与源不同的数据或在与源不同的上下文中表示数据。 ETL流程在1970年代成为一种流行的概念,并且经常用于数据仓库。
https://zh.wikipedia.org/wiki/摘录
当我开始职业生涯时,运行ETL流程的唯一模式是批处理作业 (或批处理)。 我相信在撰写本文时,它仍然是主要的模式,这要归功于(或归因于)此类工作的巨大遗产仍使银行运转。 通常,计划将批次按固定的时间间隔自动运行, 例如 ,每天的午夜,每月或每年。 有时,它们被触发: 守护进程监视一个文件夹,并且当该文件夹包含与特定模式匹配的文件时,该批处理将被触发-并对这些文件进行处理。
以下是一些批处理示例:
-
数据仓库
-
根据几种“形式”,对SQL数据库进行了规范化。 这些形式之一要求将数据复制到专用表中,而不是将重复的数据复制到不同的行中,并通过主键-外键关系进行引用。 这种方法的缺点是,查询多个表需要联接,而联接会减慢查询的执行速度。 在海量数据下,这可能导致无法接受的等待时间。 因此,数据仓库存储未规范化的数据。
每月(或每周)批处理将标准化数据从生产数据库中提取出来,对其进行非标准化以进行快速查询,然后将其加载到数据仓库数据存储中。
银行账户
-
最初,银行是通过邮寄每月发送其帐户状态的邮件。 随着万维网的普及,他们开始允许用户以数字形式进行访问。 但是,出于安全原因,访问权限并未授予其内部存储,而是授予了面向公众的只读数据库。
每日批处理将所有交易数据以及相关数据从内部数据库复制到前端客户数据库。
批处理模型的限制
如上所述,“数据就是新的石油”。 数据获取的速度呈指数级增长并非神秘。
![全球范围内创建的数据](https://i-blog.csdnimg.cn/blog_migrate/24d91cb1a528f7f62588bb4cc8b573a9.png)
当需要处理的数据量也开始增长时,批处理的问题就会显现出来。
- 当需要将存储在数据库中的数据加载到内存中时,将触发第一个问题。 如果数据量不足以容纳内存,则批处理将失败。 通常,这由ETL软件处理,该软件基本上只加载块中的数据,并保留块的开始和结束。
- 如果批次需要在每个X周期运行,并且比X花费更多的时间,则会发生第二个问题。因此,该模型变得无关紧要。 我已经在自己的职业生涯中见过好几次了,而且我相信我还远非唯一。 没有真正的解决方法。 通常,人们开始购买性能更高的硬件,但迟早会达到其极限。
- 最后,如果在批处理运行之前需要数据可用怎么办? 如果一个月运行一次,则所有数据在月底肯定可用。 但是,需要等待一个月才能访问这些数据。 尽管这可能适用于上面的银行帐户用例,但其他用例可能更喜欢尽快获取不太完整的数据。 本质上,批处理是定期运行的,并且为了获得可用性而权衡完整性 。
流媒体模型
流式传输争夺权衡,并在数据可用后立即进行处理。 用户可以选择等到这段时间过去,或者根据不完整的数据在任何时候做出决定。 该方法的基础是, 现在不完整的数据要好于后来的完整数据 。
流数据是由不同来源连续生成的数据。 此类数据应使用流处理技术进行增量处理,而不能访问所有数据。 另外,应该考虑到概念漂移可能发生在数据中,这意味着流的属性可能会随时间变化。
https://zh.wikipedia.org/wiki/Streaming_data
流处理是一种查看数据以及如何处理数据的新方法。 在以下文章中,我将介绍其一些不同的用例。
io流 节点流 处理流