在文章开始前,各位读者大人如果听过数据仓库或者知道数据仓库,可以思考下数据仓库跟数据库有什么区别。如果未听过数据仓库,我猜你也想知道为什么有数据库了,还要数据仓库。

思考过后,我们来开始吧。

一、什么是数据仓库?

简单讲,数据仓库是一种特殊的数据库。数据仓库一般以主题为出发点进行的,也就是业务核心,集成多种数据源的数据,会随着时间的变化而变化,因为随着时间数据的量会改变,而且以读操作为主,所以基本不会丢失,总结成4个特点可以说,数据仓库是一个面向主题的,集成的,时变的,非易失的数据集合,支持管理者的决策过程。 它是由企业进行的大量信息的电子存储,它的设计用于查询而不是事务处理。这也就是它跟数据库的区别。数据仓库一个将数据转换为信息并及时向用户提供的过程,传统数据库大多表示数据而已。

数据仓库的特点,如图

二、数据仓库的组成

数据仓库不是一个product,而是一个environment。这么说是因为它不是单纯的存储数据的地方,而是一个信息系统的架构构造,是为数据分析和报告而构建。主要由以下三部分组成的

  1. 底层是仓库数据库服务器:几乎是一个关系数据库系统,使用后端工具和实用程序,由操作数据库或其它外部数据源,提取数据,放入底层
  2. 中间层是OLAP服务器
  3. 顶层是前端客户层,也叫应用层。包括查询和报告工具,分析工具和数据挖掘工具。

具体组成,如图所示

三、数据仓库模型

根据结构来说,数据仓库有三种数据仓库模型。

企业仓库:是一个集中式仓库,包括细节数据和汇总数据,为整个企业提供决策支持服务,提供统一的方法来组织和表示数据,还根据主题对数据进行分类以及访问的能力

数据集市:是数据仓库的子集。专门针对特定业务部门而设计,例如销售,财务。在独立的数据集市中,数据可以直接从源收集。

虚拟仓库:操作数据库上视图的集合。

四、开发数据仓库系统需要注意什么。

开发数据仓库有比较普遍的两种方法,分别是自顶向下以及自底向上。

自顶向下:是一种比较系统的解决方案,并能最大限度得减少集成问题。但是它费用高,开发周期长,而且缺乏灵活性,因为整个组织就共同数据模型达成一致是比较困难得

自底向上:灵活,低花费,并能快速汇报投资,但是将分散得数据集市集成,形成一个一致得企业数据仓库,可能导致问题。

因此如果能结合二者,以递增,进化的方式实现数据仓库。例如在一个合理短得时间里,在不同得主题和应用之间,提供企业范围得,一致的,集成得数据视图。

设计步骤一般为

(1)选取待建模的业务处理(例如订单,销售)。如果一个商务过程是整个组织的,并涉及多个复杂的对象,应该选用我们上面说的数据仓库模型。如果处理是部门的,而且关注的是某一业务处理的分析,就应该选择数据集市。

(2)选取业务处理的粒度(例如一个事务)。

(3)选取用于每个事实表记录的维例如(时间,商品)。

(4)选取将安放在每个事实表记录中的度量。例如销售量。

实施步骤一般为

  1. 企业战略:确定技术,事实,维度和属性。包括数据映射以及转换。
  2. 分阶段交付:根据主题分阶段实施数据仓库。比如销售系统,应先实施预定和计费等相关业务实体,然后相互集成。
  3. 迭代原型:应该迭代开发和测试,而不是一个大爆炸的实现方法 。

设计数据仓库是一件比较困难以及长期的事情,所以我们一开始应该清楚得定义它的实现范围,也就是要明确实现目的,而且需求应该是详细,业务是可实现的,可量化的。

五、数据仓库 vs 数据库

通过上面我们了解了数据仓库,那么现在可以来回答文中一开始的问题。

传统数据库是为存储而生,而数据仓库很明显,是为分析而生。实现目的的不同一开始就注定它们的差异。传统数据库包括增删改查,但数据仓库注重查询。 传统数据库的主要任务是执行联机事务处理,简称 OLTP ( Online Transaction Processing)。主要负责日常操作,如购物,制造。

数据仓库系统在数据分析和决策方面为用户或“知识工人”提供服务,可以以不同的格式组织和提供数据,以便应付不同的需求,这种系统称作联机分析处理,简称 OLAP ( Online Analytical Processing )。

下面我们通过对比 OLAP 和 OLTP 的区别,就能详细知道数据仓库和数据库的区别。

首先考虑用户和系统的面向对象,OLTP 是面向顾客的,用户操作员,客户和信息技术人员的事务和查询处理。OLAP 是面向市场的,用于知识工人的数据分析。

数据内容:OLTP 管理当前数据。但是一般这种数据比较琐碎,很难用于决策。OLAP系统管理大量历史数据,提供汇总和聚集机制,而且在不同的粒度层上存储和管理信息。

数据库设计:OLTP 系统采用实体-联系(ER)数据模型和面向应用的数据库设计。而 OLAP 系统采用星形或雪花模型和面向主题的数据库设计。

视图:OLTP 关注一个企业或部门内部的当前数据,不涉及历史数据或不同单位的数据。OLAP 经常需要跨域数据库模式的不同版本。

访问模式: OLTP 系统主要由短的原子事务组成,一般需要并发控制和恢复机制。而 OLAP 系统的访问大部分是只读操作。

下面用个表格总结看起来比较明朗

六、数据仓库有什么用

