数据库我们大家都知道,在平时的 Web 开发中用到的比较多。但是数据仓库是什么呢?他俩有啥区别呢?在开始之前先分享一个小故事:
1.
在很久很久以前,世界上生活着许多种族,有人类,有矮人,有精灵……他们有着不同的信仰,不同的文化,彼此相安无事。可是,有一个钢铁直男却偏偏想要统治整个世界。
如何统治这么多不同文化信仰的种族呢?猥琐男想出一个馊主意,打造出几枚拥有魔力的戒指,免费送给不同种族的领袖,让他们可以更好地统治各自的族人。
当各个种族的领袖美滋滋地戴上各自的魔戒,走上人生巅峰的时候,猥琐男又打造出一枚独一无二的至尊魔戒。他利用至尊魔戒的力量控制了所有的魔戒,从而控制了各个种族的领袖,继而控制了整个世界。
这个故事告诉我们:数据库和数据仓库之间的关系。
如果说,那个世界的每一个生命个体都是一条数据记录,那么普通的魔戒的地位就好比是数据库,而至尊魔戒的地位就好比是数据仓库。
2.
什么是数据仓库?
给一个定义?
数据仓库,英文名称Data Warehouse,简写为DW。数据仓库顾名思义,是一个很大的数据存储集合,出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。
看到这里你可能还不是很清楚他到底是干嘛的,但是你得明确一个方向,它是面向决策的。
数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。
那么,数据仓库都有什么特点呢?
1.主题性
不同于传统数据库对应于某一个或多个项目,数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织。
这里的主题怎么来理解呢?比如对于城市,“天气湿度分析”就是一个主题,对于淘宝,“用户点击行为分析”就是一个主题。
2.集成性
数据仓库中存储的数据是来源于多个数据源的集成,原始数据来自不同的数据源,存储方式各不相同。要整合成为最终的数据集合,需要从数据源经过一系列抽取、清洗、转换的过程。大家从上图也可以看到,数据来源于 Mysql 、MongoDB、其他第三方数据源。
3.稳定性
数据仓库中保存的数据是一系列历史快照,不允许被修改。用户只能通过分析工具进行查询和分析。这里说明一点,数据仓库基本上是不许允许用户进行修改,删除操作的。大多数的场景是用来查询分析数据。
4.时变性
数据仓库会定期接收新的集成数据,反应出最新的数据变化。这和特点并不矛盾。注意,这里与实时性不同。
3.
主流的开源数据仓库:Hive
在大数据应用中,Hive 用的比较多一些,因为啥?免费啊。性能也算可以。至于其他的商业数据数据仓库,性能要比 Hive 高出很多,但是中小公司没必要去花大量成本去使用商业数据仓库了。
这个 Hive 作为数据仓库,具体做了什么呢?
一句话:Hive 的主要作用就是讲结构化的数据映射为 Hive 数据库表,并提供 HQL 查询语句,可以将 HQL 语句转化为 MapReduce 任务运行。
确切地说,Hive是基于Hadoop的数据仓库工具,可以对存储在HDFS上的文件数据集进行查询和分析处理。Hive对外提供了类似于SQL语言的查询语言 HiveQL,在做查询时将HQL语句转换成MapReduce任务,在Hadoop层进行执行。
换一个角度,就是一个不懂编程语言的 DBA 也可以使用 Hive 编写 HQL 语句进行数据统计。给数据分析带来跟大的便宜性。
上面出现的名词解释:
1.HDFS
Hadoop的分布式文件系统,在这里作为数据仓库的存储层。图中的Data Node就是HDFS的众多工作节点。
2.MapReduce
一种针对海量数据的离线分布式并行计算模型,可以简单理解为对多个数据分片的数据转换和合并。
3.Hbase
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,是一个开源数据库。利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
4.
上面是从原理角度讲了数据仓库以及数据仓库其中一款开源工具 Hive 。
实际中,我们的目的做数据处理。要知道数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
下图是两种数据处理方式的对比,这里你可以具体到数据库和数据仓库的对比。
通过两种对比,可以看出传统数据库和数据仓库分别使用的场景。
要求实时性(秒级以及更快的场景)业务需求,使用的数据库(OLTP)模型。
整合历史数据以及大量数据源数据的场景,且不要求响应时间的,使用数据仓库(OLAP)。
5.
在实际的使用中,Hive 也要结合关系型数据库进行使用。Hive 运行时,元数据信息是保存在关系中数据库中,一般使用 Mysql 数据库存储。
本文由 欣欣 投稿至 数据分析网 并经编辑发表,内容观点不代表本站立场,如转载请联系原作者,本文链接:https://www.afenxi.com/63642.html 。