数据仓库基础

本文介绍了数据仓库的概念及其与传统数据库的区别,重点讲述了数据仓库的层级结构,并解释了每一层的作用和特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据仓库是什么

         数仓是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。主题是从管理运营角度出发,为了分析数据,分为用户主题、商品主题、设备主题等有助于决策的数据模型。随着互联网的发展,数据源头越来越多且是分散的,除了业务库,APP 埋点,web 网站、 log日志,IOT 设备等会产生各种各样的海量数据,这些数据在进入数据仓库之前(或之后),需要进行统一处理(字段定义、主题归属、项目划分等),再数据集成在一起。数仓中的数据是不可修改的,主要用于数据的查询,是相对稳定的。数仓的数据一般都带有时间特征,数据是随着时间的变化而变化的。是不同时间点的数据库快照的集合,反应历史变化。

数仓和数据库的区别

 OLTPOLAP
用户业务处理决策者、运营分析
DB设计面向应用面向主题
工作单位简单的事务复杂的查询
DB大小MB-GBGB、TB、PB、EB
时间要求实时对实时要求不严格
主要应用数据库数据仓库

数据仓库优点

  1. 空间换时间:通过建设多层次的数据模型供用户使用,避免用户直接使用业务库数据,可以提高查询速度。
  2. 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
  3. 清晰数据结构:每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。
  4. 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算。
  5. 统一数据口径:通过数据分层,提供统一的数据出口,统一输出口径

数据模型介绍

我们将数据模型分为三层:

  1. 数据运营层( ODS ):存放的是接入的原始数据

  2. 数据仓库层(DW)    :存放我们要重点设计的数据

  3. 数据应用层(APP)   :面向业务定制的应用数据

一、数据运营层:ODS(Operational Data Store)
       数据运营层是最接近数据源中数据的一层,数据源中的数据经过抽取传入到本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类。 

二、数据仓库层:DW(Data Warehouse)
         数据仓库层是我们在做数据仓库时要核心设计的一层,从 ODS 层中获得的数据按照主题建立各种数据模型。DW层又细分为 DWD(Data Warehouse Detail)层、DWM(Data WareHouse Middle)层和DWS(Data WareHouse Servce)层。

  1. 数据明细层:DWD(Data Warehouse Detail)
    该层一般保持和ODS层一样的数据粒度,会对数据进行降噪、去重等处理,提高数据分析的准确度。另外,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。

  2. 数据中间层:DWM(Data WareHouse Middle)
    该层会在DWD层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工。
    直观来讲,就是对通用的核心维度进行聚合操作,算出相应的统计指标。

  3. 数据服务层:DWS(Data WareHouse Servce)
    又称数据集市或宽表。按照业务划分,如流量、订单、用户等,生成字段比较多的宽表,用于提供后续的业务查询,OLAP分析,数据分发等。
    一般来讲,该层的数据表会相对比较少,一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表。
    在实际计算中,如果直接从DWD或者ODS计算出宽表的统计指标,会存在计算量太大并且维度太少的问题,因此一般的做法是,在DWM层先计算出多个小的中间表,然后再拼接成一张DWS的宽表。由于宽和窄的界限不易界定,也可以去掉DWM这一层,只留DWS层,将所有的数据在放在DWS亦可。

三、数据应用层:APP(Application)
       主要是提供给数据产品和数据分析使用的数据,一般会存放在 ES、SqlServer、Redis等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供数据分析和数据挖掘使用。比如我们经常说的报表数据,一般就放在这里。

四、维表层(Dimension)
       维表层主要包含两部分数据:
高基数维度数据:一般是用户资料表、商品资料表类似的资料表。数据量可能是千万级或者上亿级别。
低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者省市区、国家等维表。数据量可能是个位数或者几千几万。
至此,我们讲完了数据分层设计中每一层的含义,这里做一个总结便于理解,如下图。
在这里插入图片描述

五 、举例讲解

六、 数仓搭建方案

模式

优势

劣势

场景

实时计算

1、实时统计、分析

2、框架扩展性强

1、计算逻辑较为简单

2、数据准确度低

3、稳定性差

1、实时分析:如实时日志处理、交通流量分析等

2、实时统计:如网站的实时访问统计、排序等

3、实时推荐:如实时的广告定位、时间营销等

离线计算

1、数据准确度高

2、可适应复杂逻辑处理

3、稳定性好,可重复计算

1、时间延迟

2、抽取数据时,资源消耗大

3、抽取数据失败时,需要手动重跑

1、报表分析:如给领导提供分析、决策的报表等

2、精准营销:对不同客户定制营销推广等

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值