掘金 后端 ( ) • 2024-06-13 14:25

导言

本文为数据仓库导论,旨在介绍数据仓库的基本理念和应用场景,帮助读者理解数据仓库的重要性及其在企业中的实际应用。

数据仓库作为重要的数据管理和分析工具,已经发展了30多年,其过程中生态和技术都发生了巨大的变化。尽管如此,数据仓库最初的设计思想依然值得我们借鉴和思考。在这篇文章中,将为那些对数据仓库不太了解的读者提供基本的概念介绍,包括数据仓库的定义、数据仓库与数据库的关系、企业是否需要数仓、数据仓库的发展历史、数仓技术架构变迁以及数仓商务解决方案等。最后,我们还将探讨数据仓库在企业中的实际应用过程。

  1. 数据仓库简介
    • 介绍数据仓库的定义和基本概念,以及为什么企业需要数据仓库。
    • 强调数据仓库的目标是支持企业决策和分析需求,并提供高质量的数据。
  2. 数据仓库与数据库的关系
    • 解释数据仓库与传统数据库的区别和联系。
    • 强调数据仓库的特点,如面向主题、集成性和时间一致性。
  3. 数仓技术发展历史
    • 探讨数据仓库在国内的发展历史及技术生态。
    • 介绍第一代至第五代数据仓库生态的变迁及架构设计。
  4. 数据仓库与商业智能产品
    • 列举市面上常见的商业智能产品。
    • 讨论数据仓库如何与商业智能(BI)产品结合,提升数据分析和决策能力。
  5. 数据仓库在企业落地过程
    • 介绍数据仓库在企业中的实际应用过程。
    • 提供一些企业落地实践,以便成功地将数据仓库引入企业。

一、什么是数据仓库?

我们先将时间调到10年以前,当国内有一家初具规模的互联网企业因大数据热潮开始着手组建大数据团队,通常情况下,大数据团队组建后的首要任务是构建数据仓库。这个过程往往伴随着第一个大数据项目的启动,通常是关于商业智能(BI)报表的开发。

类似地,现如今的AI热潮也引发了国内组建AI团队的潮流。与过去相似,组建AI团队后的首要任务就是大模型的构建。

需要明确的是:大数据不等于数据仓库,但数据仓库一定是大数据在企业落地中不可或缺的一部分。

那么什么是数据仓库?先来看数据仓库历史渊源。

渊源

在上世纪70年代,IBM在提出了关系型数据库理论后,MIT的研究员开始探索分析系统构建的基础理论。他们试图将业务处理系统和分析系统分隔开来,认为这两种信息处理方式具有显著差异,应采用不同的架构和设计原则。尽管这一理论在当时的技术条件下仅停留在概念阶段。

到了80年代初,比尔·恩门(Bill Innmon) 开始深入研究“记录系统”、“本原数据”、“决策支持数据库”等专题。与此同时,J. Martin在数据库分类研究中专注于“第4类数据库”,即“由用户驱动的计算环境”,其信息服务以“搜索和快速信息回收”为主要特征。这个定义与后来的数据仓库概念十分相似。

而在1988年,IBM的研究员创新性地提出了一个全新的概念--数据仓库(Data Warehouse)。随后,数据仓库之父Bill Innmon于1991年出版了数据仓库经典之作《构建数据库仓库》,这标志着数据仓库概念的正式确立。该书阐明了数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,旨在支持管理决策。此书还提供了建立数据仓库的指导意见和基本原则,因此Bill Innmon被誉为数据仓库之父。

按照数据仓库之父的解释:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,旨在支持企业管理决策。

主题性

数据仓库的主题性是指数据仓库的设计和组织方式,它与关系型数据库有明显的区别。在关系型数据库中,数据通常按照应用系统的功能进行组织,数据表代表了不同的实体和关系。而数据仓库则按照主题来组织数据,主题是与特定业务领域或分析目标相关的数据集合,主题性的设计更适合支持决策支持和分析需求,例如:

关系型数据库:

订单表 (Orders):

