1. DW
1.1 简介
data warehouse(可简写为DW或DWH)数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它并不是所谓的“大型数据库”,而是一整套包括了etl、调度、建模在内的完整的理论体系。数据仓库的方案建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(On-Line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。比较流行的有:AWS Redshift, Greenplum, Hive等。
1.2 主要特点
- 面向主题: 操作型数据库的数据组织面向事务处理任务,而数据仓库中的数据是按照一定的主题域进行组织。主题是指用户使用数据仓库进行决策时所关心的重点方面,一个主题通常与多个操作型信息系统相关。如个人信用分析,面向这一主题,需要从多个不同的方面进行统计分析,从多个操作型信息系统中获取数据并进行分析才能得出结论。
- 集成: 数据仓库的数据有来自于分散的操作型数据,将所需数据从原来的数据中抽取出来,进行加工与融合,统一与综合之后才能进入数据仓库。在加工的过程中必须消除数据的不一致性,以保证数据仓库内的信息是关于整个企业的一致的全局信息。
- 不可修改: 数据仓库中的数据并不是最新的,而是来源于其它数据源。数据仓库主要是为决策分析提供数据,所涉及的操作主要是数据的查询;
- 与时间相关: 数据库保存信息的时候,并不强调一定有时间信息。数据仓库则不同,出于决策的需要,数据仓库中的数据都要标明时间属性。决策中,时间属性很重要。
1.3 与数据库的对比
数据仓库是专门为数据分析设计的,涉及读取大量数据以了解数据之间的关系和趋势。数据库用于捕获和存储数据,例如记录事务的详细信息。
特性 | 数据仓库 | 事务数据库 |
---|---|---|
适合的工作负载 | 分析、报告、大数据 | 事务处理 |
数据源 | 从多个来源收集和标准化的数据 | 从单个来源(例如事务系统)捕获的数据 |
数据捕获 | 批量写入操作通常按照预定的批处理计划执行 | 针对连续写入操作进行了优化,因为新数据能够最大程度地提高事务吞吐量 |
数据标准化 | 非标准化 Schema,例如星型 Schema 或雪花型 Schema | 高度标准化的静态 Schema |
数据存储 | 使用列式存储进行了优化,可实现轻松访问和高速查询性能 | 针对在单行型物理块中执行高吞吐量写入操作进行了优化 |
数据访问 | 为最小化 I/O 并最大化数据吞吐量进行了优化 | 大量小型读取操作 |
1.4 与数据集市的对比
数据集市是一种数据仓库,用于满足特定团队或业务部门(例如财务、营销或销售)的需求。它更小、更集中,并且可能包含最适合其用户社区的数据汇总。
特性 | 数据仓库 | 数据集市 |
---|---|---|
范围 | 集中的多个整合主题领域 | 分散的特定主题领域 |
用户 | 组织级 | 某个社区或部门 |
数据源 | 多个来源 | 单个或多个来源,或数据仓库中已经收集的部分数据 |
大小 | 较大,可达数百 GB 到数 PB | 较小,一般不超过数十 GB |
设计 | 自上而下 | 自下而上 |
数据详细信息 | 完整且详细的数据 | 可能包含汇总数据 |
1.5 与数据湖的对比
与数据仓库不同,数据湖是所有数据(包括结构化和非结构化数据)的中央存储库。数据仓库利用针对分析进行了优化的预定义 Schema。数据湖中未定义 Schema,支持其他类型的分析,例如大数据分析、全文搜索、实时分析和机器学习。
特性 | 数据仓库 | 数据湖 |
---|---|---|
数据 | 来自事务系统、运营数据库和业务线应用程序的关系数据 | 来自 IoT 设备、网站、移动应用程序、社交媒体和企业应用程序的非关系和关系数据 |
Schema | 设计在数据仓库实施之前(写入型 Schema) | 写入在分析时(读取型 Schema) |
性价比 | 更快查询结果会带来较高存储成本 | 更快查询结果只需较低存储成本 |
数据质量 | 可作为重要事实依据的高度监管数据 | 任何可以或无法进行监管的数据(例如原始数据) |
用户 | 业务分析师、数据科学家和数据开发人员 | 数据科学家、数据开发人员和业务分析师(使用监管数据) |
分析 | 批处理报告、BI 和可视化 | 机器学习、预测分析、数据发现和分析 |
1.6 个人愚见:
2.数据分层
2.1.原因
清晰数据结构:每一个数据分层都有它的作用域,这样在使用表的时候能更方便地定位和理解。
数据血缘追踪:简单来讲可以这样理解,我们最终给业务呈现的是一个能直接使用的数据集市,但是它的来源有很多,如果有一张来源表出问题了,我们希望能够快速准确地定位到问题,并清楚它的危害范围。
减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
屏蔽原始数据的异常。
-
屏蔽业务的影响,不必改一次业务就需要重新接入数据。
数据分层自下到上依次为ODS,DW,DM。
2.2. ODS
Operation Data Store(ODS) 数据准备区。数据仓库源头系统的数据表通常会原封不动的存储一份,这称为ODS层,也称为准备区。它们是后续数据仓库层加工数据的来源。
2.3. DW
Data Warehouse Detail(DWD)数据仓库明细层和 Data Warehouse Summary(DWS) 数据仓库汇总层,是业务层与数据仓库的隔离层,是最接近数据源中数据的一层,数据源中的数据进过ETL后装入本层。这一层主要解决一些数据质量问题和数据的完整度问题。DW层的表通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。
2.4. DM
又称数据集市层DM(date market),基于DW上的基础数据,整合汇总成分析某一个主题域的服务数据,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。