什么是数仓?和数据库有什么区别
数据库是按照结构来组织存储数据的仓库,用户可以对其中的数据进行增删改查操作,数据库主要是面向事务处理任务。数据库的数据多是面向业务的,对企业战略决策信息作用有限。原因大致有
1.一个企业中,数据分散在不同的系统中,甚至可能存储在不同的数据库里。比如说核心系统用的mysql,客户系统在oracle当中。
2.关系型数据库存储的一半是业务数据,不包含趋势变化,用户行动轨迹。比如用户浏览A界面,看到商品B,到B界面看到商品C后下单,关系型数据库可以知道下单了C,但是一般不会存储用户下单前的轨迹信息。但是这些信息对企业来说可能很有作用
3.决策者可能得从多个角度去观察数据,年月日,季度,国家地区等等,关系型数据库并不适合各种角度的分析。
数据仓库(Data WareHouse,DW / DWH),数据仓库是面对主题的,集成的,稳定的,反应历史变化信息的数据集合,可以对管理者进行决策支持。
数据仓库将各个系统的数据收集起来,进行数据清洗,管理,找出战略决策信息。
DW 特点
面向主题
主题指的是数据仓库决策时关心的重点方面,一个主题可能与多个信息系统相关,如图的保险主题就涉及了养老保险、医疗保险、汽车保险等多个系统
数据集成
数仓当中的数据是对原有的数据进行抽取、清洗的基础上,进行加工汇总整理得到的,会消除数据源的不一致性。比如在某个系统中,性别是男,在其他系统中是 1,DW拿到数据后就会将其统一。
相对稳定
数仓一般不进行更新和删除操作,历史数据一般都会被长期保留。也就是说数仓中有大量的查询操作,基本上没有更新删除操作。例如,在关系型数据库中,用户状态在线离线无非更新一下状态,但是DW中每次都会新增一条数据,不会更新状态,这样更方便分析用户行为
反应历史变化
DW中一般都会包含历史信息,从某个节点到当前各个阶段的信息,通过这些信息来制定规划或者智能推荐等。
DW建模
Bill Inmon模型
Bill Inmon 首先提出了建模方法,由数据库到dw到数据集市(提供服务)Inmon的建模方法使得数据符合数据库三范式,但是设计困难,开始时没能成功
Ralph Kimball 模型
Kimball主张自下而上的建立数据仓库,极力推崇建立数据集市,但因此数据一致性也往往有问题。
Bill Inmon CIF(Corporation information factory) 维度建模
Bill Inmon最终结合两派优点,提出了维度建模的概念。这种方法的最被人广泛知晓的名字就是星型模式(Star-schema)、雪花模型(Snow-schema)。
即通过一张事实表和多张维度表。事实表由维度列和度量列组成,发生在现实世界中的操作型事件,其所产生的可度量数值,存储在事实表中。
维度表包含了维度的每个成员的特定名称。维度成员的名称称为“属性”(Attribute)。
维度模型的优缺点大致如下:
1、数据冗余小(因为很多具体的信息都存在相应的维度表中了,比如客户信息就只有一份)
2、结构清晰(表结构一目了然)
3、便于做OLAP分析(数据分析用起来会很方便)
4、扩展性好
5、增加使用成本,比如查询时要关联多张表
6、如果只是依靠单纯的维度建模, 不能保证数据来源的一致性和准确性,而且在数据仓库的底层,不是特别适用于维度建模的方法。