文章目录
  1. 1. 大数据之数据仓库
    1. 1.1. 什么是数据仓库
      1. 1.1.1. 数据仓库的特征
    2. 1.2. 数据仓库与数据库的区别
    3. 1.3. 数据仓库用来解决什么问题
    4. 1.4. 目前主流数据仓库有哪些框架
    5. 1.5. 各云平台支持的数据仓库解决方案
    6. 1.6. 数据仓库是如何抽取与分析数据的
      1. 1.6.1. 什么是ETL
    7. 1.7. 如何搭建一个数据仓库

大数据之数据仓库

什么是数据仓库

数据仓库,英文名称Data Warehouse,简写为DW。数据仓库顾名思义,是一个很大的数据存储集合。数据仓库必须满足主题性、集成性、稳定性、时变性这些特征。

数据仓库的输入方是各种各样的数据源,最终的输出用于企业的数据分析、数据挖掘、数据报表等方向。

![paste image][image-1]

数据仓库的特征

什么样的数据表现形式才能叫数据仓库?

1.主题性

不同于传统数据库对应于某一个或多个项目,数据仓库根据使用者实际需求,将不同数据源的数据在一个较高的抽象层次上做整合,所有数据都围绕某一主题来组织。

这里的主题怎么来理解呢?比如对于滴滴出行,“司机行为分析”就是一个主题,对于链家网,“成交分析”就是一个主题。

2.集成性

数据仓库中存储的数据是来源于多个数据源的集成,原始数据来自不同的数据源,存储方式各不相同。要整合成为最终的数据集合,需要从数据源经过一系列抽取、清洗、转换的过程。

3.稳定性

数据仓库中保存的数据是一系列历史快照,不允许被修改。用户只能通过分析工具进行查询和分析。

4.时变性

数据仓库会定期接收新的集成数据,反应出最新的数据变化。这和特点并不矛盾。

~~

数据仓库与数据库的区别

  • 数据库软件:是一种软件(并不是链接数据库的图形化客户端)。用来实现数据库逻辑过程,属于物理层。

  • 数据库:是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。数据库由很多表组成,表是二维的,一张表里面有很多字段。字段一字排开,对数据就一行一行的写入表中。数据库的表,在于能够用二维(行、列)表现多维的关系。如:oracle、DB2、MySQL、Sybase、MSSQL Server等。

  • 数据仓库:是数据库概念的升级。

    从逻辑上理解,数据库和数据仓库没有区别,都是通过数据库软件实现存放数据的地方,只不过从数据量来说,数据仓库要比数据库更庞大德多。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策;

  • 数据仓库是一种数据快照,不允许对数据进行修改

  • 在IT的架构体系中,数据库是必须存在的,必须要有地方存数据。

    比如现在的网购等电商。物品的存货多少,货品的价格,用户的账户余额之类的。这些数据都是存放在后台数据库中。或者最简单的理解,我们现在的微信、微博和QQ等账户和密码。在后台数据库必须是一个user表,字段起码有两个吗,即用户名和密码,然后我们的数据就一行一行的存在表上面。当我们登录的时候,我们填写了用户名和密码,这些数据就会回传到前台去,去跟表上面的数据匹配,匹配成功了,就能登录。匹配不成功就会报错,这就是数据库,数据库在生产环境就是用来干活的。凡是跟业务有关应用挂钩的,我们都使用数据库。

  • 数据仓库是BI下的一种技术。

    由于数据库跟业务应用挂钩的,所以一个数据库不可能装下一家公司的所有数据。数据库的表设计往往是针对某一个应用进行设计的。比如刚刚的登录功能,这张user表上就只有这两个字段,没有别的字段了。到那时这张表符合业务,没有问题,但是这张表不符合分析。比如我想知道在哪个时间段,用户的量最多?哪个用户一年购物最多?
    诸如此类的指标。那就要重新设计数据库的表结构了。对于数据分析和数据挖掘,我们引入了数据仓科概念。数据仓库的表结构是依照分析需求,分析维度,分析指标进行设计的。

  • 数据库是操作型处理,数据仓库是分析型处理

以下表格是他们之间对比:

操作型处理 分析型处理
细节的 综合或者提炼的
实体-关系(E-R)模型 星型模型或雪花模型
存储瞬间数据 存储历史数据,不包含最近的数据
可更新的 只读、只追加
一次操作一个单元 一次操作一个集合
性能要求高,响应时间短 性能要求宽松
面向事务 面向分析
一次操作数据量小 支持决策需求
数据量小(相对) 数据量大
客户订单、库存水平和银行账户查询 客户收益分析、市场细分

