首先的疑问是什么是数据仓库?
作为理工科出身多多少少都会了解数据库的概念,我也一样,了解的层面可能只是知道数据库是存储我们很多系统里用的数据的地方,可能也只是在这个层面了,对于数据仓库的也只是停留在听说的层面。
为了了解什么是数据仓库,我可以简单的举个小例子。
假设有一天,你收到你boss的任务,要求你在半天的时间内分析一个公司几个项目的业绩分析报表要求,你觉得很简单,因为操作已经在你脑子里哦,不就是直接在数据库里查询这几个项目业绩数据,再做一个可视化的报表即可么,但是当你真正开始做的时候,你发现你老板要求看到的数据不完全在一个数据库里,这几个项目有的数据存储在MySQL数据库里,有的存储在的存储在mongodb里,还有的在一些外部数据,这个时候你慌了,半天时间可能不能够完成老板的任务了,虽然最后你也能完成任务,但是花费的时间和精力是很大的。这个时候你可能就会想,要是能有个工具把这些存在不同地方的数据汇总到一个地方该多好啊,那么就不用费那么大事情进行查询处理了。
对没错,这个工具就可以理解是数据仓库了。
也就是说数仓是存数据的,可以简单的理解为:面向分析的存储系统。企业的各种数据往里面塞,主要目的是为了有效分析数据,后续会基于它产出供分析挖掘的数据,或者数据应用需要的数据,如企业的分析性报告和各类报表,为企业的决策提供支持。
到这里或许会有人说:我们经常使用的关系型数据库不也可以满足部分内容么?后面给出答案。
关系型数据库,它可以被划分为两大基本类型:操作型数据库和分析型数据库。
1. 操作型数据库
主要面向应用,用于业务支撑,支持对实际业务的处理,也可以叫业务型数据库,是基本的、日常的事务处理,例如银行交易。
可以理解为通常意义上的数据库(后端开发同学口中的经常提到的就是这种)。比如我们常用的MYSQL,Mongodb,SQLSERVER等
2. 分析型数据库
主要面向数据分析,侧重决策支持,作为公司的单独数据存储,负责利用历史数据对公司各主题域进行统计分析。
由于分析型数据库中的操作都是查询,因此也就不需要严格满足关系型数据库一些设计规范,这样的情况下再将它归为数据库不太合适,也容易不引起混淆,所以称之为数据仓库。
数据处理大致可以分成两大类:OLTP(联机事务处理)和OLAP(联机分析处理)。
OLTP(联机事务处理)就是操作型数据库的主要应用,更侧重于基本的、日常的事务处理,包括数据的增删改查。
OLAP(联机分析处理)就是分析型数据库的主要应用,以多维度的方式分析数据, 这个后续会整理。