在技术尚未发展成熟的年代,人们需要根据不同的需求从周围的不同资源中收集水资源。随着技术的进步,人们通过使用单一资源满足所有需求,自动化了获取水资源的过程。数据管道的概念与此类似,它涉及从源头到目的地存储和丰富数据的一系列步骤,进一步帮助获得洞察力,并促进数据存储和转换的自动化。
当听到“数据管道”这个术语时,以下几个问题立刻浮现在脑海中:什么是数据管道?它的用途是什么?它与ETL有何不同?在数据生产者和数据消费者的情况下,生产者在发送数据之前不能不进行数据处理、数据治理和数据清洗。
数据管道的类型由其被使用的用途决定。它可能被用于数据科学、机器学习或商业分析等。数据管道的类型包括:
生产者可以发送批处理或实时数据。批处理数据的例子包括CSV、数据库和大型机,例如每周或每月的计费系统。实时数据则来自IoT设备、卫星等来源,例如交通管理系统。在进入中央数据管道之前,批处理数据会经过批处理摄取,而实时数据则通过流摄取。
批处理摄取是一段时间内获取的数据的处理。相比之下,流摄取涉及实时数据,因此是逐块处理的。数据管道由几个独立的组件组成。考虑一个ODS(操作数据存储),批处理数据在处理后会在此暂存。流数据也可以在消息中心使用Kafka暂存。NoSQL数据库,如MongoDB,可以用作消息中心。
得益于ODS,组织能够从多个来源收集数据并将其存储在单一位置。Kafka是一种分布式数据存储,可用于创建实时数据管道。即使所有这些数据已经被分析,仍然可以对其进行丰富。MDM(主数据库管理)可用于此,它通过减少错误和冗余来协助数据。
当数据准备就绪时,它可以被发送到预定目的地,如数据湖或数据仓库。客户可以使用这些资源来创建业务报告、机器学习模型和仪表板等。
ETL管道的最终结果是将数据放入数据库/数据仓库。而数据管道则明显不同,因为它不仅仅涉及导入数据。它作为源和目的地之间的链接。在这里,ETL管道可以被视为数据管道的一个子集。
ApacheKafka是一个开源平台,与事件一起工作。要完全理解事件驱动的方法,首先必须理解数据驱动和事件驱动方法之间的区别。
考虑一个在线零售商,如亚马逊。当客户A在日期1购买产品X时,数据库记录了这笔交易。但如果必须考虑超过2亿客户呢?所有数据都保存在多个数据库中,这些数据库应该相互通信以及与在线网站通信。
这种方法使用与公司网站相同的交互方式。然而,所有数据都保存在队列中。数据库可以从队列中获取它需要的信息。
它可能是一个单独的活动或一组业务行动。例如,如果客户A在日期1购买产品X,会记录一个事件,包含以下信息:
客户ID: -123
名称: – A
订单ID: – 001
日期: – 1.
Kafka鼓励使用队列来存储事件。任何客户都可以使用这个队列来获取他们需要的信息。
1. 可以存储任意时期内的大量数据。 2. 它对每个事件都是唯一的(即使同一客户再次购买,因为他或她可能在不同的日期购买产品Y)。
它使用“日志”数据结构。日志中的OFFSET字段指示数据被取走的位置。它永远不会覆盖现有数据;相反,它会在末尾追加数据。
日志是描述仅追加记录序列的最基本数据结构。不可变的日志记录以确切的顺序添加到日志文件的末尾。