1.1 数据仓库概念
数据仓库是一个为数据分析而设计的企业级数据管理系统。数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策。同时,随着时间的推移,数据仓库中积累的大量历史数据对于数据科学家和业务分析师也是十分宝贵的。
1.2 数据仓库核心架构
Spark计算过程中,存在shuffle的操作,而shuffle会将计算过程一分为二,分为2个阶段(Stage)
从计算流程来讲,前一个阶段如果不执行完,后一个阶段不允许执行
数据仓库中的不同步骤也存在同样的情况,前面的步骤不执行完,后面的步骤不允许执行
数据仓库中不称之为阶段,称之为层,每一层就有自己的名称以及对应的逻辑和概念
2.1 数据仓库建模的意义
数据模型就是数据组织和存储方法,它强调从业务、数据存取和使用角度合理存储数据。只有将数据有序的组织和存储起来之后,数据才能得到高性能、低成本、高效率、高质量的使用。
Ø 高性能:良好的数据模型能够帮助我们快速查询所需要的数据。
Ø 低成本:良好的数据模型能减少重复计算,实现计算结果的复用,降低计算成本。
Ø 高效率:良好的数据模型能极大的改善用户使用数据的体验,提高使用数据的效率。
Ø 高质量:良好的数据模型能改善数据统计口径的混乱,减少计算错误的可能性。
2.2 数据仓库建模方法论
2.2.1 ER模型
数据仓库之父Bill Inmon提出的建模方法是从全企业的高度,用实体关系(Entity Relationship,ER)模型来描述企业业务,并用规范化的方式表示出来,在范式理论上符合3NF。
1)实体关系模型
实体关系模型将复杂的数据抽象为两个概念——实体和关系。实体表示一个对象,例如学生、班级,关系是指两个实体之间的关系,例如学生和班级之间的从属关系。
2)数据库规范化
数据库规范化是使用一系列范式设计数据库(通常是关系型数据库)的过程,其目的是减少数据冗余,增强数据的一致性。
这一系列范式就是指在设计关系型数据库时,需要遵从的不同的规范。关系型数据库的范式一共有六种,分别是第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF)。遵循的范式级别越高,数据冗余性就越低。
获取所有数学满分的学生名称
select sname from t_user where cid = 数学 and score = 100
select a.sname from t_user a join t_score b on a.id = b.sid where b.cid = 数学 and b.score = 100
获取学生编号1002的学生姓名以及老师的姓名
select sname, tname from t_student where id = 1002
select a.sname, b.tname from t_student a join t_teacher b on a.tid = b.id where a.id = 1002