一、数仓架构
- 本项目的数据是事务数据,都存储在mysql数据库,如果是其他的项目,那数据可能会在文本、爬虫等。
- 要使用相关的组件将数据导入到HDFS上。(因为要把数据导入到hive做数据管理、存储和分析,而hive就是在hfds上)。
- dolphin schedule是定时调度,因为每天都要采集数据并且加载到数仓进行分析,所以开启定时调度。
二、 数仓建模方法论
什么是数据模型?
数据模型就是数据组织和存储的方法,他强调从业务、数据存取和使用角度和你来存储数据。
2.1 ER模型
实体-关系模型。
- 实体关系模型将复杂的数据抽象为两个概念--实体和关系,实体表示一个对象,例如学生、班级,关系是指两个实体之间的关系,例如学生和班级之间的从属关系。
-
数据库规范化是使用一系列范式设计数据库(通常是关系型数据库)的过程,其目的是减少数据冗余,增强数据的一致性。
数据库的三个范式:(为了减小数据冗余)
- 第一范式:每个列都不可以再分。
- 第二范式: 在第一范式的基础上,非主键列完全依赖于主键,而不能是依赖于主键的一部分。(这适用于在多个主键的情况下,比如现在有三个主键,那么非主键必须要靠这三个主键才能确定,不能是依靠一个活两个(部分)就确定下来)
- 第三范式:在第二范式的基础上,非主键列只依赖于主键,不依赖于其他非主键。
ER模型表比较离散,必须遵循数据库的三大范式。
2.2 维度模型
维度模型将复杂的业务通过事实和维度两个概念进行呈现,事实通常对应于业务过程,维度对于业务过程发生所处的环境。
什么是业务过程?下单,收货、退款等,表示动作。
维度模型会存在数据冗余问题 。
其中位于中心的SalesOrder为事实表,其中保存的是下单这个业务过程的所有记录。位于周围每张表都是维度表,包括Date(日期),Customer(顾客),Product(产品),Location(地区)等,这些维度表就组成了每个订单发生时所处的环境,即何人、何时、在何地下单了何种产品。从图中可以看出,模型相对清晰、简洁。