数仓总结目录:
说说数仓(1) - 什么是数仓
说说数仓(2) - 传统数仓与互联网数仓
说说数仓(3) - 数仓架构
说说数仓(4) - 指标字典
说说数仓(5)-最重要的维度之日期维度
说说数仓(6)-关于命名规范
说说数仓(7)-浅谈数据治理
说说数仓(8)-关于增量
说说数仓(9)-上下游约定
说说数仓(10)-任务注释
最近几年工作中,接触到一些关于数仓建模的工作,说是建模,其实个人感觉自己也就入个门而已,有一点儿自己的理解,这里会简单整理下自己的想法结合找到的一些资料,分享给大家看看,可以多多交流。
什么是数据仓库
数据仓库(DataWarehouse),一般缩写成DW、DWH。数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策。
--来自智库百科
从字面上来看,数据仓库就是一个存放数据的仓库,它里面存放了各种各样的数据,而这些数据需要按照一些结构、规则来组织和存放。这里我们会遇到一个问题就是同样是存放数据的仓库,那数据库和数据仓库是一样的吗?
数据库 VS 数据仓库
数据库就是我们常用的关系型数据库(MySQL、Oracle、PostgreSQL...),还有什么非关系型数据库,它主要存放业务数据,那数据仓库有有些什么数据呢?
说到他们的区别,我们一般会提到OLTP和OLAP,
OLTP:on-line transaction processing,联机事务处理,主要是业务数据,需要考虑高并发、考虑事务
OLAP:On-Line Analytical Processing,联机分析处理,重点主要是面向分析,会产生大量的查询,一般很少涉及增删改
他们的区别,面试时也会提到,主要从几个点谈谈就行。
大数据
数据仓库其实是一套体系,他不是一门什么技术,而是整合了很多已有的技术,来更好地组织和管理数据。
传统数仓的话,主要是基于关系型数据库,后面还有一些分布式的数据库像Greenplum,还有很多公司会提供基于硬件的一整套解决方案。在传统数仓开发时,由于硬件的性能有限,所以有很多的要求,而随着硬件价格的下降、云服务器的广泛使用,还有大数据技术的成熟发展,数仓的很多场景都变了,有些规则都不需要去严格遵守了,这样也可以剩下很多的成本。
后记
上面大概整理了数仓的基本概念,一些常见的问题,最主要的其实是基于Hadoop和传统数仓的区别,这个后面会再深入整理下,这回先说到这里,后面如果有概念性的东西,还会整理在这一章。
附录
20190318更新
刚刚有朋友说,搜数仓发现了这篇文章,感觉想我写的,截图给我看,我一看,哈哈哈,还真是我写的,还是简书溜。我说这篇文章咋有这么多的阅读量呢。
我看了看这篇文章,写的还是少了些,于是回来更新下一点点内容。
再往前几年,数仓这个东西是有点儿神秘的,感觉很高大上,而现在,起码在互联网公司来说,谁都知道数仓,谁都知道数据平台,谁都可以来说两句,已经大众化了。
记得以前面数仓的话,总有几个必备的面试题:
- 什么是数仓?
- 数仓的几个特点是什么?
- 什么是OLAP?什么是OLTP?区别是什么?
- 拉链表是什么?怎么实现拉链表?
- 同步又哪几种方式?
- 为什么要做增量?怎么做增量?
- 什么是ETL?
以前很多招聘ETL工程师的,这些岗位主要是基于某一个厂商的工具入手,熟练适用该工具就行了,比如Datastage,以前玩儿过一个报表工具叫Cognos,IBM的一个工具,当时写了很多文章,有几百篇,也有很多岗位是招Cognos工程师的,后来不玩儿这个。
传统行业喜欢叫数仓,互联网公司喜欢叫数据平台(包含数仓,偏向建模)。我记得数仓这一概念也是从传统行业发起的,它涉及的资料其实都是好多年之前的了,最近也找过,但是没什么新的内容,概念还是那些概念,只是技术更新迭代了,所以也导致很多的观点不太适用了。
就目前互联网数仓这一岗位,感觉更加偏重业务+建模思想,面试不太好考察这些内容的,去年招聘的时候,就是问些基本问题,聊聊以往主要的工作内容,还会问问SQL题,真的想了解下建模的话,还是找本书借鉴性的看看,还是很有益处的。