数据仓库和数据库有什么区别,数据库和数据仓库有什么不同

先讲讲来龙去脉
很久以前是没有数据仓库这个概念的,只有数据库,数据库就是很多数据表的集合,这样把存放不同内容的表放在一起,就能满足一些基本的查询了 。
比如提取2019年6月18日在淘宝购买Bose耳机的用户,只要几张表关联一下查询就出结果了 。
后来在实际工作中人们发现当你在海量数据中做非常复杂的分析的时候,效率就很低了:比如找到2019年双11和2018年双11这两天,在淘宝下单超过500元且购买了Bose耳机的用户,这两拨用户在最近2两年的平均消费能力差异 。要完成这个查询,首先要关联查询很多表,其次要查询2018和2019年两年的数据,最后你还要从海量的数据中找到符合要求的消费金额和消费者,这三点加起来就让数据提取变成了非常复杂的事儿,而且不一定能立刻查到,往往一个查询任务就要跑好几个小时 。
所以随着数据体量增大 , 查询条件越来越复杂,大家一看不行?。枰岣咝?。所以数据仓库出现了 。
数据仓库和数据库相比,有啥特点
1.数据仓库有主题性,有作业流的概念
上面的例子告诉我们,数据仓库是为了某一个/某一类特定的分析任务将数据重新聚合起来的,而数据库只是数据存储表的集合,所以数据仓库有主题性 。同时也因为有主题的概念 , 数据仓库会根据你预设的逻辑,自动化的完成各个作业之间的调度 , 最终自动化的把结果输出给你 。所以数据仓库也会有数据流和作业流的概念 。
2.数据仓库让「查询」效率最大化
数据库本质就是很多数据表 , 所以数据表嘛,就要兼顾增删改查这些操作,但是数据仓库将数据重新组合 , 是为了让你更高效的查询并且支持你的分析工作的,所以数据库一般只让「查询」的效率最大化,「增删改」的效率不做主要考虑 。
3.数据仓库有历史数据,而数据库一般只有近期数据
上面举的例子中 , 要查询淘宝2018年和2019年两年的双11数据,所以跨度很大 。一般数据库只能存近期的数据 , 太久远的数据放不下,效率也低 。但是数据仓库可以将某些维度的历史信息统一抽取出来以更合理的存储结构放到数据仓库中,这样查询跨年的数据时直接查询就行了,效率极大的提升 。
4.数据仓库是基于数据库层面的升级
一家公司 , 一般是现有几张数据表,后来数据表集合成了数据库,再后来数据库不满足需求了,才有了数据仓库 。所以数据表,数据库,数据仓库之间是有依赖关系的,不是割裂的 。
怎么建立数据仓库
1.需求分析
分析你为了哪个目的建立数据仓库 , 数据仓库需要哪些维度的数据 , 这些数据表都在哪里是否能访问 。
【数据仓库和数据库有什么区别,数据库和数据仓库有什么不同】
2.ETL
将你所有需要的数据表都找到,然后根据你的需求将需要的字段都提取出来并对数据格式进行清洗加工转换 。保证数据原料是合格可用的
3.数据结构设计
包括维度表,事实表的设计,是否要用列式存储代替行式存储,是否需要将数据分层(详细可查询OLAP方面的数据模型),总之就是要保证数据查询的效率
4.作业调度
每一个你看到的数据背后,都是多个数据表被一系列脚本调用最终计算而成,所以多个作业之间肯定涉及调度关系,过程监控,结果监控等 。所以要保证逻辑正确和执行正确 。
数据仓库:为企业所有级别的决策制定过程,提供所有类型数据支持的战略(数据)集合 。
传统数据库:是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合 。
从定义看 , 我们好像区别不大,数据库指的是数据的集合,数据仓库也是一个数据集合 。
但是不同的是,在于应用场景,和构建的技术原理不一样 。
传统数据库是存储根据范式建模的关系型数据,主要用于OLTP(on-line transaction processing)翻译为联机事务处理的软件 。大数据是根据map redurce范式构建的出局处理,存储的软件,主要用于OLAP是做分析处理 。大数据和传统数据库,还有一个更大的区别在于,处理的数据量以及计算量的大小,当传统数据库,无法在人可以接受的短时间内计算出结果,那这个数据就叫大数据,需要使用到大数据技术处理 。而数据仓库本质上是一种数据的处理方式 , 而不是一种基础软件,它可以依赖于传统数据库,也可以依赖大数据技术去构建 。

数据仓库和数据库有什么区别,数据库和数据仓库有什么不同

数仓和数据库的比较
这个扩展一下数据仓库与传统数据库应用的区别,有下面几点:
  1. 用途:传统数据库主要用于OLTP(on-line transaction processing)翻译为联机事务处理,即即时的系统交互,数据仓库主要用于OLAP(On-Line Analytical Processing)翻译为联机分析处理 , 从字面上来看OLTP是做事务处理,OLAP是做分析处理 。从对数据库操作来看,OLTP主要是对数据的增删改,OLAP是对数据的查询 。
  2. 建模:传统数据库主要使用范式建模 , 数据仓库可以根据需要采用范式建模或者现在互联网普遍使用的星形模型等 。
  3. 使用技术:一般使用mysql等关系型数据库,数据仓库目前互联网行业更多的是使用hadoop等大数据技术 , 也有使用mysql等,可以根据实际情况搭建 。
  4. 存储的数据:传统数据库只存储当前状态的数据 , 数据仓库需要存储历史状态的数据,用户对历史数据的回溯分析 。

经验总结扩展阅读