1996年, Inmon 在他的专著《Building the Data Warehouse》中, 对数据仓库做了如下定义,即“面向主题的、完整的、非易失的、不同时间的、用于支持决策的数据集合”。这和传统的OLTP系统有很大的区别,它属在线分析 (OLAP)系统的范畴。面向主题的,指的是它将依据一定的主题,比如经销商、产品、定单等汇总各个OLTP系统的数据。完整的, 指的是要求对各个系统数据表示进行转换,用统一编码表示,比如,A系统用001表示退货, 而B系统用999表示退货,在数据仓库中必须统一成一个编码。 非易失的, 指的是系统用户只读数据,不得修改数据。 数据仓库完整地记录了各个历史时期的数据,而OLTP系统不会保留全部的历史记录。OLTP系统也难以支持决策查询,例如从几千万笔记录中获取不同区域的 汇总报表。
完整的数据仓库应包括:
1.数据源-> 2.ETL -> 3.数据仓库存储 -> 4.OLAP -> 5.BI工具
现实中可以实现的方案有:
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 H.Inmon先生在其《建立数据仓库》一书中定义了数据仓库的概念,随后又给出了更为精确的定义:数据仓库是在企业管理和决策中面向主题的、集成的、与 时间相关的、不可修改的数据集合。与其他数据库应用不同的是,数据仓库更像一种过程,对分布在企业内部各处的业务数据的整合、加工和分析的过程。而不是一 种可以购买的产品。
Data mart
数据集市,或者叫做"小数据仓库"。如果说数据仓库是建立在企业级的数据模型之上的话。那么数据集市就是企业级数据仓库的一个子集,他主要面向部门级业务,并且只是面向某个特定的主题。数据集市可以在一定程度上缓解访问数据仓库的瓶颈。
OLAP
联机分析处理(OLAP)的概念最早是由关系数据库之父E.F.Codd于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)旋转
旋转是一种目视操作,它转动数据的视角,提供数据的替代表示。