全国报名热线:0755-23061965

大数据培训经验传统数据库和数据仓库

时间:2017-11-18 14:27:04   来源:百战程序员   阅读:
之前我们学过数据库如MySQL、Oracle等等,那么今天带大家来了解一下数据仓库

【数据仓库】英文名称为 Data Warehouse,可简写为 DW 或 DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制.

 数据处理大致可以分成两大类:

1.联机事务处理OLTP(on-line transaction processing)
OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLTP系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;

2.联机分析处理OLAP(On-Line Analytical Processing)
OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLAP系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。
话不多说直接上图:



简而言之,数据仓库是用来做查询分析的数据库基本不用来做插入,修改,删除操作。

如果对上述概念理论还不清楚那我给大家举个例子:拿电商行业来说好了。
基本每家电商公司都会经历,从只需要业务数据库到要数据仓库的阶段。 



第一阶段,电商早期启动非常容易,入行门槛低。找个外包团队,做了一个可以下单的网页前端 + 几台服务器 + 一个MySQL,就能开门迎客了。这好比手工作坊时期。

第二阶段,流量来了,客户和订单都多起来了,普通查询已经有压力了,这个时候就需要升级架构变成多台服务器和多个业务数据库(量大+分库分表),这个阶段的业务数字和指标还可以勉强从业务数据库里查询。初步进入工业化。

第三阶段,一般需要 3-5 年左右的时间,随着业务指数级的增长,数据量的会陡增,公司角色也开始多了起来,开始有了 CEO、CMO、CIO,大家需要面临的问题越来越复杂,越来越深入。高管们关心的问题,从最初非常粗放的:“昨天的收入是多少”、“上个月的 PV、UV 是多少”,逐渐演化到非常精细化和具体的用户的集群分析,特定用户在某种使用场景中,例如“20~30岁女性用户在过去五年的第一季度化妆品类商品的购买行为与公司进行的促销活动方案之间的关系”等等。

这类非常具体,且能够对公司决策起到关键性作用的问题,基本很难从业务数据库从调取出来。

原因在于: 业务数据库中的数据结构是为了完成交易而设计的,不是为了而查询和分析的便利设计的。业务数据库大多是读写优化的,即又要读(查看商品信息),也要写(产生订单,完成支付)。因此对于大量数据的读(查询指标,一般是复杂的只读类型查询)是支持不足的。

 而怎么解决这个问题,此时我们就需要建立一个数据仓库了,公司也算开始进入信息化阶段了。数据仓库的作用在于: 数据结构为了分析和查询的便利;  只读优化的数据库,即不需要它写入速度多么快,只要做大量数据的复杂查询的速度足够快就行了。 那么在这里前一种业务数据库(读写都优化)的是业务性数据库,后一种是分析性数据库,即数据仓库。



总结一下:

1.数据仓库是一种结构体系,而数据库是一种具体技术。这就是最根本的区别(也是数据仓库这个东西提出初期被人疯狂嘲讽的原因)。

拿MySQL这个数据库和Apache Hive这个数据仓库为例。这里Hive事实上就是一个很宏大的“体系结构”。它可以把元数据保存在MySQL、Oracle或者Derby这些具体的数库“技术”里;它在进行查询时把SQL转化成MapReduce job,这里它又用到了MapReduce计算模型这种“技术”。 再抽象一下,数据仓库和数据库的关系就像川菜和辣椒的关系一样。当我吃川菜的时候,刺激我的主要是川菜的辣。但是世界使用辣椒的门派也很多,韩国料理里也有辣椒,但是这和川菜就是不一样。川菜不仅仅使用了辣椒,还有其他烹饪技法使它具有鲜明特征。 

而单独使用MySQL虽然可以查一查简单东西,但是不能达到数据仓库“支持决策”这一高度。就像单独使用辣椒可以爽爽,但是没有办法搞出川菜这个能做招牌的地方菜系。

从高处看这些概念会好一点:数据仓库是伴随着信息与决策支持系统的发展过程产生的,而数据库并不是。
 
 2.数据库/数据仓库的用户群体和工作场景不同。
数据库属于操作型系统,数据仓库属于分析性系统。操作性系统(数据库)的用户群体是大量客户,每次操作修改的数据量非常小,对时间敏感度非常高。分析性系统(数据仓库)的用户是决策人员,他们不修改数据但是会分析大量数据,而且他们对得出结果的时间不敏感。  比如说微博每天有上千万用户在发微博、修改个人资料,每个人都只修改属于自己的那几条数据,同时希望修改后立刻可以用。而为数不多的决策者希望通过微博进行挖掘,他们不可能修改用户数据,但是他们会访问大量数据。最后他们对时间不敏感,等到一个结果跑5分钟到1小时都可以的。 你可以看出这两种需求根本上是不一样的。所以操作型处理及数据要和分析型处理及数据分开。

3.数据库和数据仓库常见的种类数据库比较流行的有:MySQL, Oracle, SqlServer
数据仓库比较流行的有:AWS Redshift, Greenplum, Hive等 。

【这样把数据从业务性的数据库中提取、加工、导入分析性的数据库就是传统的 ETL 工作。现在也有一些新的方法,这展开说又是另一件事情了,有机会再详细说说】。
分享:0
开班计划
热门文章
学员感言

电话咨询

客服热线服务时间

周一至周五 9:00-21:00

周六至周日 9:00-18:00

咨询电话

0755-23061965

微信扫一扫