一、前言:
虽然做数据工作5年了,从传统行业到互联网行业,感觉啥都懂点,但是没有一样可以拿出手的,干活时没问题,但是讲东西却存在问题,最近想系统的学习一下数据仓库只是,顺便记录下,也算是对学习的一个总结。
二、数据仓库
那么,何为数据仓库,根据百度百科介绍,数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制 。
其实说白了,就是存放数据的,随着互联网行业的兴起,数据量不断的增大,通过数据可以发现一些商业信息,给企业带来价值,所以数据仓库对各个公司显得尤为重要,一个好的数据仓库,产生的价值是不可估量的。
数据仓库有啥特点呢?
1、数据仓库是面向主题的,根据不用的主题划分不同的域。
2、数据仓库是集成的,通过对不同来源的数据进行ETL的过程,最后汇总到数据仓库。
3、数据仓库是大容量的,随着时间的变化,数据会会越来越多。
4、一般情况是,数据仓库中的数据是不可以变化的
5、数据仓库一般是非规范化的,也就是不是必须满足3范式,数据是有冗余的。
三、数据模型概念
数据仓库的建设是基于数据模型,高质量的数据对数据仓库有着重要的意义。
数据模型的概念,通过DIKW,金字塔模型,智慧(Wisdom),知识(Knowlege),信息(Information),数据(Data)
数据模型是将数据以标准化的模式组织起来,用来模拟现实世界的信息框架蓝图,容易被人理解,便于计算机实现。数据模型是数据应用的重要基石。
数据使用低质量的模型,那么后期的坑将会无法预估,对工作会造成无法估量的困难,
比如:大量的修改和重做,重复建设,知识丢失,下游开发困难,高成本,数据质量低下,新业务无法开展,需求无法满足等等。
以下是一些低质量的建模。
1、没有准确的捕获到客户的需求,以至于建设好的数据仓库满足不了需求。
2、数据模型不完整,比如:元数据不完整,表的描述不完整,后续人员根本无法使用,这种情况比较经常常见。
3、各层模型与其扮演角色不匹配。各层级关系混乱。
4、数据结构不合理,抽象化不够,造成模型不灵活。
5、没有遵循命名规范,缺少模型的定义和描述。
6、数据模型的可读性差,
7、元数据与数据不匹配。
8、数据模型与企业标准不一致。
高质量的建模会给我们带来哪些好处呢?
1、后期维护简单,节省人力。
2、可以很快的满足客户的需求。
3、更灵活的应对变化。
4、更方便的系统集成。
5、更高的效率。
6、对于客户而言,能发现更多的商业机会。
7、能提前评估风险,减少风险。
四、数据模型基本流程
数据建模一般遵循概念模型-逻辑模型-物理模型的原则,每个模型的职责不同。
概念模型:确定系统的核心以及划清系统范围和边界。
逻辑模型:梳理业务规则及读概念模型的求精。
物理模型:从性能,访问,开发等多方面考虑做系统的实现。
概念模型:
1、注重全局理解而非细节
2、对整体架构做思考。
3、概念模型自上而下,需要不断的沟通。
4、估算项目需要的时间以及项目计划草案。
5、粗略的估算出项目需要的费用。
6、概念模型解决是数据模型工程师和客户破冰之旅,这个阶段达成共识是项目成功的重要条件。
7、概念模型可以帮助划定系统边界以及避免方向性错误。
8、概念模型是未来逻辑模型沟通基础以及逐步求精的依据。
9、概念模型最好用一张纸描述清楚整个模型。
10、与客户达成一致的商用语言。
逻辑模型:
1、应该更精确估算出整个项目需要的时间以及项目计划草案。
2、并且根据计划更精确的估算出项目的费用。
3、当实体数据超过100时,通常情况下需要定义术语表。
4、规范化,可以先规范化再逆规范化,不可一步到位。
5、不可缺少约束的定义。
6、使用case工具做逻辑模型。
7、注重模型的版本管理。
8、不要忽视属性的长度定义和约束定义以及属性的默认值。
9、使用控制数据范围的域。
10、需要同级评审,
11、确定可信赖的数据源,关键属性要用真实的数据验证。
12、需要有一定的抽象化,未来好扩展。
13、关联关系需要强制建立,与概念模型保持一致。
逻辑模型文档比较详细,所有实体属性均需添加,实体间关系要清晰描述,需要使用术语,遵循命名规范,采用case工具创建项目文件,对各个实体以及关键属性必须要有清晰的描述。
物理模型:
1、通常情况下是使用case工具自动生成。
2、应用术语表自动转换生成字段名称。
3、对表空间,索引,视图,物化视图,主键,外键都有命名规则。
4、规范化是在逻辑层完成,本层基本不动
5、通常情况下这层需要DBA的介入,确保性能以及DDL等语句保持一致。
6、做好各种版本控制。
7、这层通常要考虑到性能,数据规模,归档等数据库的优缺点。
物理模型自动生成基础库的表结构,之后手动适当调整,生成数据字典并发布,DDL中需要注意注释的生成。
高质量的数据建模需要对真实世界的抽象而完整,用建模语言表达清晰而准确,需要的框架要稳定,满足当下需求并且可以容纳未来的变化,从企业全的视角出发构建模型,减少数据的冗余,提到性能。