订单ID 客户ID 产品ID 订单日期 订单金额 1 101 201 2023-01-15 $100 2 102 202 2023-02-20 $150 3 103 201 2023-03-10 $200

产品表 (Products):

产品ID 产品名称 价格 201 商品A $50 202 商品B $75

客户表 (Customers):

客户ID 姓名 城市 101 张三 北京市 102 李四 上海市 103 王五 广州市

数据仓库:

销售分析主题表 (Sales Analysis):

订单ID 客户姓名 城市 产品名称 订单日期 订单金额 1 张三 北京市 商品A 2023-01-15 $100 2 李四 上海市 商品B 2023-02-20 $150 3 王五 广州市 商品A 2023-03-10 $200

在这个示例中,关系型数据库中的订单、产品和客户数据被分别存储在不同的表中,并使用ID来建立关联。而数据仓库中的销售分析主题表将订单、产品和客户信息整合在一起,以方便进行销售分析和报表生成。

主题性的底层逻辑围绕数据建模。

集成性

集成性是指它能够整合来自多个不同数据源的数据,包括结构化数据、半结构化数据和非结构化数据等。通过将这些数据集成到一个统一的数据仓库中,用户可以进行全面的数据分析和决策支持。

假设一家制造公司想要构建一个数据仓库来进行生产和供应链分析。该公司从多个数据源获取数据,包括以下几个来源:

  1. 企业内部的关系型数据库:包括订单数据、库存数据、销售数据等。
  2. 供应商的数据:包括原材料供应商提供的采购数据、交付数据等。
  3. 外部数据源:例如市场调研报告、社交媒体数据等。

为了实现数据仓库的集成性,该公司需要将来自不同数据源的数据整合到数据仓库中。以下是数据仓库中的集成数据示例:

生产与供应链分析主题表 (Production and Supply Chain Analysis):

订单ID 产品ID 供应商ID 订单日期 订单数量 供应商名称 原材料名称 交付日期 市场需求分析 1 201 501 2023-01-05 100 供应商A 原材料A 2023-01-10 需求高 2 202 502 2023-02-10 150 供应商B 原材料B 2023-02-15 需求中 3 201 503 2023-03-15 200 供应商C 原材料A 2023-03-20 需求高

在这个示例中,数据仓库集成了来自企业内部的关系型数据库、供应商的数据以及外部数据源的数据。通过将订单数据、供应商数据和市场需求分析数据整合在一起,数据仓库可以提供一个综合性的视图,用于生产和供应链分析。用户可以根据订单数量、供应商信息、原材料使用情况和市场需求分析等因素进行深入分析和决策。

在数据仓库中实现数据集成的一种常见方法是使用ETL(Extract, Transform, Load)工具。ETL工具可以从各种数据源中提取数据,进行必要的转换和清洗,并将数据加载到数据仓库中,市场上有一些流行的ETL工具,如Sqoop和DataX,它们都被广泛用于数据集成的任务。

在这里插入图片描述

相对稳定性

这里的稳定性有两层含义:数据的稳定性、架构设计的稳定性。

  • 数据的稳定性指的是数据在数据仓库中的持久性和相对不可变性。这意味着一旦数据被加载到数据仓库中,它们不会因为时间的推移而发生改变。这种稳定性与下面历史性相互映照,确保数据仓库提供可靠的历史数据(例如快照表和拉链表)对于企业的决策至关重要。

  • 架构设计的稳定性指的是数据仓库底层架构的稳定性。数据仓库需要经过仔细的设计和规划,采用冗余存储和容错机制来提高系统的可靠性,这可能包括使用多个服务器节点、数据复制和故障转移等技术,以便能够持续稳定地支持数据的存储和查询。对企业来说,一个稳定可靠的数据仓库是基础设施的关键组成部分。

在这里插入图片描述

历史性

数据仓库的历史性指的是它能够跟踪和保存数据的历史变化。与关系型数据库中的数据更新不同,数据仓库将数据加载为历史快照,以便可以追溯数据在不同时间点的状态。这种历史性使得数据仓库成为一个强大的分析工具,可以支持时间趋势分析、历史比较供企业深入分析和决策,这里以快照表为例:

