数据库和数据仓储的区别:
> 数据库是面向事务的设计,数据仓库是面向主题设计的。 数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
> 数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。
> 数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。
(维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID)
维度表等价于我们常说的字典表。事实表就是字典表之外的数据表。
1.1 星型
多张维度表,一张事实表,维度表之间没有关系。查询性能要好些,存储有冗余的。星型模型使用的比较多。
1.2 雪花型
雪花型是星型建模的扩展,维度表之间有关系。存储减少冗余,查询性能有损失,需要多级连接。
和星型模型的共性就是只有一张是事实表。
1.3 星座型
星座型也是星型模型的扩展,存在多张事实表。
重要:
一.数仓分层:
操作数据层(Operational Data Store):ODS
明细数据层(Data Warehouse Detail):DWD
汇总数据层(Data Warehouse Summary):DWS
应用数据层(Application Data Store):ADS
ADS层是数据仓库的应用层,一般以业务或者部门划分库,这一层可以为各个业务线创建一个数据库.
ADS层的数据是基于MDS层数据生成的业务报表数据,可以直接作为数据仓库的输出导出到外部的操作型系统中(mysql,hbase等)
通过数据仓库不同层次之间的加工过程实现从数据资产向信息资产的转化,并且对整个过程进行有效的元数据
管理及数据质量管理.
二.为什么进行数据分层???
清晰数据结构:
数据血缘追踪:
减少重复开发:
把复杂问题简单化:
屏蔽原始数据的异常:
屏蔽业务的影响,不必改一次业务就需要重新接入数据.
三.
数据仓库的数据:
源数据层(source)-->贴源层(ods.rds)-->数仓层(dw)-->数据集市层(dm)-->mysql-->报表展示
四.
信息孤岛:在一个单位各个部门之间完全独立,信息无法流动,形成信息孤岛.
信息烟囱:超前甚至过度建设的结果就是产生信息烟囱.
信息技术壁垒:信息表述不标准,没有统一的口径.
分层:
ODS层是将OLTP数据通过ETL同步到数据仓库来作为数据仓库最基础的数据来源。
在这个过程中,数据经过了一定的清洗,比如字段的统一,脏数据的去除等,但是数据的粒度是不会变化的。
ODS层的数据可以只保留一定的时间。
MID中间层是采用Inmon集线器架构的方式,使用范式建模(贴源)的方法。这一层主要是做规范化的事情,比如应用库表非规范化,
字段格式复杂(json格式)需做一些处理。这一层不是必须有的。也不会对外开放使用。
范式建模保证了数据一致性、唯一性、正确性。
DW-DM层是采用Kimball的总线式的数据仓库架构,针对部门(比如财务部门)或者某一主题(比如商户、用户),
通过维度建模(推荐星型模型),构建一致性维度,原子粒度的数据是DW层,按照实体或者主题经过一定的汇总,建设数据集市模型。
数据集市可以为OLAP提供服务。
为什么要分层
空间换时间。通过建设多层次的数据模型供用户使用,避免用户直接使用操作型数据,可以更高效的访问数据。
把复杂问题简单化。讲一个复杂的任务分解成多个步骤来完成,每一层只处理单一的步骤,比较简单和容易理解。而且便于维护数据的准确性,当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
便于处理业务的变化。随着业务的变化,只需要调整底层的数据,对应用层对业务的调整零感知.
分层的价值
高效的数据组织形式【易维护】
面向主题的特性决定了数据仓库拥有业务数据库所无法拥有的高效的数据组织形式,更加完整的数据体系,清晰的数据分类和分层机制。因为所有数据在进入数据仓库之前都经过清洗和过滤,使原始数据不再杂乱无章,基于优化查询的组织形式,有效提高数据获取、统计和分析的效率。
时间价值【高性能】
数据仓库的构建将大大缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,数据仓库的最大优势在于一旦底层从各类数据源到数据仓库的ETL流程构建成型,那么每天就会有来自各方面的信息通过自动任务调度的形式流入数据仓库,从而使一切基于这些底层信息的数据获取的效率达到迅速提升。
从应用来看,使用数据仓库可以大大提高数据的查询效率,尤其对于海量数据的关联查询和复杂查询,所以数据仓库有利于实现复杂的统计需求,提高数据统计的效率。
集成价值【简单化】
数据仓库是所有数据的集合,包括日志信息、数据库数据、文本数据、外部数据等都集成在数据仓库中,对于应用来说,实现各种不同数据的关联并使多维分析更加方便,为从多角度多层次地数据分析和决策制定提供的可能。
历史数据【历史性】
记录历史是数据仓库的特性之一,数据仓库能够还原历史时间点上的产品状态、用户状态、用户行为等,以便于能更好的回溯历史,分析历史,跟踪用户的历史行为,更好地比较历史和总结历史,同时根据历史预测未来。