2024年2月6日发(作者:)
数据仓库基本概念
对数据仓库最大的误解是把它当作一个现成的可以直接买来使用的产品。数据仓库和数据库不同,它不是现成的软件或者硬件产品。确切说,数据仓库是一种解决方案,是对原始的操作数据进行各种处理并转换成有用信息的处理过程,用户可以通过分析这些信息从而作出策略性的决策。
随着计算机技术的迅速发展,信息处理技术也得到了长足的发展,从70年代中期的MIS系统发展到现代的数据仓库(Data Warehouse)技术。许多厂商都在开发自已的数据仓库解决方案,并通过各种渠道大力推广。但就数据仓库技术而言,目前仍存在着许多认识上的误区,本文将着重介绍一些数据仓库的基本概念以及建立数据仓库时应该注意的一些情况。
数据仓库不是现成软件或硬件产品
对数据仓库最大的误解可能是把它当作一个现成的可以直接买来使用的产品。事实上,数据仓库和数据库不同,它不是现成的软件或者硬件产品。比较确切地说,数据仓库是一种解决方案,是对原始的操作数据进行各种处理并转换成有用信息的处理过程,用户可以通过分析这些信息从而作出策略性的决策。因此,在很多场合,我们也把数据仓库系统称为决策支持系统。由于这个原因,数据仓库的用户不是类似银行柜员的终端操作人员,而是针对各个业务部门的用户和有关决策人员。因此,数据仓库的用户比传统的OLTP(联机事务处理:On-line Transaction Processing)用户少得多。
OLTP与OLAP
OLTP系统也称为生产系统,它是事件驱动、面向应用的,比如银行的储蓄系统就是一个典型的OLTP系统。
OLTP的基本特点是:
·对响应时间要求非常高;
·用户数量非常庞大,主要是操作人员;
·数据库的各种操作基于索引进行。
OLAP(联机分析处理:On-line Analytical Processing)是基于数据仓库的信息分析处理过程,是数据仓库的用户接口部分。OLAP系统是跨部门、面向主题的,其基本特点是:
·基础数据来源于生产系统中的操作数据(Operational Data);
·响应时间合理;
·用户数量相对较小,其用户主要是业务决策与管理人员;
·数据库的各种操作不能完全基于索引进行。
OLAP工具是整个数据仓库解决方案中不可缺少的一部分,目前市场上有许多这类成熟的产品,如NCR的QueryMan、Andyne软件公司的GQL(Graphic Query Language)、Brio Technology公司的Brio Query等等。这些产品大都运行在Windows环境下,具有友好的用户
界面,通过ODBC驱动程序和TCP/IP协议与数据库系统相连,是一种典型的Client/Server结构。
这些OLAP工具的特点是用户不需要掌握很深的SQL知识就可使用。用户提出问题后,这些工具能自动加以分析,根据系统的数据库模型产生SQL语句,通过ODBC接口向服务器数据库提出交易请求,然后将主机返回的结果以用户指定的方式显示出来。它们一般在本地
维护一个多维数据库,把结果保存在本地库中,因此可以离线工作。
数据仓库系统的查询特点
数据仓库和生产系统不同,它保存的是历史数据,一般不作修改,因此用户针对数据仓库的交易主要是查询。数据仓库的查询和生产系统的查询有很大的区别。
针对生产系统的查询都很简单,一般不会使用表连接操作(Table Join),每次返回的数据量很小,这类问题的特点是"知道自已要找什么",例如根据银行帐号查余额。这类操作都是基于索引进行的,如帐号可以作为储蓄系统的索引。由于这些特点,数据库大小对系统性能影响不大。
针对数据仓库系统的查询大都非常复杂,主要有两种:一种以报表为主,从数据库中产生各种形式的业务报表。这种查询是预先规划好的(Pre-defined Query);另一种则是随机的、动态的查询(Ad-Hoc Query),对查询的结果也是不能预料的。例如世界上最大的连锁超市集团Wal*Mart曾经发现在周未的时候啤酒与一次性尿布的销售量很大,有关人员通过对数据仓库中的信息进行分析,寻找这两种商品的共同点,结果发现很多父亲在购买啤
酒时喜欢顺便捎些尿布,于是他们把这两种商品放在很近的位置,方便父亲们购买,结果这两种商品的销售量都增加了很多。
数据仓库中的查询由于其复杂性,会经常使用多表的联接、累计、分类、排序等操作,这些大都要对整个表进行搜索。每次查询返回的数据量一般很大,对于Ad-Hoc查询而言,经常需要根据上次查询的结果进行进一步的搜索,这个过程常称为数据挖掘。
根据这些特点,数据库大小对数据仓库系统的性能影响很大。当数据仓库投入使用后,各业务部门的要求会越来越多,使得数据仓库中数据量的增长速度很快,因此设计数据仓库时,系统的可扩展能力是必须考虑的重要因素之一。
系统的并行处理能力是另一个要考虑的重要因素。因为查询的复杂性,每个查询将占用很多的系统资源,如果并行处理能力不强,当多个用户同时发出交易请求时,响应时间可能长得不可容忍。
详细数据与小结数据
下图(注:图未能找到,酷勤网深表抱歉,下同)可以清楚地说明详细数据(Detail Data)与小结数据(Summary Data)的作用和区别。左边一列记载了扫描仪在每个连锁店每天的交易细节(数量、交易时间、交易地点、类型、客户、售货员等),中间一列记录了扫描仪每天按连锁店分类的交易汇总情况,右边一列记录了扫描仪每周按连锁店分类的交易汇总情况。由此可见,小结可以是多种层次的。
@@;图1@@
详细数据中包含了许多有价值的信息,经小结处理后,可能会丢失这些信息。举例来说,市场行销人员规划在某个星期二和星期三进行扫描仪的产品推销活动(如采取一些优惠措施),如果他们只知道每周扫描仪的销售量,怎么能看出这个推销活动的效果?又如何来分析客户的购买行为?
由此可见,为了更准确地分析市场发展规律,提高企业的竟争优势,数据仓库中应该存储尽可能详细的数据,为决策提供更加可靠的信息。如前面提到的Wal*Mart集团,其全世界所有连锁店
每天的交易数据都会通过卫星传送到在美国的中央数据仓库,如果顾客买了
两枝同样型号但不同颜色的铅笔,在数据仓库中都是两条记录,因为据此可以分析对不同颜色铅笔的需求规律,从而确定货存量等。
既然详细数据的作用如此大,为什么还要对其进行小结处理呢?主要原因是:
1.数据仓库的引擎(数据库系统)不适合处理大量的数据,前面已经说明,在数据仓库中数据量大小对系统整体性能影响很大,而能在OLTP系统中处理TB级数据并不能代表在数据仓库中也能处理TB级数据。
2.降低存储系统投资。在以前,存储介质是非常昂贵的。
3.降低MIPS投资。尽管计算机性能已经有了很大提高,开放系统的价格一降再降,但直到现在,专用大型主机的MIPS仍然非常昂贵。
由此可见,选择能支持TB级数据仓库的数据库系统和在开放环境下建立数据仓库是非常重要的。
数据仓库与数据集市
数据集市(Data Mart)也是当前非常热门的一个术语,一种比较常见的误解是认为它与数据仓库的差别只是数据量的大小而已。事实上,数据仓库是企业级的,能为整个企业各个部门的运行提供决策支持手段;而数据集市是部门级的,一般只能为某个局部范围内的管理人员服务。有些供应商也称之为部门级数据仓库(Departmental Data Warehouse)。
数据集市有两种,即独立的数据集市(Independent Data Mart)和从属的数据集市(Dependent
Data Mart)。从下图可以清楚地看到数据仓库、从属数据集市与独立数据集市之间的关系:
@@;图2@@
图中左边表示的是企业数据仓库的逻辑结构。我们看到,其中的数据来自于各生产系统,把它们的操作数据按照企业数据仓库物理模型结构的定义转换过来。采用这种中央数据仓库的做法,可以保证现实世界的一致性。
中间表示的是从属数据集市的逻辑结构。所谓从属,是指它的数据直接来自于中央数据仓库。显然,这种结构仍能保持数据的一致性。一般情况下,为那些访问数据仓库十分频繁的关键业务部门建立从属的数据集市,这样可以很好地提高查询的反应速度。另外一个原因是:在设计数据仓库的逻辑模型时,为了保证结构清楚,降低数据冗余度,一般都按第三范式(3NF:Third Normal Form)来设计。但在物理实现时,出于性能方面的考虑,常常要作非正则处理(De-Normalize),使得中央库的复杂性增加,不易维护,数据冗余大。因此,当中央数据仓库十分庞大时,我们一般不对中央库作非正则处理,而是建立一个从属数据
集市,对它作非正则处理,这样既能提高响应速度,又能保证整个系统的易维护性。其代价是增加了对数据集市的投资。
右边描述了独立数据集市的逻辑结构,它的数据直接来源于各生产系统。许多企业在计划实施数据仓库时,往往出于投资方面的考虑,最后建成的就是这种结构的独立数据集市,用来解决个别部门比较迫切的决策问题。从这个意义上讲,它和企业数据仓库除了在数据量大小和服务对象上有所区别外,逻辑结构并无多大区别,也许这是把数据集市称为部门数据仓库的主要原因。关键问题在于:随着需求的增加,数据量也会迅速增加,系统规模将迅速扩大,是把原来的独立数据集
市扩展成为上图中左边的企业数据仓库呢?还是为各部门分别建立独立的数据集市形成如下图所示的繁杂系统?
@@;图3@@
在这种结构中,IT部门必须设计多个数据转换程序,把各生产系统的操作数据转换到每个独立数据集市中,以便保持数据的一致性。显然,这种策略将使整个系统变得非常复杂难于维护,在投资方面更是得不偿失,因为硬件系统的投资成比例增加,软件方面的投资和维护方面的投资则成指数形式增加。
既然这种分布式的独立数据集市结构有诸多问题,为什么还有一些企业仍在这样做呢?回答是"不得已而为之"。因为硬件平台或者数据库在扩展性方面限制太多,并行处理能力不够,无法处理大量的数据,最后只能形成这种尴尬局面。
如何衡量数据仓库引擎
从前面的分析我们可以看到,作为数据仓库引擎的数据库管理系统,其性能的优劣对整个数据仓库解决方案的成功实施起着举足轻重的作用。那么,如何来衡量一个数据库管理系统是否适合作为数据仓库引擎呢?
大家可能都知道,在国际上有一个叫TPC的组织。TPC是事务处理委员会(Transaction
Processing Performance Council)的英文缩写,是一个国际性的组织,由45个会员公司组成,IBM、Microsoft、NCR、NEC、DEC、HP、SUN等跨国公司都是其会员。TPC专门负责为各种开放平台在不同类型的应用上制定一个统一、公正的测试标准。在国际上,对于IT行业的供应商来说,进行TPC规定的测试是它们进入各领域的敲门砖。
对于OLTP系统,衡量其数据库性能的主要指标是TPC-C,这里不作分析。对于数据仓库系统,衡量其数据库性能的主要指标则是TPC-D。主要有三方面的数据需要考虑:
QppD:这个数据描述了系统的查询处理能力,它是Query Processing Power D的缩写(D表示这个结果是按照TPC-D标准测得的,下同)。
QthD:是Query Throughput D的缩写,即流量测试结果,描述了系统在多个用户同时进行查询时的处理能力。换言之,它也充分代表了系统的并行处理能力。
QphD:是Query Price-Performance D的缩写,即性能价格比。
显然,前面两个指标的数据越大越好,而最后一个则越小越好。当然,首先要考虑的应该是能否满足业务上的需求。关于TPC的介绍已经很多,这里不再重复。
各家供应商的TPC-D值以及TPC-D的详细描述可以从TPC在Internet的主页上找到,其Web地址为:/。另外,也可以从Microsoft、IDEAS等公司的主页上找到TPC-D的测试结果。
需要作些说明的是流量测试结果。尽管它描述了系统处理并发查询请求的能力,但并非所有厂商的流量测试都是在多用户状态下进行的,因为TPC-D给了供应商们一个选择:直接进行多用户状态下的流量测试;或者先在单用户状态下进行测试,然后利用测得的处理能力指标QppD和流量指标的计算公式来"计算"出QthD。如何区分这两种测试结果呢?TPC-D的测试概要(Executive
Summary)中清楚地说明了在作流量测试时的STREAM数目。STREAM数实际上代表了同时递交查询
请求的用户个数。如果是单用户状态下进行测试,则只
能发现一个STREAM,即STREAM00。到目前为止,还只有NCR公司的Teradata数据库系统是在多用户状态下进行流量测试的。
TPC-D的测试是在不同的数据库级别上进行的,主要可供参考的是100GB、300GB和1000GB三个级别上的测试结果。下面两个表是从Microsoft公司的Web页面上下载的300GB和1000GB两个级别的TPC-D测试结果。我们看到,在1000GB级别上,目前还只有NCR公司宣布了其TPC-D指标,该结果是在其WorldMark系列服务器和Teradata数据库系统上进行的。
什么是数据仓库-数据仓库的基本概念
1.数据仓库概念始于上世纪80年代中期,首次出现是在被誉为“数据仓库之父”WilliamH.Inmon的《建立数据仓库》一书中。随着人们对大型数据系统研究、管理、维护等方面的深刻识认和不断完善,在总结、丰富、集中多行企业信息的经验之后,为数据仓库给出了更为精确的定义,即“数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合”。数据仓库并没有严格的数据理论基础,也没有成熟的基本模式,且更偏向于工程,具有强烈的工程性。通常按其关键技术部份分为数据的抽取、存储与管理以及数据的表现等三个基本方面。
数据仓库的重点与要求是能够准确、安全、可靠地从数据库中取出数据,经过加工转换成有规律信息之后,再供管理人员进行分析使用。数据仓库主要是应用于决策支持系统,其主要目的是“提取”信息并加以扩展,用来进行处理基于数据仓库的决策支持系统(DSS)的应用。
2 基于数据仓库的决策支持系统(DSS)由三个部件组成:数据仓库技术(Data warehousing),联机分析处理技术(OLAP,On—Line Analytical Pro—cessing),数据挖掘技术(Data Mining)。
联机分析处理(OLAP,On—Analytical Pro—cessing)是使分析人员、管理人员或执行人员能够从多种角度对从原始数据中转化出来的、能够真正为用户所理解的、并真实反映企业给特性的信息进行快速、一致、交互地存取,从而获得对数据的更深入了解的一类软件技术。OLAP的目标是满足决策支持或多维环境特定的查询和报表需求。数据仓库侧重于存储和管理面向决策主题的数据;而OLAP侧重于数据仓库的数据分析,并将其转换成辅助决策信息。OLA P的一个主要特点是多维数据分析,这与数据仓库的多维数据组织正好形成相互结合、相互补充的关系。问此,利用OLAP技术与数据仓库的结合可以较好地解决传统决策支持系统既需要处理大量数据又需要进行大量数值计算的问题。
OLAP的多维数据分析主要通过对多维数据的维进行剖切、钻取和旋转来实现对数据库所提供的数据进行深入分析,为决策者提供决策支持。多维结构是决策支持的支柱,也是OLAP的核心。
数据挖掘(Data Mining)是从大量的、不完全的、有噪声的。模糊的、随机的数据中提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。数据挖掘可以看成是一种数据搜寻过程,它不必预先假设或提出问题,但是仍能找到那些非预期的却令人关注的信息,这些信息表示了数据元素的关系和模式。它能挖掘出数据键潜在的模式(pattern),找出最有价
值的信息和知识(knowledge)。指导商业行为或辅助科学研究。研究对象是大规模和超大规模的数据集合。
数据仓库概念的提出者、美国著名信息工程专家 William Inmon 博士在90年代初提出了数据仓库概念的一个表述。他认为:“一个数据仓库通常是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,它用于对管理决策过程的支持。”
所谓主题,是指用户使用数据仓库进行决策时所关心的重点方面,如:收入、客户、销售渠道等;所谓面向主题,是指数据仓库内的信息是按主题进行组织的,而不是像业务支撑系统那样是按照业务功能进行组织的。
所谓集成,是指数据仓库中的信息不是从各个业务系统中简单抽取出来的,而是经过一系列加工、整理和汇总的过程,因此数据仓库中的信息是关于整个企业的一致的全局信息。
所谓随时间变化,是指数据仓库内的信息并不只是反映企业当前的状态,而是记录了从过去某一时点到当前各个阶段的信息。通过这些信息,可以对企业的发展历程和未来趋势做出定量分析和预测。
而信息本身相对稳定,是指一旦某个数据进入数据仓库以后,一般很少进行修改,更多的是对信息进行查询操作。
依据上面的定义,有人可能会把数据仓库简单地理解为仅仅是一个大型的数据存储机制,是一个静态的概念。实际上,数据仓库更像一个过程,这个过程涉及数据的收集、整理和加工,生成决策所需要的信息,并且最终把这些信息提供给需要这些信息的使用者,供他们做出改善业务经营的正确决策。数据仓库的重点与要求就是能够准确、安全、可靠地从业务系统中取出数据,经过加工转换成有规律信息之后,供管理人员进行分析使用。因此数据仓库是一个动态的概念,应该称为数据仓库工程(Data Warehousing)。
数据仓库简介
数据仓库的类型根据数据仓库所管理的数据类型和它们所解决的企业问题范围,一般可将数据仓库分为下列3种类型:企业数据仓库(EDW)、操作型数据库(ODS)和数据市集(DataMart)。数据仓库主要工作的对象为多维数据,因此又称为多维数据库。
1. 数据仓库的概念
数据仓库领域的权威W.H.Inmon给出了数据仓库的一个简短而全面的定义:数据仓库是一个面向主题、集成、时变、非易失的数据集合,是支持管理部门的决策过程。根据该定义,数据仓库具备以下四个关键特征:
1.1 面向主题(Subject Oriented)的数据集合
数据仓库通常围绕一些主题,如“产品”、“销售商”、“消费者”等来进行 组织。数据仓库关注的是决策者的数据建模与分析,而不针对日常操作和事务的处理。因此,数据仓库提供了特定主题的简明视图,排除了对于决策无用的数据。
1.2 集成(Integrated)的数据集合
数据仓库通常是结合多个异种数据源构成的,异种数据源可能包括关系数据库、面向对象数据库、文本数据库、Web数据库、一般文件等。
1.3 时变(Time Variant)的数据集合
数据存储从历史的角度提供信息,数据仓库中包含时间元素,它所提供的信息总是与时间相关联的。数掘仓库中存储的是一个时间段的数据,而不仅仅是某一个时刻的数据。
1.4 非易失(Nonvolatile)的数据集合
数据仓库总是与操作环境下的实时应用数据物理地分离存放,因此不需要事务处理、恢复和并发控制机制。数据仓库里的数据通常只需要两种操作:初始化载入和数据访问,因此其数据相对稳定,极少或根本不更新。
综上所述,数据仓库是一种语义上一致的数据存储,它充当决策支持数据模型的物理实现,并存放企业战略决策所需信息。数据仓库也常常被视为一种体系结构,通过将异种数据源中的数据集成在一起而构成,支持结构化和专门的查询、分析报告和决策制定。
2 数据仓库的类型
数据仓库的类型根据数据仓库所管理的数据类型和它们所解决的企业问题范围,一般可将数据仓库分为下列3种类型:企业数据仓库(EDW)、操作型数据库(ODS)和数据市集(DataMart)。①企业数据仓库为通用数据仓库,它既含有大量详细的数据,也含有大量累赘的或聚集的数据,这些数据具有不易改变性和面向历史性。此种数据仓库被用来进行涵盖多种企业领域上的战略或战术上的决策。②操作型数据库既可以被用来针对工作数据做决策支持,又可用做将数据加载到数据仓库时的过渡区域。与EDW相比较,ODS有下列特点:ODS是面向主题和面向综合的;ODS是易变的;ODS仅仅含有目前的、详细的数据,不含有累计的、历史性的数据。③数据市集是数据仓库的一种具体化,它可以包含轻度累计、历史的部门数据,适合特定企业中某个部门的需要。几组数据市集可以组成一个EDW(在以后部分将会重点提到)。随着数据仓库发展的需求,软件工具升级相当快,新产品也层出不穷。为了便于追踪其技术发展和更好地选择相关的工具,数据仓库的构造者应该广泛地收集这方面的文件和数据,以便做出最佳的选择。
3 数据仓库与传统数据库的比较
传统的关系型数据库RDB遵循一致的关系型模型,其中的数据(记录)以表格的方式存储,并且能用统一的结构化查询语言(Structual Query Language,SQL)进行数据查询,因此它的应用常被称为联机交易处理(OLTP),其重点在于完成业务处理,及时给予客户响应。关系型数据库能够
处理大型数据库,但不能将其简单地堆砌就直接作为数据仓库来使用。数据仓库主要工作的对象为多维数据,因此又称为多维数据库。多维数据库的数据以数组方式存储,既没有统一的规律可循,也没有统一的多维模型可循,它只能按其所属类别进行归类。以应用而言,多维数据库应该具备极强的查询能力,多维数据库中存储的信息既多又广,但由于其完成的是一种联机事物分析(OLAP),因此并不追求瞬时的响应时间,在有限的时间中给予响应即被认可。实际上,OLAP包含交互式的数据查询,伴随着多种分析方法,例如下钻或成功地钻入到最底层的细节信息上。因此数据仓库中的信息,尽管是多维的,仍然可以用具体的表格表示。尽管数据仓库与传统数据库之间存在着如此大的差异,但设计数据仓库并不是完全另起炉灶,而可利用现有的传统处理数据,从中进行信息的综合,从而构造出满足不同需求的数据仓库。即数据从动态的、目前事件驱动的传统工作数据流向静态的、历史性质的数据仓库。从理论上说,从工作数据中战略性地引入到期的数据可以完成这种转变,但是由于受到实际存储容量和技术的限制,这实际上是不可能的。因此必须从工作数据中分离和筛选数据进入到数据仓库中。鉴于以上各种因素,为保证OLAP的性能,必须将数据仓库和传统工作的数据相分离。
为什么要建立数据仓库
数据库和数据仓库当然都是装数据的地方,关键的区别是装的什么样的数据,数据库装的原始数据,没经过任何加工;而数据仓库是为了满足分析需要,对源数据进行了Transform过程。
这是IT pub上一篇帖子引发出的问题,以前还真没去仔细思考这个问题:为什么要建立数据仓库,数据仓库和数据库的区别?因为理论上的优点说法都很多,但要真正很好地理解,能简洁地向客户阐述明白,让客户觉得建立数据仓库是一件值得做的事情,还是值得讨论一下这个问题。有如下一些朋友们说法(自己在批注处谈点个人的意见):
A
数据库是一个装数据(信息的原材料)的地方。 数据仓库是一种系统,这种系统也是用数据库装东西。(这有点没说清楚:个人理解数据库和数据仓库当然都是装数据的地方,关键的区别是装的什么样的数据,数据库装的原始数据,没经过任何加工;而数据仓库是为了满足分析需要,对源数据进行了Transform过程,具体是怎样一个处理过程,可以从Bill Inmon的仓库定义四个特性进行理解。) 数据仓库系统(用数据库装东西)与其他基础业务系统(例如财务系统、销售系统、人力资源系统等,也是用数据库装东西)的区别是: 基础业务系统的特点是各管各的,例如财务系统生产了白菜,那么用一个数据库来装,人力资源系统生产了猪肉,再用一个数据库来装。我要做一道菜,需要分别到各个数据库去取,比较麻烦(现实的情况是大部分时候让种菜的农民伯伯送过来,但送过来的东西不一定是我想要的,而且不同的时候我想要不同的东西,经常会被农民伯伯骂,弄得双方都不开心)。另外一方面,各个数据库中放的是一些比较原始的东西,我要拿过来做菜,还需要经过很麻烦的清洗过程,一不小心里面可能就藏着一条大青虫。
那么,数据仓库系统就是建立一个大的超市,将各地农民伯伯出产的东西收集过来,清洗干净,分门别类地放好。这样,你要哪种菜的时候,直接从超市里面拿就可以了。
B
早期一直不理解数据仓库是什么困惑得很。 宏观一点讲,数据仓库就是堆放公司所有数据的地方,之所以把数据都堆在一起,是为了从中间找到有价值的东西。 数据仓库更多的是一个概念,不要把数据仓库想成那些号称是数据仓库的软件产品们。(数据仓库的建立和数据挖掘都是一个过程,可以从数据仓库生命周期和OLTP系统生命周期的区别进行理解,数据挖掘过程CRISP-DM)
数据仓库的物理上就是数据库。相对业务系统数据库叫OLTP数据库(用于业务处理),这种数据库叫OLAP数据库(用于业务分析,不知道有没有这种说法,个人觉得OLAP和数据库还是不能简单地称为OLAP数据库的;OLAP是针对特定问题的联机数据访问和数据分析而产生的一种技术,它满足DDS从多种角度对数据进行快速、一致、交互地分析,克服传统DDS交互能力差的弊病,使决策者能够对数据进行深入观察。OLAP服务器使用为用户预定义的多维数据视图对数据仓库的信息进行统计分析处理,为具有明确分析范围和分析要求的用户提供高性能的决策支持在线分析处理,只是基于DW上的一种多维分析方式,当然我也可以不用OLAP,直接做基于DW的DM)。
数据仓库的概念是针对以下基本需求产生的: 公司的业务系统很多,业务系统的历史数据不方便查询。不同的业务系统往往管理部门不同,地域不同。能不能将所有这些数据集中起来,再淘淘有没有有意义的业务规律。 数据仓库数据库往往很大,因为公司所有的数据集中得越多,越能淘到有价值的发现。例如随便就100G以上。 数据仓库的组成十分繁杂,既有业务系统的历史数据,又有人事、财务数据,还要自己建一些基础性的数据,例如,公共假期数据、地理信息、国家信息等等。 数据仓库概念包含从业务生产系统采集数据的程序,这个程序还不能影响业务系统的运行。(属于所谓“ETL”过程) 数据仓库包括业务系统长期的历史数据,例如5年,用来分析。(所谓“ODS”数据) 数据仓库包括针对某相业务值(例如销售量)重新打上标签的业务流水数据。(所谓“事实表”、“维度表”)。 数据仓库概念兴许还包含报表生成工具(所谓“BI”工具)。这些工具能够达到几年前所谓DSS(决策分析)的效果。 数据仓库的客户历史资量的分析,也许又与CRM系统粘点边。 总之,一点,一个公司想针对已有的历史业务数据,充分的利用它们,那么就上数据仓库项目。至于哪些吓唬人的大写字母的组合,只是达到这个目标的科学技术罢了。 牢记住数据仓库的基本需求,不要被供应商吓着。
C
数据仓库可以说是决策支持系统(个人不同意这个观点,决策支持系统(DDS)是在管理信息系统的基础上发展起来的,在数据仓库、OLAP技术和数据挖掘工具出现以前,就已经有DSS了,但其在实际应用开发过程中暴露出许多问题,DW为克服传统DDS存在的问题提供了技术上的支持,基于DW上的DSS效果自然有很大提升),能帮助老板了解企业的整体全貌,看到数据仓库提供的经过整理统计归纳的数据后老板凭自己的管理经验可以发现企业的问题或困难或成功因素在哪一方面,然后可以不断的追溯数据,直到确定到最具体的细节上,这样能够不断提升老板或管理层的管理水平,不断改善企业的管理。我们知道的最好的一个例子就是美国某大型超市啤酒和尿布的故事。 沃尔玛公司在美国的一位店面经理曾发现,每周,啤酒和尿布的销量都会有一次同比攀升,一时却搞不清是什么原因。后来,沃尔玛运用商业智能(Business Intelligence,简称BI)技术发现,购买这两种产品的顾客几乎都是25岁到35岁、家中有婴儿的男性,每次购买的时间均在周末。沃尔玛在对相关数据分析后得知,这些人习惯晚上边看球赛、边喝啤酒,边照顾孩子,为了图省事而使用一次性的尿布。得到这个结果后,沃尔玛决定把这两种商品摆放在一起,结果,这两种商品的销量都有了显著增加。 数据库是数据仓库的基础。数据仓库实际上也是由数据库的很多表组成的(这句话明显不成立,数据仓库里表分为事实表和维表,这和数据库里的表还是有本质区别的,组织方式完全不一样,一个是面向主题,一个是面向业务的)。需要把存放大量操作性业务数据的数据库经过筛选、抽取、归纳、统计、转换到一个新的数据库中。然后再进行数据展现。老板关注的是数据展现的结果。
数据库和数据仓库的区别
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋
简而言之,数据库是面向事务的设计,数据仓库是面向主题设计的。
数据库一般存储在线交易数据,数据仓库存储的一般是历史数据。
数据库设计是尽量避免冗余,一般采用符合范式的规则来设计,数据仓库在设计是有意引入冗余,采用反范式的方式来设计。
数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID。
单从概念上讲,有些晦涩。任何技术都是为应用服务的,结合应用可以很容易地理解。以银行业务为例。数据库是事务系统的数据平台,客户在银行做的每笔交易都会写入数据库,被记录下来,这里,可以简单地理解为用数据库记帐。数据仓库是分析系统的数据平台,它从事务系统获取数据,并做汇总、加工,为决策者提供决策的依据。比如,某银行某分行一个月发生多少交易,该分行当前存款余额是多少。如果存款又多,消费交易又多,那么该地区就有必要设立ATM了。
显然,银行的交易量是巨大的,通常以百万甚至千万次来计算。事务系统是实时的,这就要求时效性,客户存一笔钱需要几十秒是无法忍受的,这就要求数据库只能存储很短一段时间的数据。而分析系统是事后的,它要提供关注时间段内所有的有效数据。这些数据是海量的,汇总计算起来也要慢一些,但是,只要能够提供有效的分析数据就达到目的了。
数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库”。那么,数据仓库与传统数据库比较,有哪些不同呢?让我们先看看关于数据仓库的定义:面向主题的、集成的、与时间相关且不可修改的数据集合。
“面向主题的”:传统数据库主要是为应用程序进行数据处理,未必按照同一主题存储数据;数据仓库侧重于数据分析工作,是按照主题存储的。这一点,类似于传统农贸市场与超市的区别—市场里面,白菜、萝卜、香菜会在一个摊位上,如果它们是一个小贩卖的;而超市里,白菜、萝卜、香菜则各自一块。也就是说,市场里的菜(数据)是按照小贩(应用程序)归堆(存储)的,超市里面则是按照菜的类型(同主题)归堆的。
“与时间相关”:数据库保存信息的时候,并不强调一定有时间信息。数据仓库则不同,出于决策的需要,数据仓库中的数据都要标明时间属性。决策中,时间属性很重要。同样都是累计
购买过九车产品的顾客,一位是最近三个月购买九车,一位是最近一年从未买过,这对于决策者意义是不同的。
“不可修改”:数据仓库中的数据并不是最新的,而是来源于其它数据源。数据仓库反映的是历史信息,并不是很多数据库处理的那种日常事务数据(有的数据库例如电信计费数据库甚至处理实时信息)。因此,数据仓库中的数据是极少或根本不修改的;当然,向数据仓库添加数据是允许的。
数据仓库的出现,并不是要取代数据库。目前,大部分数据仓库还是用关系数据库管理系统来管理的。可以说,数据库、数据仓库相辅相成、各有千秋。
补充一下,数据仓库的方案建设的目的,是为前端查询和分析作为基础,由于有较大的冗余,所以需要的存储也较大。为了更好地为前端应用服务,数据仓库必须有如下几点优点,否则是失败的数据仓库方案。
1.效率足够高。客户要求的分析数据一般分为日、周、月、季、年等,可以看出,日为周期的数据要求的效率最高,要求24小时甚至12小时内,客户能看到昨天的数据分析。由于有的企业每日的数据量很大,设计不好的数据仓库经常会出问题,延迟1-3日才能给出数据,显然不行的。
2.数据质量。客户要看各种信息,肯定要准确的数据,但由于数据仓库流程至少分为3步,2次ETL,复杂的架构会更多层次,那么由于数据源有脏数据或者代码不严谨,都可以导致数据失真,客户看到错误的信息就可能导致分析出错误的决策,造成损失,而不是效益。
3.扩展性。之所以有的大型数据仓库系统架构设计复杂,是因为考虑到了未来3-5年的扩展性,这样的话,客户不用太快花钱去重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于数据量大很多,就运行不起来了。
数据仓库学习笔记
商业智能的技术体系主要有数据仓库(DW)、在线分析处理(OLAP)以及数据挖掘(DM)三部分组成。数据仓库是商业智能的基础,许多基本报表可以由此生成,但它更大的用处是作为进一步分析的数据源。数据仓库(DW)就是面向主题的、集成的、稳定的、不同时间的数据集合
1996年, Inmon 在他的专著《Building the Data Warehouse》中, 对数据仓库做了如下定义,即“面向主题的、完整的、非易失的、不同时间的、用于支持决策的数据集合”。这和传统的OLTP系统有很大的区别,它属在线分析(OLAP)系统的范畴。面向主题的,指的是它将依据一定的主题,比如经销商、产品、定单等汇总各个OLTP系统的数据。完整的, 指的是要求对各个系统数据表示进行转换,用统一编码表示,比如,A系统用001表示退货, 而B系统用999表示退货,在数据仓库中必须统一成一个编码。 非易失的, 指的是系统用户只读数据,不得修改数据。 数据仓库完整地记录了各个历史时期的数据,而OLTP系统不会保留全部的历史记录。OLTP系统也难以支持决策查询,例如从几千万笔记录中获取不同区域的汇总报表。
完整的数据仓库应包括:
1.数据源-> -> 3.数据仓库存储 -> -> 工具
现实中可以实现的方案有:
1.数据源-> BI工具
2.数据源-> OLAP -> BI工具
3.数据源-> 数据仓库存储 -> BI工具
4.数据源-> 数据仓库存储 -> OLAP -> BI工具
5.数据源-> ETL -> 数据仓库存储 -> OLAP -> BI工具
可见其中必需的是数据源和前端,其他的部分都可根据具体情况决定取舍。
建立数据仓库的步骤:
1) 收集和分析业务需求
2) 建立数据模型和数据仓库的物理设计
3) 定义数据源
4) 选择数据仓库技术和平台
5) 从操作型数据库中抽取、净化、和转换数据到数据仓库
6) 选择访问和报表工具
7) 选择数据库连接软件
8) 选择数据分析和数据展示软件
9) 更新数据仓库
数据仓库设计的主要步骤如下:
1. 系统主题的确定
这要求系统设计人员多与业务人员沟通, 详细了解业务需求、报表需求,再归纳成数据仓库的主题。 例如, 经销商主题,包含经销商各个历史时期的级别、 销售额、信贷、活动区域等。 产品主题,包含每个产品在各个历史时期、各个区域的销售额、促销力度、销售件数、产品类别等。
2. 数据库的逻辑设计
在确定主题后, 需要对主题包含的信息进行详细定义,并对事实表和维表的关系详细定义。比如,
经销商主题中的销售额, 定义为几个字段:NetSales (净销售额),表示扣除了一切优惠折扣,数据类型为Number(12,3); CusSales, 表示产品目录价的销售额, 数据类型为 Number(12,3);
TitleCode, 表示级别, 如101表示全国一级代理, 202表示省二级代理,数据类型为
VarChar2(3)等。
3. 数据库的物理设计
物理设计主要考虑数据的存储方式, 使得系统有较好的性能。 对于记录庞大的事实表, 可以考虑分区存放。而记录很少的维表则可以集中存放于某一表空间, 甚至可以让其数据在首次读取时驻留在系统内存中, 以加快数据存取速度。索引的建立也在物理设计中完成, 索引是一把双刃剑,能提高读取速度, 也会使数据更新速度降低, 并占用大量磁盘空间。后面的案例分析中将谈到这点。独立磁盘阵列(RAID)方案的设计与数据更新网络的设计也需在此阶段完成。合适的RAID方案对最终系统的性能有很大的影响。
4. 源数据获取、清洗、整理及装载设计
数据仓库的数据总是来自前台作业系统、业务部门的计划数据、各类广告促销活动及其影响数据,以及购买回来的商业数据库。 这些数据并非照搬过来就行, 而是要按照前面提到的步骤, 以统一定义的格式从各个系统抽取出来, 经过清洗,再经过数据装载和整理程序进入数据仓库。
5. 数据表达及访问设计
数据按统一格式、不同的主题存放到数据仓库后,下一步要着手数据表达及访问。这主要考虑用户对信息的具体需求, 对应采用不同的方式。 比如, 使用Oracle数据库存放数据, 可以用PL/SQL编制报表, 也可以用Developer2000或Visual Basic编制报表, 当然也可以采用一些业界优秀的OLAP产品,例如Cognos公司的Transformer、PowerPlay Enterprise、Oracle公司的Express等。
6. 不间断的维护方案的设计
数据仓库的运作与传统的作业系统有很大区别, 它需要不间断地维护,否则它的性能将越来越差。
例如, 数据访问采用基于代价的优化(CBO),
事实表记录实施时有300万笔记录,一个月后记录数为3000万,当时的CBO根本无法得到现在的最优化存取路径。必须设计一个不间断的维护方案, 让系统保持优良的性能。
7. 编码、测试及实施
下面的工作就是编码、测试及实施了。最终的数据仓库系统结构大致如图1所示,依据不同的情况, 系统结构图也会有些差别。
=======================商业智能的概念===========================
商业智能是什么?简而言之,它是能够帮助用户对自身业务经营做出正确明智决定的工具。一般现代化的业务操作,通常都会产生大量的数据,如订单、库存、交易帐目、通话记录、及客户资料等。如何利用这些数据增进对业务情况的了解,帮助我们在业务管理及发展上作出及时、正确的判断,也就是说,怎样从业务数据中提取有用的信息,然后根据这些信息来采用明智的行动--这就是商业智能的课题。
目前,商业智能产品及解决方案大致可分为数据仓库产品、数据抽取产品、OLAP产品、展示产品、和集成以上几种产品的针对某个应用的整体解决方案等。
商业智能领域的技术应用:
商业智能的技术体系主要有数据仓库(DW)、在线分析处理(OLAP)以及数据挖掘(DM)三部分组成。
数据仓库是商业智能的基础,许多基本报表可以由此生成,但它更大的用处是作为进一步分析的数据源。所谓数据仓库(DW)就是面向主题的、集成的、稳定的、不同时间的数据集合,用以支持经营管理中的决策制定过程。多维分析和数据挖掘是最常听到的例子,数据仓库能供给它们所需要的、整齐一致的数据。
在线分析处理(OLAP)技术则帮助分析人员、管理人员从多种角度把从原始数据中转化出来、能够真正为用户所理解的、并真实反映数据维特性的信息,进行快速、一致、交互地访问,从而获得对数据的更深入了解的一类软件技术。
数据挖掘(DM)是一种决策支持过程,它主要基于AI、机器学习、统计学等技术,高度自动化地分析企业原有的数据,做出归纳性的推理,从中挖掘出潜在的模式,预测客户的行为,帮助企业的决策者调整市场策略,减少风险,做出正确的决策。
===================数据仓库常见名词浅释============================
Data Warehouse
本世纪80年代中期,"数据仓库之父"William 先生在其《建立数据仓库》一书中定义了数据仓库的概念,随后又给出了更为精确的定义:数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合。与其他数据库应用不同的是,数据仓库更像一种过程,对分布在企业内部各处的业务数据的整合、加工和分析的过程。而不是一种可以购买的产品。
Data mart
数据集市,或者叫做"小数据仓库"。如果说数据仓库是建立在企业级的数据模型之上的话。那么数据集市就是企业级数据仓库的一个子集,他主要面向部门级业务,并且只是面向某个特定的主题。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。
OLAP
联机分析处理(OLAP)的概念最早是由关系数据库之父于1993年提出的。当时,Codd认为联机事务处理(OLTP)已不能满足终端用户对数据库查询分析的需要,SQL对大数据库进行的简单查询也不能满足用户分析的需求。用户的决策分析需要对关系数据库进行大量计算才能得到结果,而查询的结果并不能满足决策者提出的需求。因此Codd提出了多维数据库和多维分析的概念,即OLAP。Codd提出OLAP的12条准则来描述OLAP系统:
准则1 OLAP模型必须提供多维概念视图
准则2 透明性准则
准则3 存取能力推测
准则4 稳定的报表能力
准则5 客户/服务器体系结构
准则6 维的等同性准则
准则7 动态的稀疏矩阵处理准则
准则8 多用户支持能力准则
准则9 非受限的跨维操作
准则10 直观的数据操纵
准则11 灵活的报表生成
准则12 不受限的维与聚集层次
ROLAP
基于Codd的12条准则,各个软件开发厂家见仁见智,其中一个流派,认为可以沿用关系型数据库来存储多维数据,于是,基于稀疏矩阵表示方法的星型结构(star schema)就出现了。后来又演化出雪花结构。为了与多维数据库相区别,则把基于关系型数据库的OLAP称为Relational
OLAP,简称ROLAP。代表产品有Informix Metacube、Microsoft SQL Server OLAP Services。
MOLAP
Arbor Software严格遵照Codd的定义,自行建立了多维数据库,来存放联机分析系统数据,开创了多维数据存储的先河,后来的很多家公司纷纷采用多维数据存储。被人们称为Muiltdimension OLAP,简称MOLAP,代表产品有Hyperion(原Arbor Software) Essbase、Showcase
Strategy等。
Client OLAP
相对于Server OLAP而言。部分分析工具厂家建议把部分数据下载到本地,为用户提供本地的多维分析。代表产品有Brio Designer,Business Object。
DSS
决策支持系统(Decision Support System),相当于基于数据仓库的应用。决策支持就是在收集所有有关数据和信息,经过加工整理,来为企业决策管理层提供信息,为决策者的决策提供依据。
ETL
数据抽取(Extract)、转换(Transform)、清洗(Cleansing)、装载(Load)的过程。构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。
Ad hoc query
即席查询,数据库应用最普遍的一种查询,利用数据仓库技术,可以让用户随时可以面对数据库,获取所希望的数据。
EIS
领导信息系统(Executive Information System),指为了满足无法专注于计算机技术的领导人员的信息查询需求,而特意制定的以简单的图形界面访问数据仓库的一种应用。
BPR
业务流程重整(Business Process Reengineering),指利用数据仓库技术,发现并纠正企业业务流程中的弊端的一项工作,数据仓库的重要作用之一。
BI
商业智能(Business Intelligence),指数据仓库相关技术与应用的通称。指利用各种智能技术,来提升企业的商业竞争力。
Data Mining
数据挖掘,Data Mining是一种决策支持过程,它主要基于AI、机器学习、统计学等技术,高度自动化地分析企业原有的数据,做出归纳性的推理,从中挖掘出潜在的模式,预测客户的行为,帮助企业的决策者调整市场策略,减少风险,做出正确的决策
CRM
客户关系管理(Customer Relationship Management),数据仓库是以数据库技术为基础但又与传统的数据库应用有着本质区别的新技术,CRM就是基于数据仓库技术的一种新应用。但是,从商业运作的角度来讲,CRM其实应该算是一个古老的"应用"了。比如,酒店对客人信息的管理,如果某个客人是某酒店的老主顾,那么该酒店很自然地会知道这位客人的某些习惯和喜好,如是否喜欢靠路边,是否吸烟,是否喜欢大床,喜欢什么样的早餐,等等。当客人再次光临时,不用客人自己提出来,酒店就会提供客人所喜欢的房间和服务。这就是一种CRM。
Meta Data
元数据,关于数据仓库的数据,指在数据仓库建设过程中所产生的有关数据源定义,目标定义,转换规则等相关的关键数据。同时元数据还包含关于数据含义的商业信息,所有这些信息都应当妥善保存,并很好地管理。为数据仓库的发展和使用提供方便。
=========================基本术语============================
维度是与业务相关的观察角度。粒度是指数据仓库的数据单位中保存数据的细化或综合程度的级别。对于产品维度来说,粒度就是1,就是产品类型本身。
粒度是用来描述维度的,比如,一个时间维的最细粒度是月,就说明这个时间的最低级的level是月,可能是年-季度-月,或者年-月等。
什么是粒度,顾名思义,就是取不同大小的对象。也就是说,将原来“粗粒度”的大对象分割为若干“细粒度”的小对象,或者把若干小对象合并成一个大的粗粒度对象,进行研究。粒度(granulation)
粒度是数据仓库的重要概念。粒度可以分为两种形式,第一种粒度是对数据仓库中的数据的综合程度高低的一个度量,它既影响数据仓库中的数据量的多少,也影响数据仓库所能回答询问的种类。在数据仓库中,多维粒度是必不可少的。由于数据仓库的主要作用是DSS分析,因而绝大多数查询都基于一定程度的综合数据之上的,只有极少数查询涉及到细节。所以应该将大粒度数据存储于快速设备如磁盘上,小粒度数据存于低速设备如磁带上。
什么是主题呢?首先,主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。面向主题的数据组织方式,就是在较高层次上对分析对象的数据的一个完整、一致的描述,能完整、统一地刻划各个分析对象所涉及的企业的各项数据,以及数据之间的联系。所谓较高层次是相对面向应用的数据组织方式而言的,是指按照主题进行数据组织的方式具有
更高的数据抽象级别。
OLAP的基本多维分析操作有钻取(roll up和drill down)、切片(slice)和切块(dice)、以及旋转(pivot)等。
钻取是改变维的层次,变换分析的粒度。它包括向上钻取和向下钻取。
roll up是在某一维上将低层次的细节数据概括到高层次的汇总数据;
而drill down则相反,它从汇总数据深入到细节数据进行观察.
切片和切块是在一部分维上选定值后,关心度量数据在剩余维上的分布。如果剩余的维只有两个,则是切片,否则是切块.
旋转是变换维的方向,即在表格中重新安排维的放置(例如行列互换).
=======================常见的OLAP操作===========================
1)上卷
又称上钻,通过一个维从低层次向较高的层次攀升,从而得到数据立方体的聚合数据。
如:在产品维度上,由产品向小类上卷,可得到小类的聚合数据;再由小类向大类上卷,可得到大类层次的聚合数据。
2)下钻
下钻是上卷的逆操作,它是由不太详细的数据到更详细的数据。如:沿着时间维度,从年到季度,再到月下钻,可以得到更加详细的数据。
3)切片和切块
切片操作在给定的数据多维模型的一个维度上进行选择,导致一个子方。比如:可以对时间维度按"时间=2002年1月"进行切片,得到一个含产品和门店两个纬度的片状图。
切块操作通过对两个维度或多个维度进行选择,定义子方。如:可按"时间=2002年1月"AND"城市=上海"进行切块。
4)旋转
旋转是一种目视操作,它转动数据的视角,提供数据的替代表示。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1707168023a1481270.html
评论列表(0条)