关系型数据库:

用户表 (User):

id name phone gender create_time update_time 1 jack 111 男 2023-06-01 13:00:00 2023-06-01 13:00:00 2 jason 222 男 2023-06-01 13:00:00 2023-06-01 13:00:00 3 tom 333 男 2023-06-01 13:00:00 2023-06-01 13:00:00

2023-06-02 业务数据新增了一名用户,且更改了tom的手机号,此时表数据如下:

id name phone gender create_time update_time 1 jack 111 男 2023-06-01 13:00:00 2023-06-01 13:00:00 2 jason 222 男 2023-06-01 13:00:00 2023-06-01 13:00:00 3 tom 444 男 2023-06-01 13:00:00 2023-06-02 09:00:00 4 tony 555 2023-06-02 10:00:00 2023-06-02 10:00:00

数据仓库:

用户快照表 (User_snapshot):

id dt name phone gender create_time update_time 1 2023-06-01 jack 111 男 2023-06-01 13:00:00 2023-06-01 13:00:00 2 2023-06-01 jason 222 男 2023-06-01 13:00:00 2023-06-01 13:00:00 3 2023-06-01 tom 333 男 2023-06-01 13:00:00 2023-06-01 13:00:00 1 2023-06-02 jack 111 2023-06-01 13:00:00 2023-06-01 13:00:00 2 2023-06-02 jason 222 2023-06-01 13:00:00 2023-06-01 13:00:00 3 2023-06-02 tom 555 2023-06-01 13:00:00 2023-06-02 09:00:00 4 2023-06-02 tony 555 2023-06-02 10:00:00 2023-06-02 10:00:00

支持企业管理决策

在企业运营过程中,管理决策是确保业务顺利运行和发展的关键。支持企业管理决策是数据仓库的核心目标之一,指的是利用数据仓库中的数据帮助企业在管理和战略层面做出明智的决策。

数据仓库作为一个集成的数据集合,整合了来自多个源系统的数据,经过清洗、转换和整理,形成一致、统一的数据视图。这样的数据集合提供了全面、综合的信息,可以支持企业管理决策的各个方面,包括战略规划、业务分析、绩效评估、市场预测等,如下图:

在这里插入图片描述

小结

数据仓库(Data Warehouse),简写为DW,是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,旨在支持企业管理决策。

数据仓库接收来自各种各样的数据源,并将其整合在一起,最终输出用于企业的数据分析、数据挖掘和数据报表等。它为企业提供了商业智能(BI)的能力,可以指导业务流程改进、监控时间、成本、质量以及数据控制。

在这里插入图片描述

二、关系型数据库VS数据仓库

首先要明确: 数据仓库的出现,并不是要取代数据库。

数据库是面向交易的处理系统,主要用于支持具体业务的日常操作,例如记录查询和修改。它关注操作的响应时间、数据的安全性、完整性和并发支持的用户数等方面。传统的数据库系统被称为联机事务处理(OLTP),主要用于操作型处理。

数据仓库则主要针对某些主题的历史数据进行分析,支持管理决策,也被称为联机分析处理(OLAP)。数据仓库的目标是提供给企业管理层全面、准确的数据视图,以支持高级分析、趋势分析和决策制定。

数据库与数据仓库的区别

比较维度 数据库 数据仓库 设计目标 面向事务的设计,支持业务操作和日常事务处理。 面向主题的设计,支持数据分析和决策。 数据存储 存储业务数据,尽量避免冗余,针对某一业务应用设计。 存储历史数据,有意引入冗余,依据分析需求、分析维度和指标设计。 数据特点 当前数据、细节化、短期存储。 历史数据、聚合、长期存储。 功能区别 为捕获和管理当前事务数据而设计,确保数据的一致性和完整性,支持实时操作。 为分析数据而设计,从事务系统获取数据,进行汇总和加工,为决策提供依据。 实例 银行客户存款、取款、转账等操作实时写入数据库。 分析银行某分行一个月的交易总量和当前存款余额,决策是否增加ATM机。 时效性 实时,数据记录和事务处理需要几秒内完成。 事后,提供关注时间段内的有效数据,允许汇总计算较慢。 用途 捕获和管理当前业务数据。 深入分析和挖掘历史数据,为决策提供支持。