综合以上,可以简单提炼得出以下对比表格:

![paste image][image-2]

数据仓库用来解决什么问题

数据仓库出于企业的分析性报告和决策支持目的而创建,对多样的业务数据进行筛选与整合。它为企业提供一定的BI(商业智能)能力,指导业务流程改进、监视时间、成本、质量以及控制。

eg:

  1. 年度销售目标的制定,需要根据以往的历史报表进行决策,不能随便制定。

  2. 优化业务流程

    例如:某电商平台某品牌的手机,在过去5年主要的的购买人群的年龄在什么年龄段,在那个季节购买量人多,这样就可以根据这个特点为目标人群设定他们主要的需求和动态分配产生的生产量,和仓库的库存。

应用方向:

![paste image][image-3]

目前主流数据仓库有哪些框架

比较流行的有:AWS Redshift, Greenplum, Hive等

国内最常用的是一款基于Hadoop的开源数据仓库,名为Hive,它可以对存储在HDFS(是hadoop的文件系统的缩写)的文件数据进行查询、分析。

大部分公司都用的hadoop+hive,但是笔者最近从大数据从业者们了解到hadoop+hive是比较难维护的,如果公司实力不是特别强,强烈建议使用各大云平台提供的数据仓库服务,这样是最方便的。

Hive对外可以提供HiveQL,这是类似于SQL语言的一种查询语言。

在查询时可以将HiveQL语句转换为MapReduce任务,在Hadoop层进行执行。
Hive的最大优势在于免费,那其他知名的商业数据仓库有那些呢?比如Oracle,DB2,其中业界老大是Teradata
Teradata数据仓库支持大规模并行处理平台(MPP),可以高速处理海量实际上,性能远远高于Hive。对企业来说,只需要专注于业务,节省管理技术方面的精力,实现ROI(投资回报率)最大化。但是对于广大创业公司来说,这些商业软件,太贵了,目前就不在这里讨论了。

数据仓库有以下类别:

  • 采用传统的关系型数据库或经过功能扩展的MPP(massively paralle processing)数据库(就是大并发列式存储数据库)
  1. 传统的关系型数据库
  • oracle

    本身支持数据仓库,包含两种,一种是传统数据仓库,一种是动态数据仓库。
    传统数据仓库架构是用时间换空间的选择,以目前的互联网大数据需求,时效性已经无法满足,所以oracle引入了动态数据仓库。
    关于oracle数据仓库的介绍:https://www.oracle.com/ocom/groups/public/@otn/documents/webcontent/454566\_zhs.pdf

  • mysql
    本身不支持数据仓库扩展,但市场上有开源的基于mysql的列式存储数据库用来支持mysql的数据仓库,目前我知道的一个是:Infobright
    关于它的介绍请参考这篇文章:[开源MySQL数据仓库解决方案:Infobright][1]

  • PostgreSQL

    TB级数据可以使用它,

大规模并行处理数据库(也叫分析型MPP数据库)

Vertica 
Teradata(商业) 
Greenplum (开源) 
据了解,Greenplum数据库是业界最快和最高性价比的高端数据仓库解决方案。 
Greenplum是基于PostgreSQL的。
本质上讲GP是一个关系型数据库集群. 它实际上是由数个独立的数据库服务组合成的逻辑数据库。与RAC不同,这种数据库集群采取的是MPP架构。

于2015年开源。 
传说中四大行有3家在用,5大物流公司有4家在用,我还知道有国内航空业龙头顺利完成了Teradata到GP的迁移,去除人工后还省下了过千万费用,
GP支持百TB级数据。

关于GP的参考文章:
[GP建立数据仓库][2]
[GP官方开发文档][3]

  • SequoiaDB

    广州巨杉软件专注新一代大数据技术研发,是国内唯一的原厂金融级分布式数据库公司。
    SequoiaDB巨杉数据库,是一款企业级分布式NewSQL数据库,自主研发并拥有完全自主知识产权,没有基于任何其他外部的开源数据库源代码。SequoiaDB支持标准SQL、事务操作、高并发、分布式、可扩展、与双引擎存储等特性,并已经作为商业化的数据库产品开源。
    它内部集成了Spark内存计算框架,天生就具有报表分析功能。
    它面向的客户主要是国内的银行和金融机构。
    它具有Multi-Model全模数据支持,功能非常强大。

    他们的官网:http://www.sequoiadb.com/cn/

    知乎有相关的描述:https://www.zhihu.com/question/49082483

  • Hadoop+Hive或者基于hadoop的衍生框架

