当前位置:   article > 正文

详解数据仓库分层设计_数据仓库ods dwd dws ads

数据仓库ods dwd dws ads

为了清晰数据结构,方便数据血缘跟踪,减少重复开发,简化复杂问题,屏蔽原始数据的异常与业务的影响,在设计数据仓库体系时通常需要对其逻辑分层。本文我们主要理解一下数据仓库中各个分层的作用。

数据仓库从上到下,分为ODS层、DWD层、DWS层和ADS层,另外还有一个特置的维度DIM层。

1 ODS

贴源层,Operation Data Store,顾名思义,是将数据源中的数据经过抽取、简单的洗净、传输到本层。

数据仓库中的ODS层数据结构保持和源系统数据库表结构相同,方便数据的快速存储。有的公司ODS层数据不做任何的过滤处理,会将数据的清洗放到DWD层来处理,也有的公司会在数据进入ODS层时做精细化的过滤操作,这个其实并没有明确的规定,需结合每个公司要求的技术规范。

ODS层的表通常包括两类,一个用于存储当前需要加载的数据,另一个用来存储处理完成的历史数据。历史数据一般保存3-6个月后需要清除,以节省存储空间。

ODS层的主要功能:

  • ODS是后面数据仓库的准备区
  • 为DWD层提供原始的数据
  • 减少对业务系统的影响

ODS层的数据来源:

  • 业务系统库:公司内的业务应用系统产生的数据,一般通过JDBC方式获取,分为全量获取和增量获取。
  • 外部数据:一般为公司外购数据或爬虫获得的数据,将所采集的数据汇总到一起。
  • 网站埋点数据:收集用户的行为日志,以及一些其他类型的日志型数据。

2 DWD层

数据明细层,Data Warehouse Details,从该层开始,进入了数据仓库的核心层,该层是业务层和数据仓库的隔离层,主要是对ODS层的数据进行清洗和数据规范化的操作,比如去除空数据、脏数据,数据标准化等,也就是我们常说的落标层。

为了提高DWD层的易用性,该层会采用维度退化的方法,将维度退化至事实表中,减少事实表和维度表的关联。

这里涉及到一个概念叫维度退化,我们举个例子解释一下。当一个维度没有数据仓库需要的任何数据时,我们就可以进行维度退化操作。例如:订单表中的订单id,这种量级很大的维度,没有必要用一张单独的维度表来进行存储,但是我们在数据分析时订单id又非常的重要,那我们就将订单id冗余到事实表中,这种维度就叫退化维度。

另外一个概念叫事实表。事实表和维度表是我们在数据仓库维度建模常用的两个概念。事实表是指存储有事实记录的表,比如系统日志、销售记录等。事实表中的记录在不断地增长,事实表中的数据量通常是远大于其他表的。事实表的表结构一般是各种维度ID的集合以及实际发生的事实数据。

维度建模的另一个概念,维度表,我们会单独把他们放到下面的DIM层中。

3 DWS层

数据服务层,Data Warehouse Service,该层基于DWD层的基础数据,整合汇总成分析某一个主题域的数据服务层,一般一个主题对应1-3个大宽表,用于提供后续的业务查询,OLAP分析等。

该层的数据表会相对较少,因为我们会将比较多的字段集合到一张表中,因此叫做大宽表。

举个例子,我们会将涉及到用户的指标信息(具体哪些指标,需要看BI应用展示哪些)全部集成到一张宽表中,在该表中,维度只有用户维和时间维,计算出涉及用户的指标有:登陆次数、访问次数、添加购物车次数、购买商品数、购买金额、订单次数、退货次数等,提供更多时间维度数据,比如天、周、月级的数据。

4 DIM层

公共维度层(DIM,Dimension),为了便于维度表的管理,特设置该层。该层比较单纯,就是将一些维度信息存放在该层。比如数据仓库的上层BI应用是要统计全国范围内某款产品的销量情况,我们就可以将国家省份地址维度数据、产品维度数据、年月日时间维度数据等存放在该层。

5 ADS层

数据应用层,Application Data Service,该层主要是面向数据产品和数据分析使用的数据,应用层主要是各个业务方或者部门基于DWD和DWS建立的数据集市,相对于DW层,应用层只包含业务方自己关心的DWD层和DWS数据。该层数据面向特定的业务,一般会将数据存放在MySQL、SQL Server、Oracle等数据库中。

数仓层内部的划分不是为了分层而分层,分层是为了解决 ETL 任务及工作流的组织、数据的流向、读写权限的控制、不同需求的满足等各类问题。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/806480
推荐阅读
相关标签
  

闽ICP备14008679号