实例分析:银行业务

维度 数据库(事务系统) 数据仓库(分析系统) 功能 记录客户每笔交易(如存款、取款、转账)。 从事务系统提取数据,进行汇总和加工,支持决策分析。 数据特点 实时、细节、短期存储。 历史数据、汇总、长期存储。 示例 客户存一笔钱,几秒内记录到数据库。 分析银行某分行一个月的交易总量、当前存款余额,决策是否增加ATM机。

三、企业为什么要构建数仓?

在过去的十年中,当企业开始组建大数据团队时,构建数据仓库通常是他们首要的任务。然而,许多开发人员对此持怀疑态度,因为数据仓库的建设成本相对较高,他们开始质疑是否真的需要构建数据仓库。

在我看来,数据仓库只是实现目标的手段,而非目标本身。企业的目标是利用现有数据进行商业智能分析,以帮助决策制定。数据仓库更像是一种商业智能分析解决方案。

那么,除了数据仓库,是否还有其他解决方案呢?当然是有的。如果企业规模较小,数据处于小体量,直接使用关系型数据库进行分析是可行的。但是,随着企业后续数据量的快速增长,关系型数据库就有十几个,企业需要基于全盘数据进行分析时就会显得力不从心,所以企业BI建设建立在完整的数据仓库基础上为最佳

总结:数据仓库更像是一种成熟的商业智能分析的解决方案。

四、数据仓库衍生出的岗位

在过去的十年中,数据仓库可以说是大数据领域必不可少的项目,而随之衍生的岗位也是种类繁多,例如:

BI工程师,报表工程师,数据仓库工程师,ETL工程师,大数据工程师。

  1. BI工程师(Business Intelligence Engineer):BI工程师负责构建和维护商业智能系统,帮助业务部门进行数据分析和报表制作。他们使用数据可视化工具和技术,将数据转化为有意义的见解,帮助决策者做出准确的商业决策。
  2. 报表工程师和数据分析师:报表工程师和数据分析人员专注于设计、开发和维护报表和数据可视化工具。他们与业务用户合作,理解他们的需求,并创建具有可视化效果的报表和仪表盘,以便业务部门能够直观地理解和分析数据,从而支持决策制定和业务优化。
  3. 数据仓库工程师(Data Warehouse Engineer):数据仓库工程师专注于构建和维护数据仓库系统。他们设计和实施数据仓库架构,负责数据抽取、转换和加载(ETL),管理数据的存储和索引,确保数据的一致性和准确性,以支持企业的数据分析和决策。
  4. ETL工程师(Extract, Transform, Load Engineer):ETL工程师负责数据抽取、转换和加载过程。他们开发和维护ETL流程,将数据从各种来源抽取出来,进行必要的转换和清洗,并加载到目标系统或数据仓库中。ETL工程师确保数据的完整性和一致性,以便后续的数据分析和报表制作。
  5. 大数据工程师(Big Data Engineer):大数据工程师专注于构建和维护大数据处理平台。他们使用分布式系统和技术,处理和分析海量数据,包括结构化和非结构化数据。大数据工程师负责搭建数据处理和存储架构,开发和优化大数据处理流程,处理数据质量和性能问题,以支持企业的大数据应用和业务需求。

这些岗位在过去十年中不断演变,最终市场上整合为两个主要职能:大数据工程师(开发)、数仓工程师。

五、国内数仓发展历史

第一代:经典数仓

经典数据仓库主要以离线数仓为主,是传统的数据仓库架构,其特点如下:

  1. 数据导入:数据源通过离线方式导入到离线数据仓库中。
  2. 数据处理:采用Hadoop、Spark等技术,通过MapReduce、Hive、SparkSQL等离线计算引擎进行数据处理。

