数据库和数据仓库的区别(个人理解)

一、从定义来看

  1. 数据库,用来存储结构化的数据,数据库由多张表组成,每张表都有行列,是二维的。数据都是一行一行的插入到表中。

  2. 数据仓库,其实也是存储数据的,相对于数据库来说存储的数据量要更庞大。而且数据仓库多是用于决策分析的。

举个例子:
当我们注册一个账号的时候,后台数据库肯定有一张用户表,这张表假设有一个用户名字段和密码字段。当我们注册的时候,就会把信息一行一行的插入到表中。而当我们在前端登录的时候,就需要填写账号密码,这些数据就返回后台跟用户表进行比对,如果没错,就能登录,这就是数据库。数据库都是跟业务挂钩的,不同的业务会有不同的数据库。

由于数据库是跟业务挂钩的,那么每个业务功能就会对应有一个数据库表,比如登录功能就会对应有一个用户表。

但是当我们想统计用户登录数量最多在哪个时间段?单单一个用户表就无法得出结果。所以就需要重新设计数据库的表结构,增加不同的指标进行分析,这就需要使用数据仓库。数据仓库的表是依照业务需求进行设计的。

  1. 从导入数据的操作来看
    1) 数据库:一定会对要插入的数据进行严格的检查,不满足要求不能插入。
    2) 数据仓库:对插入的数据不会检查。Hive数据仓库会存储非常大量的数据,一次导入可能就是几百G,几十T,hive不检查是不想让导入的数据效率过于低下。

二、从整个流程架构来看

借用一张图来看看:
在这里插入图片描述
数据仓库是面向主题的,什么是主题?对应上面这张图就是分析OLAP阶段。其实就是为人做决策分析的。
数据仓库一般只做查询,不做修改。数据仓库的数据是由数据库中的数据抽取出来的。

因为数据仓库的每一个主题,不一定都只对应一个数据库,每个主题所需要的源数据可能分布在不同的数据库中,因此需要对数据库进行提取转换再存入到数据仓库。

对应上图来说:
源数据OLTP(数据库)收集存储各种数据,是底层的原始数据,通过ETL对数据进行抽取、转换、装载,放入到ODS层。
ODS层的功能:清洗垃圾数据,更改不能入库的格式为数仓支持的格式或优化后的格式。

通过sql、python等手段将数据进行整合、重定义,剔除数据冗余等,存放到EDW层。

根据业务需求,构建所需的指标,组建分析主题,存放到DM层。

构建面向一个一个不同主题进行分析OLAP,最后进行可视化。

三、实际就是OLTP和OLAP的区别

1、 OLTP(On-Line Transaction Processing),联机事务处理。针对具体业务在数据库联机的日常操作。
2、 OLAP(On-Line Analytical Processing),联机分析处理。针对主题历史数据进行决策分析。

数据库OLTP 数据仓库OLAP
操作型 分析型
实体-关系(E-R)模型 星型模型或雪花模型
不停存储新数据 存储历史数据,不包含最近的数据
可更新数据 只读,只追加数据
面向事务 面向分析
数据量相对较小 数据量相对较大
举例:用户登录验证 举例:用户登录时间分析

.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章