新手入门指南:如何构建数据仓库和管道

构建数据仓库(data warehouse)和数据管道(data pipelines)是非常复杂的事情,如果你进入数据工程的世界,很快就会发现没有完全正确或错误的方法,如何创建取决于项目需求。

然而在构建数据管道时,应该遵循一些基本流程,这样可以提高数据管道的可操作性和性能。

在这篇文章中,我向大家分享一个路线图,作为构建数据仓库和管道的指南。

基本概念

DataSchool的《Cloud Data Management》是学习构建数据仓库的很好的教程。在这本书中,他们介绍了处理数据的4个阶段,这些阶段是数据工程师多年来一直遵循的结构模式。

基础架构

数据仓库和管道的基本架构可以分为四个部分:数据源(data sources)、数据湖(data lake)、数据仓库(data warehouse)和数据集市(data marts)。

新手入门指南:如何构建数据仓库和管道

  • 数据源:商业运营产生的数据,一般来自于数据库、CRM、API等。
  • 数据湖:数据湖是一个存储库,存储多个原始数据集,在这个阶段数据通常是非结构化的,并且有点凌乱。
  • 数据仓库:通常被称为单一真实来源,是一种干净、有序、单一的数据表示。
  • 数据集市:数据仓库中经过加工(如过滤和聚合)的一个子部分,目标是令特定数据更容易查询。

批处理和流处理

批处理(batch processing):批量加载数据,例如每天、每小时加载一次。

流处理(stream processing):数据到来时处理,通常要借助发布/订阅(Pub/Sub)系统完成,这种方式保证了将数据实时地加载到数据仓库。

这两种处理方式不是相互排斥的,它们可能共存于一个数据管道中。本文将重点关注批处理。

ETL vs ELT

批处理意味着将数据从A点移动到B点,执行这些任务的进程称为ETL(提取、加载和转换)。这个过程从数据源提取数据、转换,然后加载到数据湖或数据仓库。近年来又引入了一种新方法:ELT。

两种方法的区别在于:

  • ETL是一种传统的方法,从数据源提取数据后转换并加载到数据湖。
  • ELT是一种现代的方法,先从数据源提取数据加载到数据湖,然后转换数据,再移动到数据仓库。
  • ETL在数据湖出现之前就已经存在,转换的过程一般会创建一个“虚拟”的数据湖来缓存数据,由于现代的存储和计算资源非常便宜,我们可以用一个实际的数据湖存储原始数据。

ELT是首选方法,因为它简化了构建数据管道的流程。

数据管道路线图

我们建议实施五个流程,以提高数据管道的可操作性和性能。

这些流程是:策划(Orchestration)、监控(Monitor)、版本控制(Version Control)、CI/CD和配置管理(Configuration)。

它们基于DataOps理念定义的,DataOps是技术实践、工作流、文化规范和架构模式的集合,能够减少数据管道中的技术细节。

新手入门指南:如何构建数据仓库和管道

1. 策划

相信大家都用过Cron来组织数据处理任务。

随着管道的增长,流程的复杂性也会增加,CRON作业不适合组织整个数据管道。

这时候要使用工作流管理系统(WMS),它们以一种稳定和高效的方式来组合并管理数据处理任务,包括重试策略、流程泛化、自动化、管理任务依赖等。

常用的WMS包括:

2. 监控

我们必须主动积极地监控数据管道,这样才能确保使用你的数据的产品正确运行,否则出了什么问题都不知道。

为此要建立一个持续运行的监控系统,实时了解数据管道的运行状况。

常用的工具包括:

3. CI/CD

CI/CD代表持续集成和持续部署。CI的目标是建立一种一致的、自动化的方式来构建、打包和测试应用程序;CD自动将应用程序部署到生产环境。

CI/CD允许我们以自动化的方式将更改推送到数据管道中,减少手动和容易出错的工作。

常用的工具包括:

4. 配置管理

假设数据管道突然崩溃,需要重新部署整个系统怎么办?

我们需要使用配置管理,它可以在任何时间处理任何基础设施或软件系统的状态,充分践行“基础结构即代码”的原则。此外,它还能处理基础架构的整个配置。

常用工具包括:

5. 版本控制

最后是版本控制,这是软件工程的基础原则。

版本控制用于管理系统代码,它实现了跟踪代码变更、迭代开发和团队协作的过程。

常用工具包括:

原文出处:Medium
作者:Antony Henao
原文标题:Data Warehouse Pipeline: Basic Concepts & Roadmap

你们的点赞和收藏是我们最大的创作动力,我们每天都会为大家带来数据科学和量化交易领域的精品内容。

蜂鸟数据:开源金融数据接口,一个API连接世界金融市场。

蜂鸟数据团队由业界顶尖的数据工程师,数据科学家和宽客组成,我们正努力构建一个开源的金融数据库,并提供API接口,目标是令金融数据开源化和平民化。

浏览并测试我们接口吧,目前覆盖股票,外汇,商品期货,数字货币和宏观经济领域,包括实时报价(tick)和历史数据(分钟),提供REST API和Websocket两种接入方式,能够满足金融分析师,量化交易和理财app的需求。

蜂鸟数据API接口文档

登录蜂鸟官网,注册免费获取API**