数据库和数据仓库你要知道的

Posted 叁金大数据

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库和数据仓库你要知道的相关的知识,希望对你有一定的参考价值。

问题导读:

什么是数据仓库

数据仓库与数据库的区别

数据仓库的适用场景


Hive作为Hadoop生态圈重要的一员已经被我们所熟知,它作为一个基于Hadoop的数据仓库工具,用来做离线的数据分析工作。那么什么是数据仓库,它与我们经常使用的数据库有什么不同呢?


什么是数据仓库


数据仓库(Data Warehouse)是一个面向数据分析的集成化数据环境,它可以通过对大量数据进行分析从而得出分析报告并提供决策支持。需要注意的是,数据仓库本身并不生产数据,同时也不消费数据,它的数据来源于外部,并且通过某种分析方式对外进行开放。所以我们称它为数据仓库而非“数据工厂”。


一句话描述数据仓库的主要特征


面向主题:这个特征比较抽象,它其实是相对于面向应用的传统数据库而言,不仅仅针对于某一个应用(比如用户表——登陆,权限表——验证),而是多维多角度的较高层次上的数据综合、归类和分析的抽象。


集成的数据:数据仓库中的数据来源广泛,每个主题所对应的数据源在其原有的数据存储中有很多重复和不一致的地方,所以数据进入到数据仓库之前必须要经过统一与综合,也就是我们常说的数据ETL流程(extraction抽取 transformation转换 loading加载),这一步其实是数据仓库最重要的一步,整洁、易用的数据才能发挥最大的价值。


不可更新(较难更新):数据仓库中存储的数据为一定时间内的历史数据及其进行统计、综合和重组之后的数据,而非联机处理的数据。所涉及的数据操作主要是数据的查询,一般情况下并不会进行修改操作。而且由于数据仓库本身的特性对数据查询需要更高的要求,会采用更复杂的索引技术,对于有些设计是比较难实现快速更新操作的。(后面会提到)


随时间而不断变化:这个是毋庸置疑的,数据仓库里面的数据随着时间的变化会录入与时间相匹配的数据,帮助用户进行决策分析等。




上面这张图其实就是一个典型的数据仓库架构图。我们可以清楚的看到前面我们讲述的数据仓库相关的特性。通过ETL等多种工具对多种数据源的数据进行数据提取、转换和整合,将数据加载到数据仓库。并定期的刷新随着时间增长的数据到数据仓库。数据仓库内又会有多个DataMart(数据集市),提供多维的数据检索方式给前端应用。


上面我们看到了一个关键词OLAP。我们之前也可能听过OLTP,那么我们讲数据库与数据仓库的区别其实也算是OLTP和OLAP的区别了。


数据库与数据仓库的区别


我们先来了解一下OLTP和OLAP。


操作型处理,叫联机事务处理 OLTP(On-Line Transaction Processing),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。


分析型处理,叫联机分析处理 OLAP(On-Line Analytical Processing)一般针对某些主题的历史数据进行分析,支持管理决策。


通过我们的介绍,我们可以意识到数据库和数据仓库所适用的场景是不一样的,数据仓库的出现也不是为了替代数据库。


1. 数据库存储的多为实时的业务数据,而数据仓库存储的多为历史数据。

2. 数据库是面向事务设计的,而数据仓库是面向主题设计的。

3. 开发人员都知道,数据库的设计都会尽量的避免冗余,针对于某一业务进行设计。而数据仓库的设计则是在有意的引入冗余,依照各种分析需求、维度、指标等进行设计。

4. 数据库是为了业务的数据读写,而数据仓库是为了分析大量数据。


元数据管理



元数据管理会记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及 相关ETL 的任务运行状态等,使数据仓库的设计、部署、操作和管理能达成协同和一致。


元数据的存储常见的方式有两种,一种是以数据集为基础,每一个数据集有对应的元数据文件,每一个元数据文件包含对应数据集的元数据内容;另一种存储方式是以数据库为基础,即元数据库。比如Hive我们常常使用mysql作为其元数据库(metastore)的存储。


那么问题来了,Hive作为一个优秀的数据仓库,它是如何这么深入人心呢?


参考文献:

[An Overview of Data Warehousing and OLAPTechnology](https://webpages.uncc.edu/mirsad/ITIS%205160/chaudhuri.pdf)

[对数据仓库Hive的一些认识](https://www.cnblogs.com/likemebee/p/Hive.html)


往期精彩回顾



我自己都忘记多久没更新了


以上是关于数据库和数据仓库你要知道的的主要内容,如果未能解决你的问题,请参考以下文章

听说过数据库,你知道什么是数据仓库吗?

我只知道数据库,数据仓库是什么?

盘点数据仓库建设需要知道的那些事

Hive开发要知道数据仓库的四个层次设计

数据仓库星型模式事实表?你怎么知道里面有啥

数据湖和数据仓库的区别是啥?