大数据开发之数据仓库理论

一、什么是数据仓库

       数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。


1.1 数仓的特点

概括来看,数仓有以下四个特征:

a.数据面向主题

       与传统数据库面向应用进行数据组织的特点相对应,数据仓库中的数据是面向主题进行组织的。
       什么是主题呢?泛指数据的主要内容,在逻辑意义上,可以对应某一宏观的分析领域。数据仓库是主观创建并且面向分析的,它可能随着人的变化而变化,也会随着时间而变化,对应数据的主题也随之会发生变化。


b.数据是集成的

       数据仓库的数据是从原有的分散的多个数据库、数据文件和数据段中抽取来的,数据来源可能既有内部数据又有外部数据。 由于来源于不同联机系统的数据都和不同的逻辑绑定在一起,而数据仓库中的数据绝大多数不能从原有的数据库中直接得到,因此,在数据进入数仓前,必须对数据进行统一和综合,这一步是数据仓库建设中最关键最复杂的一步,所要完成的工作有:

  • 统一数据的不一致之处,例如长度不一致,单位不一致…
  • 对数据综合和计算。数据综合可以是在数据抽取时完成,但更多的是在数据仓库内部生成的;

c.数据非易失的

       数仓中数据主要供企业做决策分析,涉及的数据操作主要是数据查询,所以一般情况下不进行修改操作。数据仓库的数据反映的是一段相当长的时间内历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照进行统计、综合和重组的导出数据,而不是联机处理的数据。数据仓库的目的就是要根据曾经发生的事件进行分析,如果数据是可修改的,将使历史分析变得没有意义;


d.数据是随时间变化的

  • 数仓随时间变化不断添加新的数据内容;
  • 数仓随时间推移不断删除旧的数据内容,超过数据时限的就要被删除;数仓中数据 需要保存较长时限的数据(如十年左右);数据仓库中的数据必须以一定时间段为单位进行统一更新;
  • 数仓中的很多综合数据都和时间挂钩,随着时间变化数据也需要不断重新进行综合;因此数据仓库的数据特征都包含时间项,以标明数据的历史时期;

二、数仓和数据库的区别

       当我们去探究数据仓库和数据库的区别与联系时,我们先要了解的联机事务处理OLTP(On-Line Transaction Processing)和联机分析处理OLAP(On-Line Analytical Processing)之间的区别和联系。
        传统的关系型数据库的主要应用是OLTP,主要是基本的、日常的事务处理;数据仓库系统的主要应用主要是OLAP,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。

OLTPOLAP
应用场景面向事务(行级操作)面向分析(范围操作)
是否更新可更新的只读,只追加
设计模型实体-关系(ER)模型星型、星座模型或雪花模型
数据规模GBTB/PB
数据存储存储瞬时数据存储历史数据
数据表征最新数据状态随时间变化的历史状态

除了以上的区别之外,还有以下根本的区别:

  • 数据库是一种具体数据存储技术,而数据仓库是一种结构体系;在搭建数仓的过程中,我们会用到数据库这种技术支持;
  • 数据库是用来小数据量的读写操作,而后者是用来处理大数据的分析计算工作;传统的关系型数据库中根据业务来设计数据机构,不是为了查询和分析便利而设计的;

三、数仓的数据来源

  • RDMS;eg:MySQL,ORACLE,SQL-SERVER…
  • 日志数据
    • 服务器日志,Tomcat日志等;
    • 用户行为数据,通过前端设置埋点实现日志采集;
  • 第三方提供的数据;
  • 其他渠道数据;

四、数仓的分层

4.1 数仓分层的意义

       数仓分层的目的是:逐层解耦,减少重复计算,降低烟囱式开发。越到底层,越接近业务发生的记录,越到上层,越接近业务目标。具体如下:

  • 清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解,实现业务数据解耦;
  • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算;
  • 统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径
  • 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题

4.2 ODS(Operational Data Store)

       存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。
ODS层的作用:

  • 保持数据原貌不做任何修改,起到备份数据的作用;
  • 数据采用压缩存储,减少磁盘存储空间(如:原始数据100G,可以压缩到10G左右);
  • 创建分区表,防止后续的全表扫描

4.2 DWD(data warehouse detail)

       DWD层是以业务过程为驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。

具体操作如下:

  • 数据清洗:去除空值、过滤核心字段无意义的数据、超过极限范围的数据;
  • 维度退化:对业务数据传过来的表进行维度退化和降维
  • 数据压缩:采用适合的压缩格式对数据进行压缩处理;
  • 数据存储:行式存储转列式存储;

4.3 DWS(data warehouse service)

  • DWS层会在DWD层的数据基础上,对数据做横向的连接,纵向轻度的聚合操作,生成一系列的中间表,提升公共指标的复用性,减少重复加工。统计各个主题对象的当天行为,DWS层的宽表字段,是站在不同维度的视角去看事实表,重点关注事实表的度量值,通过与之关联的事实表,获得不同的事实表的度量值。
  • 构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表

4.4 DM(data market)

       数据集市层,这层数据是面向主题来组织数据的,通常是星形或雪花结构的数据。以分析的主题对象为建模驱动,基于上层的应用和产品的指标需求,构建主题对象的全量宽表DM层主题宽表都记录什么字段?每个维度关联的不同事实表度量值以及首次、末次时间、累积至今的度量值、累积某个时间段的度量值


4.4.1 ADS(application data store)

       为应用数据层,针对大主题指标分别进行分析,根据业务具体需求,做对应的统计分析指标。这层数据是完全为了满足具体的分析需求而构建的数据,也是星形或雪花结构的数据。从数据粒度来说是高度汇总的数据。从数据的广度来说,则并不一定会覆盖所有业务数据,而是DM层数据的一个真子集,从某种意义上来说是DM层数据的一个重复。


五、数仓建模

数据模型建设的意义:

  • 进行全面的业务梳理,改进业务流程;
  • 建立全方位的数据视角,消灭信息孤岛和数据差异;
  • 解决业务的变动和数据仓库的灵活性;
  • 帮助数据仓库系统本身的建设;

六、数仓调优


七、数据维护


PS:如果有写错或者写的不好的地方,欢迎各位大佬在评论区留下宝贵的意见或者建议,敬上!如果这篇博客对您有帮助,希望您可以顺手帮我点个赞!不胜感谢!

原创作者:wsjslient

作者主页:https://blog.csdn.net/wsjslient

参考来源:https://blog.csdn.net/qq_31821675/article/details/107543785

                  https://blog.csdn.net/qq_38202756/article/details/88043197

                  https://blog.csdn.net/lightupworld/article/details/108716552

                  https://blog.csdn.net/zuochang_liu/article/details/81434611


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值