数据仓库分层设计思想
在大数据分析中,我们希望我们分析的数据在整个分析流程中有秩序的流转,数据的整 个流程能够清晰明确的被我们掌握使用。
上图中的数据流转我们更希望得到 A 图中的数据流转过程。所以我们希望有一套行之 有效的数据组织和管理方法来让我们的数据更有序,这就需要在数据处理中进行数据分层的 原因。基于大数据的数据仓库建设要求快速响应需求,同时需求灵活多变,对实时性有不同 的要求,除了面向 DSS、BI 等应用外,还要响应用户画像、个性化推荐、机器学习、数据 分析等各种复杂的应用场景,实际上在大数据开发中,涉及到数仓设计都会进行分层设计。
数据分层好处如下:
- 清晰的数据结构:每层数据都有各自的作用域和职责,在使用表的时候更方便定位 和理解。
- 减少重复开发:规范数据分层,开发一层公用的中间层数据,减少重复计算流转数 据。
- 统一数据出口:通过数据分层,提供统一的数据出口,保证对外输出数据口径一致。
- 简化问题:通过数据分层,将复杂的业务简单化,将复杂的业务拆解为多层数据, 每层数据负责解决特定的问题。
- ODS(Operational Data Store)层 - 操作数据层
ODS 层,操作数据层,也叫贴源层,本层直接存放从业务系统抽取过来的数据,这些数 据从结构上和数据上与业务系统保持一致,降低了数据抽取的复杂性,本层数据大多是按照 源头业务系统的分类方式而分类的。一般来讲,为了考虑后续可能需要追溯数据问题,因此 对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据即可。 - DW(Data Warehouse)层 - 数据仓库层
数据仓库层是我们在做数据仓库时要核心设计的一层,本层将从 ODS 层中获得的数据 按照主题建立各种数据模型,每一个主题对应一个宏观的分析领域,数据仓库层排除对决策 无用的数据,提供特定主题的简明视图。DW 层又细分为 DWD(Data Warehouse Detail) 层、DWM(Data Warehouse Middle)层和 DWS(Data Warehouse Service)层。
1 .数据明细层:DWD(Data Warehouse Detail)
该层一般保持和 ODS 层一样的数据粒度,并且提供一定的数据质量保证,在 ODS 的基础上对数据进行加工处理,提供更干净的数据。同时,为了提高数据明细层的易用性,该层 会采用一些维度退化手法,当一个维度没有数据仓库需要的任何数据时,就可以退化维度, 将维度退化至事实表中,减少事实表和维表的关联。例如:订单 id,这种量级很大的维度, 没必要用一张维度表来进行存储,而我们一般在进行数据分析时订单 id 又非常重要,所以 我们将订单 id 冗余在事实表中,这种维度就是退化维度。
2 .数据中间层:DWM(Data Warehouse Middle)
该层会在 DWD 层的数据基础上,对数据做轻度的聚合操作,生成一系列的中间表,提 升公共指标的复用性,减少重复加工处理数据。简单来说,就是对通用的维度进行聚合操作, 算出相应的统计指标,方便复用。
3 .数据服务层:DWS(Data Warehouse Service)
该层数据表会相对比较少,大多都是宽表(一张表会涵盖比较多的业务内容,表中的字 段较多)。按照主题划分,如订单、用户等,生成字段比较多的宽表,用于提供后续的业务 查询,OLAP 分析,数据分发等。
在实际业务处理中,如果直接从 DWD 或者 ODS 计算出宽表的统计指标,会存在计算量 太大并且维度太少的问题,因此一般的做法是,在 DWM 层先计算出多个小的中间表,然后 再拼接成一张 DWS 的宽表。由于宽和窄的界限不易界定,也可以去掉 DWM 这一层,只留 DWS 层,将所有的数据在放在 DWS 也没有问题。
4 .DM(Data Mart)层 - 数据集市层
数据集市层,也可以称为数据应用层,基于 DW 上的基础数据,整合汇总成分析某一个 主题域的报表数据。主要是提供给数据产品和数据分析使用的数据,一般会存放在 ES、 PostgreSql、Redis 等系统中供线上系统使用,也可能会存在 Hive 或者 Druid 中供 数据分析和数据挖掘使用。比如我们经常说的报表数据,一般就放在这里。
数据仓库分层设计思想相关推荐
- 【嵌入式Linux】嵌入式Linux驱动开发基础知识之LED驱动框架--面向对象、分层设计思想
文章目录 前言 1.LED驱动程序框架 1.1.对于LED驱动,我们想要什么样的接口? 1.2.LED驱动要怎么写,才能支持多个板子?分层写 1.3.程序分析 驱动程序 应用程序 Makefile 1 ...
- Linux设备驱动的分层设计思想
1.1 设备驱动核心层和例化 在面向对象的程序设计中,可以为某一类相似的事物定义一个基类,而具体的事物可以继承这个基类中的函数.如果对于继承的这个事物而言,其某函数的实 现与基类一致,那它就可以直接继 ...
- 源码解读Dubbo分层设计思想
I作者:vivo互联网服务器团队-Wang Genfu 一.Dubbo分层整体设计概述 我们先从下图开始简单介绍Dubbo分层设计概念: (引用自Duboo开发指南-框架设计文档) 如图描述Dubbo ...
- C语言软件分层的方法,单片机程序分层设计思想
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 如今C语言已经成为单片机程序设计公认的语言.我用C语言进行单片机程序设计也有两年多的时间了,C语言程序的特点使我对单片机开发更加感兴趣.让我从一个了解单片 ...
- 数据仓库分层设计(基于Hive)
1.数据仓库逻辑分层架构 先来看数据仓库的逻辑分层架构: 分层名称可能不一样,但基本是都是这样 想要看懂数据仓库的逻辑分层架构,先要弄懂以下概念 数据源 : 数据来源,互联网公司的数据来源随着公司的规 ...
- linux设备分层优点,Linux设备驱动的分层设计思想
代码清单8第2行获取platform_data,而platform_data实际上是定义GPIO按键硬件信息的数组,第31行的for循环工具这些信息申请GPIO并初始化中断,对于LDD6140电路板而 ...
- python中locator_locator 分层设计思想
locator 分层 登录页面元素定位,都是放在 PageObjects 目录下的 login_page.py 文件下的 LoginPage 类下 元素定位分层 这个登录页面要用到的元素定位还是比较少 ...
- 数据仓库之建模理论以及仓库设计思想
1.数据仓库 1.1.数据仓库概述 数据仓库是一个为数据分析而设计的企业级数据管理系统.数据仓库可集中.整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策.同时 ...
- 数据仓库架构分层设计
数据仓库架构分层设计包括STG(数据缓冲层).ODS(数据操作层).DWD(数据明细层).DWS(主题汇总层)和ADM(数据应用层). 1.STG层 主要完成业务系统结构化数据引入到数据中台,保留业务 ...
- 数据仓库(6)数仓分层设计架构
目前主流的数据仓库分层大多为四层,也有五层的架构,这里介绍基本的四层架构. 分别为数据贴源层(ods).数据仓库明细层(dw).多维明细层(dws)和数据集市层(dm). 下面是架构图: ...
最新文章
- Android开发工作中遇到的重点和难点总结
- 如何更改Windows 10锁屏界面超时时间
- 32linux下安装mysql5.7_Linux系统下以RPM方式安装mysql-5.7.9
- 【学习记录】网络层——IP数据报(格式与分片)
- 离京2小时,快手百亿入云,一切为了「看见」
- Linux 中 Iptables 规则定义
- 哪种语言更适合做自动化测试?
- 电商详情页的一般实现
- Chrome浏览器解决主页被劫持的问题
- java ee7教程_JavaEE 7.0 Web技术教程 -解道Jdon
- MySQL--创建表
- 常见的DNS记录类型有哪些?如何查询DNS解析记录?
- 我国开始研制电子计算机,我国从( )年开始研制电子计算机。
- RT-Thread驱动——RTC PCF8563
- 比 Redis 还快,更省内存,开源,惊爆了!
- 标签管理--操作标签
- 计算机空格符号,电脑打印出现空格符号怎么办
- c语言如何框出视频或图像中的车辆,[转载]视频图像中的车辆检测跟踪和分类
- 主控AU6989SN-GTC/AU6998SN [F500] - F/W FD04,爱国者U盘被写保护怎么办?
- el-checkbox 自定义 复选框【多选框】