数仓特性、数仓分层、OLAP、OLTP、数据集市 名词概念

数据仓库是面向主题的,集成多个数据源,具有非易失性和时变性特征。它通过ETL过程从数据库和其他系统抽取数据,进行转换和加载。数据仓库与数据库不同,后者面向事务,前者用于分析。数据集市是数据仓库的一部分,专注于单一主题。分层设计包括ODS、DW、APP/ADS层,确保数据结构清晰、追踪、减少重复开发和简化问题。OLTP处理日常事务,而OLAP用于数据分析。
摘要由CSDN通过智能技术生成

数据仓库

数据仓库的主要特征

面向主题

数据库的特点是面向应用进行数据的组织,各个业务系统数据,可能是互相分离的。数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织

如何理解主题:假设要分析一个系统 所有用户,这个用户就是主题。 要分析一个系统 申报项目 申报项目就是主题

集成性

数据仓库中存储的数据是来源于多个数据源的集成,原始数据来自不同的数据源,存储方式各不相同。要整合成为最终的数据集合,需要从数据源经过一系列抽取(Extract)、转换(Transform)、Load(加载)的过程,简称 ETL

非易失性

数据仓库中保存的数据是一系列历史快照,不允许被修改。用户只能通过分析工具进行查询和分析。我们是通过数仓去分析数据中的规律,而不是去创造修改其中的规律。因此数据进入数据仓库后,它便稳定且不会改变

时变性

数据仓库包含各种粒度的历史数据,数据可能与某个特定日期、星期、月份、季度或者年份有关。虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是永远不变的。分析的结果只能反映过去的情况,当业务变化后,挖掘出的模式会失去时效性。因此数据仓库的数据需要随着时间更新,以适应决策的需要。从这个角度讲,数据仓库建设是一个项目,更是一个过程。
数据仓库的数据随时间的变化表现在以下几个方面。
数据仓库的数据时限一般要远远长于操作型数据的数据时限。
操作型系统存储的是当前数据,而数据仓库中的数据是历史数据。
数据仓库中的数据是按照时间顺序追加的,它们都带有时间属性

数据库和数据仓库

  1. 数据库是面向事务的设计,数据仓库是面向主题设计的。
  2. 数据库一般存储业务数据,数据仓库存储的一般是历史数据。
  3. 数据库设计是尽量避免冗余,一般针对某一业务应用进行设计,比如一张简单的User表,记录用户名、密码等简单数据即可,符合业务应用,但是不符合分析。数据仓库在设计是有意引入冗余,依照分析需求,分析维度、分析指标进行设计。
  4. 数据库是为捕获数据而设计,数据仓库是为分析数据而设计
  5. 企业中一般先有数据库,然后有数据仓库,可以没有数据仓库,但是不能没有数据库,数据仓库不是大型的数据库,只是一个数据分析的平台

数据集市和数仓

数据集市可以看作数仓的一个子集,数据集市往往对应的是单一主题的,而数仓则是包含多个主题的。数据集市也可以被称作为 小型的数仓

数据仓库的分层设计

如图所示,这是目前一种通用的数据分层设计。企业在实际运用中可以基于这个基础分层之上添加新的层次,来满足不同的业务需求。
我们将数据模型分为三层:数据运营层(ODS)、数据仓库层(DW)和数据应用层(APP)(或数据产品层ADS)
ODS层存放的是接入的原始数据,DW层是存放我们要重点设计的数据仓库中间层数据,APP/ADS是面向业务定制的应用数据
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cuRHISaM-1689143144730)(C:images\image-20230711152152295.png)]

分层详细介绍

原始数据层ODS(Operational Data Store)

此层存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。主要完成基础数据引入到数仓的职责,和数据源系统进行解耦合,同时记录基础数据的历史变化。

处理数据职责:

  1. 根据源业务系统表的情况以增量或全量方式抽取数据;
  2. ODS层以流水表和快照表为主,按日期对数据进行分区保存,不使用拉链表;
  3. ODS层的数据不做清洗和转换,数据的表结构和数据粒度与原业务系统保持一致
数据仓库层:DW(Data Warehouse)

数据仓库层从上到下,又可以分为3个层:数据细节层DWD、数据中间层DWM、数据服务层DWS。
主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。

数据细节层 DWD(Data Warehouse Details)

DWD层的数据是经由ODS层数据经过清洗、转换后的明细数据,满足对标准化数据需求。如对NULL值处理,对数据字典解析,对日期格式转换,字段合并、脏数据处理等。
处理数据职责:

  1. 数据结构与ODS层一致,但可以对表结构进行裁剪和汇总等操作;
  2. 对数据做清洗、转换;
  3. DWD层的数据不一定要永久保存,具体保存周期视业务情况而定
数据中间层:DWM(Data Warehouse Middle)

该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。

处理数据职责:

  1. 对通用的核心维度进行聚合操作,算出相应的统计指标
数据服务层:DWS(Data Warehouse Middle)