下面是经典离线数据仓库的架构和数据处理流程:

在这里插入图片描述

第二代:Lambda架构(离线+实时结合)

随着大数据应用的发展,系统的实时性需求逐渐增加。为了计算实时指标,在原有离线数据仓库的基础上增加了一个实时计算链路,并对数据源进行流式改造(即将数据发送到消息队列)。实时计算组件订阅消息队列,直接完成指标的增量计算,并将结果推送到下游的数据服务层,由数据服务层完成离线和实时结果的合并。Lambda架构如下图所示:

在这里插入图片描述

第三代:Kappa架构(批流一体)

Lambda 架构虽然满足了实时的需求,但带来了更多的开发与运维工作,其架构背景是流处理引擎还不完善,流处理的结果只作为临时的、近似的值提供参考。 后来随着Flink等流处理引擎的出现,流处理技术很成熟了,这时为了解决两套代码的问题。 Linkedln 提出了 Kappa 架构**,在实时计算中可以直接完成计算,也可以跟离线数仓一 样分层,取决于指标的复杂度,各层之间通过消息队列交互(多半是不分层的),**Kappa 架构可以认为是 Lambda 架构的简化版(只要移除 Lambda 架构中的批处理部分即可)。Kappa 架构如下图所示:

在这里插入图片描述

第四代:基于MPP数据库的实时统一数仓架构

面对越来越强的OLAP数据分析需求,新一代高性能MPP数据库高速发展:2016年Clickhouse、2017年Doris相继面世。例如,Doris的实时数仓架构。其特点如下:

  • 报表分析:面向用户或者客户的高并发报表分析(Customer Facing Analytics)。
  • 即席查询(Ad-hoc Query):面向分析师的自助分析,查询模式不固定,要求较高的吞吐。
  • 统一数仓构建 :一个平台满足统一的数据仓库建设需求,简化繁琐的大数据软件栈。
  • 数据湖联邦查询:通过外表的方式联邦分析位于 Hive、Iceberg、Hudi 中的数据,在避免数据拷贝的前提下,查询性能大幅提升。

具体如下图所示:

在这里插入图片描述

第五代:基于数据湖实时数仓架构(湖仓一体)

数据湖的概念最早由Pentaho的创始人兼CTO詹姆斯·迪克森 在2010年10月纽约Hadoop World大会上提出。然而,数据湖在国内的广泛应用直到2019年三大数据湖开源后才真正兴起。其中,Spark+Hudi 以及 Flink+Iceberg的组合应用最为广泛。该架构具有以下特点:

  • 支持ACID和模式变更:高效地进行表模式变更,例如增加或删除分区和字段等功能。
  • 统一存储的准实时数据仓库:湖仓一体化,数据统一存储在数据湖中(如Iceberg、Hudi、Delta Lake)。支持批流一体化读写,确保数据一致性,避免脏读现象。
  • 高效的upsert操作:支持高效的插入和更新操作。

以下是该架构的示意图:

在这里插入图片描述

六、数据仓库与商业智能产品

帆软(FineReport / FineBI)

介绍: 帆软是一家中国本土的老牌BI公司,成立于2006年,主要提供企业级报表和商业智能解决方案。其主要产品包括FineReport和FineBI。FineReport侧重于报表设计与展示,而FineBI则更注重数据分析与可视化。

在这里插入图片描述转存失败,建议直接上传图片文件

特点:

  • FineReport:功能强大的报表工具,支持复杂报表设计和数据展示。
  • FineBI:集成数据分析、数据挖掘和数据可视化,适合企业数据分析需求。

优点:

  • 功能全面,支持报表、数据可视化等
  • 中文本地化和本地支持强
  • 庞大的用户社区和培训资源
  • 支持自定义开发

缺点:

  • 学习曲线陡峭
  • 成本较高

观远(Guandata)

介绍: 观远是一家中国的新兴BI公司,成立于2016年,致力于为企业提供智能数据分析和决策支持平台。观远BI注重用户体验和创新,旨在让业务人员也能轻松进行数据分析。 在这里插入图片描述

