基本概念
数据仓库:
抽取或导入结构化/半结构化数据,主要用于
OLAP
数据分析,支持管理决策。Data Mesh数据网格:
采用DDD领域驱动设计思想。
数据治理拆分到各业务领域(类似微服务的服务拆分),分而治之,分别产出业务领域的数据产品。
Data Fabric:
- 元数据驱动基于中心化,基于知识图谱的数据资产管理(元数据驱动)。
数据集市:
数据集市(
Data Mart
),也叫数据市场,是数据仓库的一个子集(部门级业务)。
- 按照抽取方式可分为两类:
- 独立型数据集市:直接从源数据抽取业务数据。
- 从属型数据集市:从数据仓库/数据湖抽取。
数据湖 :
以原始类型存储数据的存储系统。
- 先导入,后处理分析使用。
离线数仓:
- 数据仓库的延伸逻辑概念,描述的是批处理(离线计算)场景。
实时数仓:
- 数据仓库的延伸逻辑概念,描述的是实时处理(实时计算)场景。
批流一体:
- 大数据的数据清洗
ETL
。- 可简单分为2类:
- 批处理(离线任务)、流计算(实时计算)。
- 批流一体讲究用一套技术方案实现2种目标。
湖仓一体:
- 数据在数据湖和数仓中流动,兼具数仓的稳定性建模和数据湖的灵活特性。
实时湖仓:
- 强调实时计算能力的湖仓一体架构。
数据仓库
离线数仓:
离线数仓特指:应对批处理(离线计算)场景的数据仓库。
实时数仓
实时数仓特指:应对实时处理(实时计算)场景的数据仓库。
数据集市
数据集市(
Data Mart
),也叫数据市场,就是满足特定的部门或者用户的需求,按照多维的方式进行存储。
- 包括定义维度、需要计算的指标、维度的层次等,生成面向决策分析需求的数据立方体。
按照抽取方式可分为两类:
独立型数据集市:直接从源数据抽取业务数据。

从属型数据集市:从数据仓库/数据湖抽取。

数据仓库VS数据集市:

数据湖
随着互联网->移动互联网->IOT物联网,这一条商业智能发展线路的改变。
- 产生了大量的照片、视频、文档等非结构化数据、时序数据。
数据湖允许用户以任意规模存储所有结构化和非结构化数据,并支持对数据进行快速加工和分析。
用户可以按原样存储数据(无需先对数据进行结构化处理),并运行不同类型的分析。
- 从控制面板和可视化到大数据处理、实时分析和机器学习,以指导做出更好的决策。

数据仓库VS数据湖:
数据仓库的成长性很好,而数据湖更灵活。
- 数据仓库支持的数据结构种类比较单一,数据湖的种类比较丰富,可以包罗万象。
数据仓库更加适合成熟的数据当中的分析和处理,数据湖更加适合在异构数据上的价值的挖掘。

湖仓一体
结合了数据湖和数据仓库优势的新范式,直接在低成本存储的数据湖上实现与数据仓库类似的数据结构和数据管理功能。
数据分析师和数据科学家可以在同一个数据存储中对数据进行操作。
- 同时它也能为公司进行数据治理带来更多的便利性。
湖仓一体的实现路径主要有两种。
一是在数据仓库的基础上实现数据湖的特性,一般方案是在数据仓库中建外部表。
- 代表厂商是美国的
SnowFlake
。二是在数据湖中提供与数据仓库中类似的数据结构和数据管理功能,一般方案是实现多版本并发控制等。
- 代表厂商是美国的
Databricks
。两种实现路径均面临相同的问题:
- 如数据如何打通、如何保证元数据一致性、湖和仓上不同引擎之间数据交叉的引用问题等等。
发展过程
数仓发展过程
企业级数据仓库架构:
从左至右依次是数据源、数据清洗、数仓、应用。
数据仓库是面向主题的。
数据仓库是集成的。
数据仓库的数据有来自于分散的操作型数据。
将所需数据从原来的数据中抽取出来,进行加工与集成,统一与综合之后才能进入数据仓库。
数据仓库是不可更新的。
- 数据仓库主要是为决策分析提供数据,所涉及的操作主要是数据的查询。
数据仓库是随时间而变化的。
- 传统的关系数据库系统比较适合处理格式化的数据,能够较好的满足商业商务处理的需求。
企业信息工厂架构:
混合架构:
离线统计分析技术架构:
Lambda
架构(离线+实时结合):
Kappa
架构(批流一体):
基于MPP数据库的实时统一数仓架构-数仓增强:
基于数据湖的实时数仓架构-数据湖增强(湖仓一体):
数据湖和数据仓库的边界正在慢慢模糊,数据湖自身的治理能力、数据仓库延伸到外部存储的能力都在加强。
湖仓一体已成为主流趋势,只是时间而已。
技术栈
数据采集:
从数据源进行数据同步,大致分为:
- 主动查询DB数据批量(离线)同步、基于
DB Log
数据变更(实时)同步2大类。数据清洗:标准的
ETL
数据清洗,大致分为:离线计算(批处理)、实时计算(流处理)2大类。数据应用:
OLAP
在线数据分析、报表、数据大屏、大数据查询服务API。
数据采集
数据采集可以归纳为两大类:离线查询同步、实时变更同步。
离线同步:
离线同步常见技术栈有:
Sqoop、Flume、DataX
。
Flume
Apache Flume
是一个分布式、高可靠、高可用的用来收集、聚合、转移不同来源的大量日志数据到中央数据仓库的工具。
Flume
采集流模式进行数据实时采集。
- 适用于日志文件实时采集,特定文件传输场景使用。
实时同步:
Canal,FlinkCDC
。
FlinkCDC
是Apache Flink
的一组源连接器,使用更改数据捕获(CDC
)从不同的数据库摄取更改。如果需要做全量+增量同步,
FlinkCDC
是一个不错的选择。
数据清洗
数据清洗阶段是大数据的核心能力阶段,主要包含:
- 计算(离线计算、实时计算)+存储(分布式存储)。
离线计算
离线计算领域
Hadoop
的MapReduce
是始祖,有2个衍生技术栈:Pig
和Hive
。最后一个
Spark
相对Hadoop MapReduce
性能上有极大提升。
Hive
并不提供实时的查询和基于行级的数据更新操作。
Hive
的最佳使用场合是大数据集的批处理作业。
实时计算
流式计算领域,有3个典型技术栈:
Storm、Spark Streaming、Flink
。其中
Spark Streaming
是微批拟流,不能算是真流。微批拟流:
- 这意味着每隔几秒就会将传入记录一起批处理,然后在一个小批量中处理,延迟几秒钟。
早期
Storm
用于实时计算,Hadoop
用于离线计算,现阶段已不推荐使用。目前Flink已成为流处理领域的实际标准,且大有一统某些场景的批流一体方案的计算引擎。
分布式存储
最早的
Hadoop HDFS
分布式文件系统,以及基于HDFS
衍生出来的HBase
。