DWS层数据 按主题对数据进行抽象、归类,提供业务系统细节数据的长期沉淀。这一层是一些汇总后的宽表,是根据DWD层数据按照各种维度或多种维度组合,把需要查询的一些事实字段进行汇总统计。可以满足一些特定查询、数据挖掘应用,面向业务层面,根据需求进行汇总。
处理数据职责:

  1. 面向全局、数据整合;
  2. 存放最全的历史数据,业务发生变化时易于扩展,适应复杂的实际业务情况;
  3. 尽量减少数据访问时的计算量,优化表的关联。维度建模,星形模型;
  4. 事实拉宽,度量预先计算, 基本都是快照表。反规范化,有数据冗余
数据应用层:ADS(Application Data Service)

层主要是提供给数据产品和数据分析使用的数据,一般会存放在ES、Redis、PostgreSql等系统中供线上系统使用;也可能存放在hive或者Druid中,供数据分析和数据挖掘使用,比如常用的数据报表就是存在这里的。
面向最终用户,面向业务定制提供给产品和数据分析使用的数据。包括前端报表、分析图表、KPI、仪表盘、OLAP专题、数据挖掘等分析。

维表层:DIM(Dimension)

维度表(Dimension Table)或维表,有时也称查找表(Lookup Table),是与事实表相对应的一种表;它保存了维度的属性值,可以跟事实表做关联,相当于将事实表上经常重复出现的属性抽取、规范出来用一张表进行管理。维度表主要是包含两个部分:
高基数维度数据:一般是用户资料表、商品资料表类似的资料表,数据量可能是千万级或者上亿级别
低基数维度数据:一般是配置表,比如枚举字段对应的中文含义,或者日期维表等;数据量可能就是个位数或者几千几万。
常见的维度表有:日期表(存储与日期对应的周、月、季度等的属性)、地点表(包含国家、省/州、城市等属性)等。

分层设计的意义

数据结构化更清晰

对于不同层级的数据,他们作用域不相同,每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

数据血缘追踪

提供给外界使用的是一张业务表,但是这张业务表可能来源很多张表。如果有一张来源表出问题了,我们可以快速准确的定位到问题,并清楚每张表的作用范围。

减少重复开发

数据分层规范化,开发一些通用的中间层数据,能够减少重复计算,提高单张业务表的使用率。

简化复杂的问题

把一个复杂的业务分成多个步骤实现,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。

减少业务的影响

业务可能会经常变化,这样做就不必改一次业务就需要重新接入数据

OLTP 和OLAP

OLTP(On-Line Transaction Processing) :联机事务系统

主要是执行基本日常的事务处理,比如数据库记录的增删查改。传统的关系型数据库系统作为数据管理的主要手段,主要用于操作型处理。OLTP系统的典型应用就是RDBMS,也就是我们俗称的数据库,当然这里要特别强调此数据库表示的是关系型数据库,用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。

OLAP(On-Line Analytical Processing) :联机分析系统

主要目标是做数据分析。数据仓库是OLAP系统的一个典型示例,主要用于数据分析

ETL 过程

建立OLAP应用之前,我们要想办法把各个独立系统的数据抽取出来,经过一定的转换和过滤,存放到一个集中的地方,成为数据仓库。这个抽取,转换,加载的过程叫ETL(Extract, Transform,Load),目的是将企业中分散、零乱、标准不统一的数据整合到一起。
ETL是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持ETL的正常和稳定。

抽取(Extract)

抽取的数据源分为结构化数据、非结构化数据,半结构化数据。
结构化一般采用JDBC、数据库日志方式,非结构或半结构化数据会建通文件变动。
抽取方式:
全量抽取:适用于数据量小且不容易判断其数据发生改变的诸如关系表,维度表,配置表等,一般用于初始化数据。
增量抽取:适用于数据量大,为了节省抽取时间而采用的抽取策略,一般用于数据更新

转换(Transform)

空值处理:将空值替换为特定值或直接过滤掉
验证数据正确性:把不符合业务含义的数据做统一处理
规范数据格式:比如把所有日期都规范成YYYY-MM-DD的格式
数据转码:把一个源数据中用编码表示的字段通过关联编码表转换成代表其真实意义的值
数据标准统一:比如在源数据中表示男女的方式有很多种,在抽取的时候直接根据模型中定义的值做转化。
注:主要是针对非结构化或半结构化数据

加载

就是将处理完的数据导入到对应的目标源里

ETL 和ELT

数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是ETL(抽取Extra, 转化Transfer, 装载Load)的过程。但是在实际操作中将数据加载到仓库却产生了两种不同做法:ETL和ELT。

首先从数据源池中提取数据,这些数据源通常是事务性数据库。数据保存在临时暂存数据库中。然后执行转换操作,将数据结构化并转换为适合目标数据仓库系统的形式。然后将结构化数据加载到仓库中,以备分析
在这里插入图片描述

使用ELT,数据在从源数据池中提取后立即加载。没有临时数据库,这意味着数据会立即加载到单一的集中存储库中。数据在数据仓库系统中进行转换,以便与商业智能工具和分析一起使用。大数据时代的数仓这个特点很明显

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值