特点:

  • 用户友好:界面简洁,操作简便,适合非技术人员使用。
  • AI驱动:集成AI技术,提供智能分析和预测功能。
  • 快速部署:支持云部署,能够快速上线使用。

优点:

  • 易用性强,界面友好
  • 创新性强,支持AI驱动的数据分析
  • 中文本地化支持好

缺点:

  • 功能不如老牌BI全面

阿里Quick BI

介绍: 阿里Quick BI是阿里巴巴集团推出的一款云原生BI产品,旨在为企业提供简单易用、高效的商业智能解决方案。Quick BI与阿里云生态系统紧密结合,适合已经在使用阿里云服务的企业。

在这里插入图片描述

优点:

  • 云原生,易于部署和扩展
  • 与阿里云产品无缝集成(如钉钉)
  • 性价比高

缺点:

  • 依赖阿里云生态
  • 高级分析和自定义功能较弱

微软Power BI

介绍: 微软Power BI是一款全球广泛使用的商业智能工具,提供强大的数据分析和可视化功能。它与微软的Office平台无缝集成,是微软生态系统中的重要组成部分。

在这里插入图片描述

特点:

  • 功能强大:提供丰富的数据连接器、强大的数据处理和分析能力。
  • 与微软产品整合:无缝集成Office 365、Azure等微软产品,提升协同效率。
  • 用户社区庞大:全球用户众多,有丰富的在线资源和支持。

优点:

  • 功能全面,数据连接器丰富
  • 与微软生态系统(Office 365, Azure)整合
  • 用户社区庞大,资源丰富
  • 性价比高,有免费版本

缺点:

  • 中文本地化支持不足
  • 处理大规模数据时性能可能有限

总结

  • 帆软:本土老牌,功能强大,适合需要复杂报表和深入分析的企业。
  • 观远:新兴产品,操作简单,适合追求易用性和快速部署的企业。
  • 阿里Quick BI:云原生产品,集成阿里云服务,适合使用阿里云的企业。
  • 微软Power BI:国际领先,功能全面,与微软生态系统紧密集成,适合使用微软产品的企业。

七、企业一站式解决方案落地

河北鑫达集团

河北鑫达集团是一家集矿产采选、地产开发、钢铁冶金及上下游产业链实体贸易为一体的全国大型综合性企业,连续跻身“全国钢铁A级竞争力特强企业”、“中国钢铁工业20强”榜单。作为钢铁行业的排头兵,鑫达集团数字化转型起步早,在实时监控、资产管理、生产运行、能源管理、安全环保、经营管理等方面进行智能化分析,数字化转型成果显著,据称一年降本3000w。

作为传统重工业的基础原材料产业,钢铁行业长期面临高耗能、高排放等现实难题。中国钢铁行业占国家碳排放总量的15%,也是排放量最高的制造行业。双碳目标下,中国钢铁行业任重而道远,数字化转型成为企业推动绿色低碳可持续发展的重要抓手。

在这里插入图片描述

在这里插入图片描述

杨国福

“你一个做麻辣烫的搞数字化有意义吗”这是三年前杨国福信息化负责人王林林在上台演讲前受到的质疑,如今这个问题有了准确回答。

王林林坦言:“说实话最开始的时候有些纠结,毕竟这是一次全新且在行业内失败率很高的尝试。”

但是,换个思路,像杨国福这种6000多家门店的企业,每个加盟商耽误2天营业,集团的损失将会很大。最重要的是,推迟一天营业、补货,加盟商就要承受很大压力。赋能加盟商不是句空喊的口号,要落到具体行动上。

王林林说:“数字化不能光评估投入,数字化要看投产比。”目前,杨国福集团的数字化投产比是非常可观的。通过数字化确确实实提升了工作效率,实现了业绩与效率双增长。

“每出一个外卖订单,我们能知道工厂挣多少钱,加盟商挣多少钱,公司挣多少钱,这就是我们做数字化的意义。”

数字化时代,挖掘数据价值是核心导向

在这里插入图片描述

八、相关资料