为什么需要数据仓库?
公司发展壮大,人员越来越多,业务越来越多,导致数据非常分散,有的部门数据可能简单存放在Excel里面,有的部门数据可能存放在Mysql里面。导致数据脏乱,还缺少历史,性能慢等。创建数据仓库,使所有的数据统一管理,规范化。
什么是数据仓库?
1.分析数据的中央存储库
2.业务分析师,数据科学家和决策者通过商业智能工具(BI)、sql客户端和其他分析应用程序访问数据
3.数据仓库可以高效的存储数据,并以极快的速度同时向成千上万的用户提供分析查询结果
数据库分类
操作型数据库OLTP:
1.面向应用,用于业务支撑,支持对实际业务的处理
2.业务型数据库
3.通常意义上的数据库MySQL,Oracle,sql server 等
分析型数据库OLAT:
1.面向数据分析,侧重决策支持,作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析
2.优化查询性能,很多行查询
3.数据仓库(开源),hive,impala,presto…
操作型数据库OLTP(联机事务处理):操作型数据库主要应用,更侧重基本的,日常的事务处理,包括数据的增删改查。例如:银行转账,淘宝交易等等
分析型数据库OLAP(联机分析处理):分析型数据库主要应用,以多维度的方式分析数据
问:BI就是OLAP?
答:粗略回答,是的
区别:OLAP更加底层,它包括数据仓库+数据引擎
BI偏向结果,利用数据仓库+数据引擎去得到业务上的分析结果
数据仓库特点
1.集成性:数据仓库会将不同源数据库中的数据汇总到一起
2.历史性:数据仓库的数据是为企业数据分析而建立,所以数据被加载后一般情况下将被长期保留,前者通常保存几个月,后者可能保存几年到几十年。数据的变动,在数据仓库中是能够被记录以及追踪变化的,有助于反应出随时间变化的资料轨迹。
3.稳定性:数据仓库中的数据一般仅执行查询操作,很少会有删除和更新。但是需要定期加载和刷新数据。
4.面向主题:数据仓库通过一个个主题域将多个业务系统的数据加载到一起,为各个主题(如用户,订单,商品等)进行分析而建,操作型数据库是为了支撑各种业务而建立。
主题:对数据分门别类的区分,方便根据数据需求使用和加工
例如:顾客主题,商品主题,供应商主题,仓库主题等等
是一个虚拟的概念,由公司业务上自己决定(了解数据的结构,每个表的结构、字段等信息)
数据仓库架构
操作层:(散落在公司各个地方的数据,订单数据、用户数据、商品数据等,先将其统一放置在数据库中)
ETL:数据抽取,转换,载入(一些数据清洗操作)
数据仓库建表(模型有雪花模型,星型模型):表1,表2…
数据集市(不同部门、组需要的数据)
应用:数据分析,报表展示等等
问:数据表定义?怎么确定哪些数据在哪个表中呢?
数据库建模,数据仓库建模等等,都是围绕数据怎么存放在表中展开的
业务数据库建表有几大范式指导建表
分析型数据库呢?一般依靠事实表和维度表进行建表
事实表(Fact):保存度量值的详细值或事实的表
维度表(Dimention):保存属性的表
事实表与维度表关系:雪花模型和星形模型
雪花模型:当有一个或多个维度表没有直接连接在事实表上,而是通过其他维度表连接到事实表时,其图解就像多个雪花连在一起(一般维度表有主键,事实表为外键)
星型模型:数据集的每一个维度都直接与事实表相连
比较:雪花模型冗余少,星型模型性能好。工作中能选星型就选星型(主要原因join在数据库中查询是一个比较费事的操作)。
大数据中的数据仓库Hive
hive是一个构建在Hadoop之上的数据仓库
和传统数据仓库一样:
1.主要用来访问和管理数据
2.同样提供了sql查询语言
和传统数据仓库不一样:
1.可以处理超大规模的数据
2.可扩展性和容错性相当强
数据仓库一般做汇聚、统计,一般不做单个查询记录
数据处理类型 oltp olap
面向对象 业务开发人员 分析决策人员
功能实现 日常事务处理 面向分析决策
数据模型 关系模型 多维模型
数据量 几条或几十条 百万千万条
操作类型 增删改查 查询为主
业务型数据库,数据量有限,支付宝账号--》最多14亿条用户数据
分析型数据库,用户浏览淘宝商品,每一个用户浏览一次淘宝商品就产生一条数据-->几万亿数据量
典型星型模型建模:
商品销售事实表:
PK,FK1:时间ID
PK,FK:地域ID
PK,FK:用户ID
PK,FK:产品ID
PK,FK:支付ID
购买数量
支付金额
维度表:
时间维--PK:时间ID(时,分,秒)
地域维--PK:地域ID(省、市、区县、地址)
产品维--PK:产品ID(产品类型,产品名,产品属性)
支付维--PK:支付ID(支付方式,支付类型)
用户维--PK:用户ID(用户类型,用户名,用户信息)
OLAP cube和分析操作:
cube:可以理解为多维度分析--》数据仓库课程最后
数据中台和数据仓库区别?
数据仓库只是数据中台的一部分,基础的一部分,数据中台面向业务有更多的组成部分(用户画像,推荐系统,数据地图(主题),数据血缘)
数据湖--》新概念,数据仓库课程最后
数据湖概念更大,整个公司层面所有的数据。