>> 1) hadoop + hive

PB级以上的数据量使用。

Hadoop是一个开源框架,可编写和运行分布式应用处理大规模数据。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系统,MapReduce 是分布式数据处理模型和执行环境。
hive是做数据仓库用的。

参考文章:

https://blog.csdn.net/u010270403/article/details/51493191

  1. CDH

CDH(Cloudera’s Distribution, including Apache Hadoop)是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建提供了Hadoop的核心可扩展存储、分布式计算 基于Web的用户界面。
简单来说CDH就是把我们知道的大数据家族组件进行了一个组合,然后提供了一个WEB-UI的页面,使原来的搭建操作变得非常简单。CDH架构图如下:

![paste image][image-4]

CDH集成了hadoop和其它大数据工具,还提供了友好的界面式交式,比单独搭建hadoop要友好,目前很多中小型公司在用。

[官网][4]

各云平台支持的数据仓库解决方案

  • 阿里云—MaxCompute

https://www.aliyun.com/product/odps?spm=5176.10695662.747654.1.13f5dde1q8aKf4

  • AWS + redshift

  • Tencent distributed Data Warehouse

TDW,是腾讯工程技术事业群数据平台部基于开源软件研发的大数据处理平台,它基于Hadoop、Hive、PostgreSQL之上进行研发,并在开源软件的基础上做了大量的定制和优化。目前TDW是腾讯内部规模最大的分布式系统,集中了腾讯内部各个产品的数据,为腾讯的各个产品提供海量数据存储和分析服务,包括数据挖掘、产品报表、经营分析等服务。

[TDW相关技术文章介绍][5]

  • UCloud—UDW

(UCloud Data Warehouse)是大规模并行处理数据仓库产品,提供Greenplum和Udpg两种可选的类型。Greenplum是EMC开源的数据仓库,Udpg是基于PostgreSQL开发的大规模并行、完全托管的PB级数据仓库服务。UDW可以通过SQL让数据分析更简单、高效,为互联网、物联网、金融、电信等行业提供丰富的业务分析能力。

[官网][6]

数据仓库是如何抽取与分析数据的

答案就是ETL。

什么是ETL

如何搭建一个数据仓库

[搭建hadoop仓库][7]

[docker镜像安装hadoop][8]

参考文章:

[漫画数据仓库][9]

[详解数据仓库和数据库的区别][10]

[PG与mysql相比优势何在][11]

[大数据环境下数据仓库漫谈][12]

[1]: https://blog.csdn.net/training2007/article/details/78952451
[2]: https://blog.csdn.net/heiyeshuwu/article/details/51306735
[3]: https://gp-docs-cn.github.io/docs/best_practices/summary.html
[4]: https://www.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_6_release_notes.html
[5]: https://www.biaodianfu.com/tdw.html
[6]: https://www.ucloud.cn/site/product/udw.html
[7]: https://blog.csdn.net/u010270403/article/details/51446674
[8]: https://www.jianshu.com/p/d7bc116a89e4
[9]: https://blog.csdn.net/bjweimengshu/article/details/79256504
[10]: https://blog.csdn.net/maiduiyizu/article/details/80371410
[11]: https://www.zhihu.com/question/20010554
[12]: http://lxw1234.com/archives/2015/08/471.htm

[image-1]: http://clockcoder.com/images/1550125093251lvxgy9x9.png?imageslim
[image-2]: http://clockcoder.com/images/1550127654377tihpzifu.png?imageslim
[image-3]: http://clockcoder.com/images/15501278321884zzv6s3c.png?imageslim
[image-4]: http://clockcoder.com/images/15501415872773yx8wggg.png?imageslim

文章目录
  1. 1. 大数据之数据仓库
    1. 1.1. 什么是数据仓库
      1. 1.1.1. 数据仓库的特征
    2. 1.2. 数据仓库与数据库的区别
    3. 1.3. 数据仓库用来解决什么问题
    4. 1.4. 目前主流数据仓库有哪些框架
    5. 1.5. 各云平台支持的数据仓库解决方案
    6. 1.6. 数据仓库是如何抽取与分析数据的
      1. 1.6.1. 什么是ETL
    7. 1.7. 如何搭建一个数据仓库