那么说了这么多,数据仓库有什么过人之处呢。 个人总结了两点。一个是提高生产力,一个是有利于关系管理。在于它的实时性以及数据丰富性。

七、小结

数据仓库更像是一个系统工具,比如Hive,就是基于 Hadoop 的开源数据仓库,可以对存储在HDFS的文件数据进行查询,分析。篇幅所限,这里不对Hive的架构做过多解释。数据仓库在大数据架构中起着至关重要的作用,其实上面的数据仓库架构可以说是基本涵盖了大数据的流程了,里面的每一层每一个组件都足以让我们研究很久了。

本文首发微信公众号“哈尔的数据城堡

推荐阅读:

大数据存储的进化史 从RAID到Hadoop Hdfs

大数据时代的结构化存储--HBase

数据预处理也有套路的

hive olap 数据仓库_数据仓库那些事儿相关推荐

  1. hive后台启动_数据仓库组件:Hive环境搭建和基础用法

    一.Hive基础简介 1.基础描述 Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取.转化.加载,是一个可以对Hadoop中的大规模存储的数据进行查询和分析存储的组件,Hive数据仓库工 ...

  2. hive olap 数据仓库_数据仓库:OLTP与OLAP查询

    在业务数据处理的早期,对数据库的写操作通常对应于正在发生的商业交易-进行销售,与供应商下订单,支付员工的工资等.随着数据库扩展到不涉及的领域 涉及货币易手,但是交易一词仍然存在,是指构成逻辑单元的一组 ...

  3. hive 删除分区_数据仓库工具hive面试题集锦(纯干货)

    进入DATE时代,大数据技术成为互联网发展的核心要素之一.与此同时大数据开发工程师的薪资也成为行业内高薪的代表.想从事大数据开发需要掌握多种核心技术:Hadoop.Hive.Storm.Spark.S ...

  4. 层 数据仓库_数据仓库的架构是什么样的,大家可以通过这篇文章了解一下

    今天这篇文章,给大家讲述一下数据仓库的架构模式,作为我们一起探讨的内容.希望大家留言.评论,我们一起学习. 一 说到数据仓库,那么我们先来了解一下数据仓库的基本概念. 数据仓库,英文名称为Data W ...

  5. 如何用mysql创建数据仓库_数据仓库入门(实验1)创建数据源

    首先需要创建一个数据源,SSAS(分析服务)将利用数据源来连接源数据库.一.准备环境1.准备SQLServer 安装一台SQLServer2012.2.安装DEMO数据库 下载一个演示 首先需要创建一 ...

  6. hive olap 数据仓库_数据仓库系统的实现和使用(含OLAP重点讲解)

    前言 完整的数据仓库系统会涉及其他一些组件的开发,其中最主要的是ETL工程,在线分析处理工具(OLAP)和商务智能(BI)应用等. 本文将对这些方面做一个总体性的介绍(尤其是OLAP),旨在让读者对数 ...

  7. 数据仓库ods层是啥意思_数据仓库和数据分层

    数据仓库,Data Warehouse,可简写为DW或DWH.是面向主题的.集成的(非简单的数据堆积).相对稳定的.反应历史变化的数据集合,数仓中的数据是有组织有结构的存储数据集合,用于对管理决策过程 ...

  8. 数据查询和业务流分开_数据仓库介绍与实时数仓案例

    1.数据仓库简介 数据仓库是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Variant)的数据集合 ...

  9. 数据查询和业务流分开_数据仓库介绍与实时数仓案例--阿里

    1.数据仓库简介 数据仓库是一个面向主题的(Subject Oriented).集成的(Integrate).相对稳定的(Non-Volatile).反映历史变化(Time Variant)的数据集合 ...

最新文章

  1. win7系统下访问网上邻居提示用户名密码错误
  2. 14.索引数组初始化
  3. Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏
  4. JSON.stringify()和JOSN.parse()
  5. C++ 对引用的理解5
  6. 816固件a2可以升a1吗_你好,我是A2的证我在15年出的交通事故为什么不能学B2呢-免费法律咨询...
  7. Android6.0以上打电话动态权限
  8. 老公想入手一块10万左右的手表有哪些推荐?
  9. 联通最全最新路由表【两种表示方式都在】
  10. zoj2676 Network Wars 0-1分数规划
  11. 接口测试之Postman使用全图文指南(原来使用Postman测试API接口如此简单)
  12. SPSS操作(五):主成分分析
  13. Centos7 [Errno 14] curl#37 - Couldn't open file /mnt/Packages/repodata/repomd.xml
  14. x64dbg 实现插件Socket反向通信
  15. LZX 定义 - 转帖
  16. SDN和NFV的主要区别
  17. 动物识别——人工智能
  18. 怎样实现将分数进行相加的操作?
  19. 对于取英文变量名网站
  20. 一份理想的程序员工作

热门文章

  1. jittor和pytorch网络对比之context_encoder
  2. 从源码分析DEARGUI之draw的一系列操作
  3. pytorch ctcloss 参数详解
  4. django写项目的详细步骤
  5. java spring cloud版b2b2c社交电商spring cloud分布式微服务-docker-feign-hystrix(六)
  6. Unable to find remote helper for 'https'解决办法
  7. CrazyWing:Python自动化运维开发实战 六、流程控制
  8. Servlet 第六课: Session的使用
  9. [扫盲] Salesforce.com: 业界云计算(Cloud Computing)的主要倡导者之一
  10. [E::fai_build_core] Different line length in sequence ‘kraken:taxid|436|NZ_CP062147.1‘