数仓VS数据库
数据库通常是一个软件,负责业务数据的实时增删改查(OLTP),业务系统的数据库要求实时响应
数据仓库:OLTP的数据在闲时将每天的业务数据导出到另一个数据库(不做OLTP,不连web服务),做一些里显得数据分析(和存储);
所以例如Oracle或者Mysql,既可以用来作业务系统数据库,也可以用来做数据仓库,但是用普通数据库做数仓的瓶颈:存储量小;
这里引入数仓需要满足的两个条件:
- 存储海量数据
- 支持数据分析
普通数据库在第一条上不是最优解,因此Hive更能够更好地充当数据仓库的角色
另一个区别: 业务系统数据库的某条数据是不断变化的,而数仓中的数据是不变化的(通过保存历史记录来体现时间的变化)
数仓的特点:
面向主题的,整合的,相对稳定的,反映历史的
数仓也分两种:
- 离线数仓 -> Hive 这种需要大量时间计算的数仓
- 联机数据分析(OLAP) -> mysql这种可以事实查询分析的数仓
数仓分层:
数仓层 | 说明 |
---|---|
ADS | 应用服务层(对DW层的数据进一步进行计算,以得到应用层需要的数据) |
DWS | 数仓汇总层(对明细数据进行 聚合汇总操作,有时也跟DWD层合成一个DW层) |
DWD | 数仓明细层(分主题,打标签->“是否周末”,补全字段->通过id将desc join进来) |
ODS | 操作数据层(结构与源数据一致),最底层,也叫贴源层 |