商业智能深入浅出——Cognos,Informatica技术与应用(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-23 10:47:24

点击下载

作者:王飞

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

商业智能深入浅出——Cognos,Informatica技术与应用

商业智能深入浅出——Cognos,Informatica技术与应用试读:

前言

谁需要阅读本书

如果您是一直关注商业智能领域发展变化的信息技术领域专业人员,或者是正在考虑涉足这个充满机会的商业智能领域,同时又迷失在浩如烟海的文献和书籍中不知所措,如果您希望得到一本简单明了,同时又是专门为信息技术领域专业人员量身定制的商业智能方面的书籍,那么这本书很适合你。

在内容上,本书几乎涵盖了商业智能的方方面面,同时又强调特定的重点,可以由浅入深,循序渐进地带您进入商业智能的世界。

本书可以为你做什么

本书内容全面详细,从中您可以学到商业智能领域各个方面的重要内容。书中涵盖了进入商业智能领域所需要的几乎所有的理论知识,但是本书并不推崇细节性的理论知识讲述,因为每一部分理论都可以写成一本书。本书主要是针对项目中所遇到的问题,商业智能项目开发的一般流程,尤其针对初学者如何能够很快进入到项目中,这本书对他们来说具有极高的参考价值,由于笔者是在电力行业工作,所以会适当列举一些电力行业的例子作为参考。本书涵盖的知识点很多,但是全书分成如下几个部分。理论篇:包括进入到商业智能领域之前的准备知识、商业智能简介、数据仓库的基本理论知识、商业智能ETL、商业智能OLAP报表分析等方面的理论知识。项目篇:包括如何应用商业智能,如何进行商业智能项目需求的定义,如何开发数据仓库系统,如何实现ETL数据抽取和OLAP多维分析等方面的内容。工具篇:详细介绍两大商业智能工具Cognos与Informatica的理论知识和使用方法。实践篇:包括Cognos报表的开发、部署和实践。本书附赠部分源代码和一些有价值的文档模板。

阅读背景

目前,很多公司引入了商业智能。商业智能已经不是单纯的、仅供科研和实验的概念了,它已经成为了企业信息化的重要的解决方案和技术手段。从零售企业到金融机构,从电力行业到环保产业,商业智能正在引起一场商业分析和战略决策的革命。预计,很快国内外超过半数的企业都会使用商业智能技术去开拓和抢占市场了。小时候曾经有一本书给我留下了深刻的印象,大概内容是教小学生如何写作文的,包括如何写议论文、记叙文、散文等。书中并没有很刻板地去阐述写作的步骤,而是通过主人公(小胖)的一个个小故事,把一些看似偶然,却又非常合理的情节,包括在公园、火车站、旅游景点等场景下,以对话的形式将写作的方法一一告诉读者,语言风趣幽默,主人公(小胖)的写作水平得到了长足的提高,同时身为读者的我们也有了相当大的收获,时隔几十年,仍然让我不能忘怀。本书的内容,虽然不能以故事情节或者对话的形式展现给大家,但是也尽量不用晦涩难懂的语言去解释概念,而是用简单易懂的例子去说明问题。本书以形象生动的语言,由浅入深地进行讲解,让初学者能够很快进入到商业智能的世界中,同时也可让专业人士轻松阅读。

在本书的编写中,王飞主要负责理论篇和项目篇,刘国峰主要负责工具篇和实践篇。作者

致谢

我要感谢帮助我完成这本书的所有人。

首先感谢丁诚老师的悉心指导,如果没有他,就没有本书的出版。同时感谢刘国峰对本书的重要贡献,他为本书的出版付出了自己的心血和努力。

感谢公司的同事们,他们都以各种方式为本书的编写做出了贡献,在这里特别感谢燕超源主任和李永红经理给予的支持和鼓励,同时感谢乔晅给予的技术支持和帮助。

最后,也是最重要的,我要感谢家庭给予我的不懈支持,如果没有母亲(张丽华)、父亲(王贵林),还有我的岳父(丁一贤)、岳母(赵桂荣),特别是我的妻子(丁玲玲),刚出生的女儿(王预萱)。他们给予了我最大的精神支持和帮助,如果没有他们,我很难想象能完成这本书。王飞

这本书的面世,得到了很多人的鼎力相助,请允许我在此逐一进行感谢。

写书的这个想法最初是王飞提出来的,同时在丁诚老师和刘博老师的鼎力相助下才有了这本书的面世。

这本书的执笔从2010年的秋季就已经开始了。我和合作者王飞的写作环境基本上是一样的,每天下班后晚上7点到家,双方的爱人同时都处于怀孕的初期,在她们的理解和鼓励下,我们每天坚持写作到凌晨1点,最后终于完成了本书的创作。所以非常感谢王飞的爱人和我的妻子,如果没有她们在背后的默默支持,我们不可能坚持完成这本书的写作。在此我谨代表我和王飞,感谢背后支持我们的家人和朋友,万分感谢!刘国峰

理论篇

第1章 商业智能简介

本章目标

什么是商业智能?什么样的企业需要商业智能?商业智能在这些企业里发挥了怎样的重要作用?或者说商业智能给我们的生活带来了哪些便利?下面先了解身边的几个应用商业智能的例子:

●大家知道,商业银行的网点非常多,每家网点的现金流每天都是不一样的,那么银行面临的问题就来了:怎么解决或者平衡各网点的现金流问题?

●大家都用过百度搜索引擎,在搜索关键字的时候,如果我们想搜“伊拉克战争”却打成了“伊拉克站争”,百度的显示结果页最前面会提示:您是不是要搜索“伊拉克战争”?

●某发电行业如何根据历史发电量、历史增长率和其他相关的因素去预测未来几年的用电需求?

●笔者前些日子连续两次在南方航空公司订票系统网站,购买大连和青岛到北京的往返机票,后来持续一年,每隔一周就能收到航空公司的关于三亚特价机票和酒店的邮件和短信提示。那么该订票系统如何根据个人的历史订票记录去预测未来哪些潜在客户会在什么时段内需要预订哪些票?针对以上问题,本章对商业智能做了概述性的介绍,重点讲解了商业智能在企业中的重要性和作用,并且预测了商业智能的发展趋势和实施商业智能的一般步骤,使读者对商业智能有一个初步认识。

学习本章后,您将掌握:

●商业智能的作用。

●商业智能的功能。

●商业智能的发展趋势。

●商业智能的实施方法和步骤。

●商业智能成功的关键。

●商业智能组织机构的特点。

1.1 商业智能介绍

1.1.1 商业智能在企业中的作用

曾经看过这样一个例子,美国某超市有一个系统:当你采购了一车的物品准备结账时,美丽的收银员小姐扫完了你的所有物品后,计算机会显示出一些信息,然后收银员小姐会友好地问你:“我们有一种一次性纸杯正在促销,位于**货架上,您要购买么?”结果你非常惊奇地说:“啊,谢谢你!我刚才一直没有找到纸杯。”那么计算机系统如何知道的?秘密在于当系统知道你的购物车里面有餐巾纸、大瓶可乐和沙拉的时候,则会计算出80%以上你要买一次性纸杯。这就是商业智能的一个简单应用。

当然,商业智能的作用绝不仅限于此,从小型的超市系统,到国家银行、航空、水利、电力、铁路运输等大型系统,商业智能的应用无处不在。如果我们对商业智能做一个简单的定义,那就是:帮助你把一些数据转化成具有商业价值的,而且可以获取的信息和知识,同时在最恰当的时候,通过某种方式把信息传递给需要的人。在上面的例子中,计算机系统把餐巾纸、大瓶可乐、沙拉等商品信息转化成具有商业价值的信息(知识),同时在恰当的时候把顾客需要一次性纸杯的信息告诉收银员,这就是商业智能的价值。数据可以转化成信息和知识,最后转化成利润,如图1-1所示。

很多企业经过多年的企业资源计划(Enterprise Resource Planning,ERP)系统的运行,已经坐拥了大量的经营数据,如何将这些宝贵的数据财富转化成一种信息、知识传达给企业管理者,这就是商业智能需要研究和完成的工作。商业智能好像一个采矿加工厂,如图1-2所示:它负责采集大量的矿石,然后经过进一步的分离,加工等操作,最后提炼出高纯度的精矿。图1-1 商业智能的价值图1-2 采矿加工图

企业的经营和销售数据就是这些未开采的矿石,而商业智能的作用就是将这些“矿石”转化成对企业非常有用的“精矿”。

商业智能对企业的重要性是不言而喻的。它可以提高企业的运营效率,增加企业的竞争力和领导者的决策能力,从而获得更大的市场,提高企业的利润。同时为公司管理层人员提供一种全新的思维方式,通过使用企业宝贵的数据财产,发现内部潜在的规律,这样才能作出准确的判断,制定出正确的决策方针,这样的企业在竞争中才能处于不败之地,同时也优化了企业内部的组织结构,增强了企业资源的合理配置。

1.1.2 商业智能的功能

商业智能最早出现在20世纪90年代,当时它的主要功能就是查询报表、数据分析、数据备份和恢复等。随着技术的发展和应用的扩展,商业智能已经拓展了其他功能。

1)数据读取功能:除了读取数据库中的数据外,还包括一些平面文件,例如Excel文件、csv文件等。

2)分析功能:通过业务之间的关联关系去分析、探查事物发生的概率,例如通过顾客采购的商品种类去分析顾客需要纸杯的概率。

3)红色报警功能:基于数据仓库提供报警功能,例如用绿色代表正常,红色代表超出了目标范围,提醒相关人员注意。

4)报表展示的功能:例如报表工具(Cognos、BO等)利用各种可视化的功能呈现给用户交叉报表、饼形图(见图1-3)、散点图、线图、柱形图(见图1-4),还可以通过向下钻取、数据切片和旋转以及交互式的图形分析能力,使用户能够从任何角度去观察业务。图1-3 饼形图图1-4 柱形图

1.2 商业智能的发展趋势

除了商业智能的一般功能,以及帮助企业的管理人员进行快速、准确的分析和决断外,还可以为客户提供各种个性化的服务。例如,通过客户的特征和购买的商品,可以进行有针对性的促销,不仅能为客户提供方便,帮助客户在最短的时间内购买到最需要的商品,同时也会给企业带来直接的经济效益。商业智能的发展也必然通过Web和局域网的交互,在有效的安全体制下,实现决策信息和知识的共享。

随着互联网的普及和发展,商业智能的发展也成了不可阻挡的趋势。企业可以通过互联网的广泛应用,收集到更多的客户信息和销售信息,通过商业智能技术的应用,将这些数据转化成更多有价值的信息,帮助企业的决策层作出更准确的分析和判断。

中国是目前经济发展最快的新型超级大国,国内外很多经济学家都预测中国有潜力成为和美国相媲美的经济超级大国和世界经济中心。为了实现这个目标,中国很多制造、能源企业必将大力发展商业智能技术,加大对商业智能解决方案的投入,从而降低生产成本,提高资源利用率和市场占有率,使其生产运营能够健康平稳地发展。随着企业信息化整体水平的提高,很多大型的ERP公司将商业智能的理念嵌入到自身的系统软件当中,这也必然会推动商业智能的快速发展。

1.3 商业智能的实施方法和步骤

了解了商业智能的作用和功能之后,现在开始讲解商业智能的实施方法和步骤。当然这些实施方法和步骤会在后续内容中有详细的介绍,在这里读者只要大致了解其框架结构即可,不必深究。

1.3.1 商业智能的实施方法

1)项目规划:主要包括项目前期的准备,业务现状的调研,目前系统的现状分析。分析内容包括业务需求的定义和系统实现的目标,系统运行环境的定义,系统的框架结构定义,逻辑模型的设计等。

2)系统设计与实现:主要包括系统体系结构的设计,物理数据库的设计,数据抽取、转换和加载的实现,前端应用的开发,元数据的管理等内容。

3)系统调优:指逻辑、物理模型的调整,系统性能的调优。

4)系统运行维护:指编写系统运行维护手册和用户操作手册,培训教材等文档。

商业智能项目的实施方法如图1-5所示。图1-5 商业智能项目的实施方法

1.3.2 商业智能的实施步骤

(1)定义需求

需求分析是商业智能项目最重要的一步,需要描述项目背景与目的、业务范围、业务目标、业务需求和功能需求等内容,明确企业对商业智能的期望和需要分析哪些主题等方面。

其中项目背景主要描述已有系统的当前现状,包括不同的历史时期,它的业务需求分别是什么。这些独立的信息系统的特点一般是缺乏统一的整体规划和标准,数据分散,每个业务之间不能共享信息,报表展示功能单一,各业务系统之间存在数据不一致的现象,企业领导层无法从全局的角度对业务进行综合分析等。

商业智能项目最重要的目的就是解决各个业务系统之间数据集中整合的问题,避免数据不一致的现象,为企业管理人员提供高效的数据查询和强大的报表展示功能,能够进行多维度的深入分析和数据挖掘,对企业未来的经营状况作出准确的预测。

业务范围是指项目团队所有人员工作范围的界定。

业务目标是根据调研的结果,对业务需求和功能需求的整体和粗略的概述。

业务需求用于描述客户对系统实现的总体性要求。商业智能项目的特点是从不同的维度去分析各个主题,以报表的形式对业务进行阐述。

功能需求可以包含各个业务专题分析、关键性指标查询和监控、报表查询、高级分析和数据挖掘等内容。

商业智能的功能框架如图1-6所示。图1-6 商业智能的功能框架(2)数据仓库模型的建设

模型是对现实世界的抽象。数据仓库模型是在需求分析的基础上建立起来的。数据模型的设计流程是:在系统设计开发之前,业务人员和设计人员共同参与概念模型的设计,核心的业务概念在业务人员和设计人员之间达成一致;在系统设计开发时,业务人员和设计人员共同参与逻辑模型的设计;最后设计人员以逻辑模型为基础进行物理模型的设计。数据模型的建设将在后续章节中重点介绍。模型的设计流程如图1-7所示。图1-7 模型的设计流程(3)数据抽取、清洗、转换、加载(ETL)

抽取主要负责将数据仓库需要的数据从各个业务系统中抽取出来。如果每个业务系统的数据情况各不相同,可能对每个数据源都需要建立独立的抽取流程。每个数据抽取流程都需要使用接口将源数据传送给下一阶段的清洗与转换阶段。通过数据抽取程序,可以从业务源系统中不断地将数据抽取出来,抽取周期可以设定为某个固定时间,例如每天中午12点对源数据进行抽取,也可以设定为某个时间间隔,例如每6个小时抽取一次源数据。

清洗阶段是对业务源数据的清洗和确认,检查抽取的源数据质量是否达到数据仓库的规定标准。数据清洗大致有两种方式。一是不同业务系统间各自专用的清洗程序;二是不同业务系统间有满足数据仓库清洗需求的通用程序。从不同业务系统抽取的数据有可能存在数据不一致的情况,可以使用相关规则和标准检查业务源数据的质量。

转换是对源系统的数据做最后一步的修改,包括对源数据的聚合以及各种计算,是整个ETL过程的核心部分。

加载是将数据加载到最后的目标表中,其复杂度没有转换高,一般采用批量装载的形式。ETL过程如图1-8所示。图1-8 ETL过程

数据抽取、清洗、转换、加载的相关内容会在后续章节中进行详细的介绍。(4)建立商业智能分析报表

商业智能分析报表通过对数据仓库的数据分析,使企业的高层领导可以从多个角度查看企业的运营情况,并且按照不同的方式去探查企业内部的核心数据,从而更好地帮助企业决策人员对公司未来经营状况进行预测和判断。商业智能实施步骤如图1-9所示。图1-9 商业智能实施步骤

1.4 商业智能项目成功的关键

1)企业高级领导层对商业智能项目的支持和雄厚的资金是项目成功的关键。

2)拥有实力雄厚的技术团队。他们不仅精通商业智能相关技术,同时也熟悉相关的业务规则和开发流程。

3)商业智能项目团队的协同合作能力。项目的管理者需要保证团队中每个人员的分工明确,沟通及时,并且需要各部门之间有良好的合作能力。总之,商业智能项目的实施是一个长期的不断完善的过程。

1.5 商业智能项目的组织机构

(1)商业智能项目甲方组织机构

一般来说,甲方组织机构应该包括以下成员:项目经理、业务负责人、业务系统负责人、业务部门代表、业务系统开发商代表、软硬件平台供应商,如图1-10所示。图1-10 甲方组织机构(2)商业智能项目乙方开发商组织机构

商业智能项目乙方开发商组织机构应该包括以下成员:项目经理、需求定义人员(包括需求调研人员和需求分析人员)、设计人员(包括架构设计人员、模型设计人员、ETL设计人员、报表设计人员)、开发人员(包括ETL数据抽取开发人员、报表开发人员)、测试人员、部署实施人员,如图1-11所示。图1-11 乙方开发组织机构

1.6 本章小结

1)商业智能对企业的重要性是不言而喻的,它可以提高企业的运营效率,增加企业的竞争力和领导者的决策能力,从而获得更大的市场,提高企业的利润。

2)随着商业智能的发展,除了基本的功能外,还扩展了读取数据的功能、分析功能和报表展示的功能。

3)商业智能拓展的功能。

●数据读取功能:除了读取数据库中的数据外,还包括一些平面文件。

●分析功能:通过业务之间的关联关系去分析、探查事物发生的概率。

●红色报警功能:基于数据仓库提供报警功能。

●报表展示的功能:例如报表工具(Cognos、BO等)利用各种可视化的功能呈现给用户交叉报表、饼图、散点图、线图、直方图,还可以通过向下钻取、数据切片和旋转以及交互式的图形分析能力,使用户能够从任何角度去观察业务。

4)随着互联网的发展,商业智能的应用越来越广泛,政府机构和企业必将加大对商业智能的投资。

5)商业智能的实施方法包括:定义需求,数据仓库模型的建设,数据抽取、清洗、转化、加载,建立商业智能的分析报表。

6)数据仓库是商业智能的基础平台,是商业智能的核心。

7)ETL是数据抽取(Extract)、转换(Transform)、加载(Load)的简写,贯穿于整个项目,关系到整个项目的数据质量,所以必须摆放到十分重要的位置上。

8)一般来说,甲方组织机构应该包括以下成员:项目经理、业务负责人、业务系统负责人、业务部门代表、业务系统开发商代表、软硬件平台供应商。

9)商业智能项目乙方开发商组织机构应该包括以下成员:项目经理、需求定义人员(包括需求调研人员和需求分析人员)、设计人员(包括架构设计人员、模型设计人员、ETL设计人员、报表设计人员)、开发人员(包括ETL数据抽取开发人员、报表开发人员)、测试人员、部署实施人员。

第2章 学习商业智能之前的准备知识

本章目标

第1章对商业智能做了概述性的介绍,读者对商业智能已经有了大致的了解。本章则重点介绍学习商业智能需要的背景知识,包括Oracle数据库基础知识,数据建模理论知识等内容,为后续的商业智能深入学习打下坚实的基础。

学习本章后,您将掌握:

●Oracle体系结构。

●Oracle的优化知识。

●数据建模的理论知识。

●数据建模的流程。

2.1 Oracle体系结构介绍

Oracle数据库的背景知识是学习商业智能的基础。Oracle数据库是Oracle(中文名为甲骨文)公司的产品。Oracle数据库从推出到现在只有短短的几十年,却几乎占有了当今世界数据库产品里50%的市场份额。Oracle的历史在本书中不作讲解。下面从Oracle的体系结构入手进行简单的介绍。

1.数据库的定义

一系列的物理文件和对应的逻辑结构称为数据库。其中物理文件包括数据文件、日志文件、控制文件、参数文件等。逻辑结构包括表空间、段、区段、块。(1)物理存储结构

数据文件:物理存储数据库的文件。每一个数据文件只能对应一个数据库,主要包括数据表、索引和其他的段。

日志文件:记录对数据库的修改信息,以备恢复数据时使用。具体操作是每一个数据库至少包含两个日志文件组,日志文件组以循环的方式进行读写操作,每一个日志文件对应一个物理文件。

控制文件:一个较小的二进制文件,用于描述数据库的结构。这个文件会告诉用户数据文件、临时文件、重做日志文件的位置,还包括一些描述性的信息:例如数据库建立的时间、数据库的名称、恢复数据库时所需要的各种同步信息等内容。

参数文件:内容包括确定内存结构的大小、设置数据库的默认值、设置数据库的范围、设置数据库的各种属性、优化数据库的性能等内容。这些参数文件同样会告诉Oracle实例在什么位置可以找到控制文件等。

数据库的物理存储结构如图2-1所示。图2-1 数据库的物理存储结构(2)逻辑结构

块:Oracle管理存储空间最基本的单元,也是最小的逻辑存储单元。

区段:比块高一级的逻辑存储结构。区段由一系列块组成。

段:由多个区段组成,区段可以是连续的,也可以是不连续的。

表空间:最高级别的逻辑存储结构。数据库就是由若干个表空间组成的。

Oracle逻辑结构如图2-2所示。图2-2 Oracle逻辑结构

2.数据库实例

Oracle实例由内存和一系列后台进程组成。Oracle实例是存储和控制数据库的软件机制。Oracle数据库实例框架结构如图2-3所示。图2-3 Oracle数据库实例框架结构(1)后台进程

后台进程的主要功能是为所有的数据库用户异步完成各种操作任务,从而保证数据库的实际运行任务正常进行。(2)内存结构

内存结构主要包括系统全局区(SGA)、进程全局区(PGA)、用户全局区(UGA)。

1)SGA主要由3部分构成:共享池、数据缓冲区、日志缓冲区。

共享池:由共享SQL区和数据字典区组成,参数shared_pool_size确定共享池的大小。

数据缓冲区:用于存储从数据文件中读取的数据备份和临时存储数据库块的地方。

日志缓冲区:以记录项的形式备份到数据缓冲区中被修改的缓冲块里,这些记录被写到日志文件中,从而可以加速数据库的操作。

2)PGA主要存储服务器进程或后台进程的基本信息。

3)UGA主要存储服务器会话的基本信息。

2.2 Oracle优化理论

由于数据仓库系统存储大量的历史数据和当前数据,并且数据量在不断增加,为了提高数据存储、检索的运行效率,建立一个优良的数据仓库系统,数据仓库设计人员和开发人员需要掌握Oracle优化理论方面的知识,这有助于设计、开发出高性能的数据仓库系统。

2.2.1 外部优化原则

CPU是直接影响数据库性能的外部因素,同时Oracle的内存大小也会影响SQL查询的效率,大量的Net8通信同样会使SQL的性能变差。

下面介绍外部优化原则的具体调整方法。

1)适当增加服务器CPU的数量,服务器的性能会受CPU的限制,最好的方法就是为服务器增加额外的CPU,或者关闭很多等待处理资源的各种组件,以减少CPU资源的浪费。

2)当内存分页时,如果内存容量不足,最好的方法就是增加更多的内存,减小SGA的大小,或者关闭Oracle多线程服务器,以提高数据库系统的运行效率。

2.2.2 SQL优化基本规则

1)在对大表进行全表搜索时,为了避免不必要的全表搜索而导致的大量I/O操作,最常见的调优方法是适量增加索引,加快查询的速度,以提高数据库运行的效率。

2)保证最优的索引使用,对于改善查询的速度和提高数据库的性能是至关重要的。在某些情况下也可以选择多个索引进行查询,还包括位图索引和基于函数索引的使用。

2.2.3 SQL使用规范

1)尽量避免使用游标。因为游标的效率较差,如果游标操作的数据超过1万行,那么就应该采用其他的方法;如果使用了游标,还要尽量避免在游标循环中再进行表连接的操作。

2)不要在where子句中的“=”左边进行函数、算术运算或其他表达式运算,否则数据库系统可能无法正常使用索引。

3)尽量使用exists代替select count(*)语句来判断表中是否存在满足条件的记录。count函数只有统计表中所有行数时才使用,而且count(1)或count('X')比count(*)更有效率。

4)注意表之间关联字段的数据类型,避免使用不同类型的字段作为关联条件进行多表连接。

2.2.4 索引使用规范

1)索引的创建要与实际应用情况结合考虑,建议大的联机事务处理系统(OLTP)表最好不要超过6个索引,以免系统增加不必要的负担。

2)尽可能使用索引字段作为查询条件,以提高查询效率。

3)尽量避免在大表查询时使用全表扫描的方式,必要时可以考虑新建索引。

4)注意索引的定期维护,可以周期性地重建索引和重新编译存储过程。

例如使用:

语句查询出当前用户下所有的索引重建语句,然后在SQL窗口下一条执行该重建索引语句。

2.2.5 临时表使用规范

1)尽量避免在临时表中使用distinct、order by、group by、having、join,因为这些语句会加重临时表的负担。同时也尽量避免临时表的频繁创建和删除,以减少系统表资源的消耗。

2)在新建临时表时,如果一次性插入数据量非常大,那么可以使用select into语句替代create table语句,避免对日志的大量操作,可以缩短运行的时间;如果数据量并不大,为了缓和系统表的资源消耗,建议先创建临时表,然后再进行插入操作。

3)如果临时表的数据量较大,则需要为临时表建立相应的索引,同时保证数据库系统对该临时表索引的使用。

4)如果存储过程中使用了临时表,在代码的结尾处,一定要将所有的临时表都删除,通常的做法是先执行truncate table语句,然后再执行drop table语句,这样就可以避免数据库系统较长时间锁定临时表与其他表的连接查询和关联,从而减轻数据库系统的负担。

2.2.6 索引创建原则

索引创建原则如图2-4所示。图2-4 索引创建原则

1)先插入数据,再进行索引的创建工作。

2)限制每个表的索引数量,避免大量的索引导致数据库系统的性能降低。

3)为每个索引指定表空间,这样有利于避免发生I/O冲突。

4)定期重建索引,以减少索引的碎片,提高数据库系统的性能。一般来说,枚举类型的字段可以考虑使用位图索引,而非二叉树类索引。

2.2.7 大数据量表的维护原则

1)如果是超大数据量的表,并且经常进行增加、删除、修改、查询等操作,最好的办法就是定期收集统计信息传递给Oracle优化器,以提高数据库系统的性能。

2)如果是大数据量的表,可以考虑使用按照时间或者哈希的分区技术,并且将不同的分区放入到规定的表空间中,以提高数据库表查询的效率。

2.2.8 视图创建原则

1)绝对禁止在视图的基础上再创建视图,这样会严重影响数据库的性能。

2)推荐使用物化视图技术,以提高数据库表查询的效率,但是物化视图刷新的频率不能过高,因为这样也会影响整个数据库系统的性能。

3)为保证数据的一致性和安全性,推荐将普通视图设置成只读类型,不能做任何删除操作。

2.2.9 代码程序中使用索引的原则

1)尽量少用in操作符。使用exists替代in操作符,使查询的子表能够使用索引,提高数据库表查询的效率。

2)在where条件的后面尽量不用<>或!=。例如,条件count<>0可以修改成count>0 or count<0,这样可以发挥索引的作用,提高数据库表查询的效率。

3)like语句尽量不要使用通配符“%”或者“_”作为查询条件的第一个字符。例如,count like'%100%',这个条件会对数据库表进行全表扫描,严重影响了数据库表查询的性能,可以修改成count like '2100%' or count like '3100%',这样count字段会利用该字段上的索引进行不同范围的查询,大大提高了数据库表的查询效率。

4)因为运算的字段不能进行任何索引,所以where子句应该尽量避免在索引字段上做任何计算。例如,substr(count,1,3)='100'可以修改成count like'100%'。

5)在where条件的后面,一般将表连接语句写在最前面,将可以滤掉大量记录的条件写在最后。因为Oracle进行多表查询时,是从后往前执行SQL代码的。

2.2.10 代码程序中的一些建议

1)尽量不使用select*语句,最好的办法是将要查询的字段全部列出,以提高SQL运行的效率。因为Oracle在解析的过程中,会将“*”依次转换成所有的列名,这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间和数据库资源。

2)尽量多使用execute immediate语句,可以提高SQL执行的效率。

3)在使用游标时,如果将大量的数据集合赋给游标,运行时一般会出现内存溢出的报错信息。这时需要调整缓冲区的大小,所以使用游标时要注意内存大小的问题。

4)对于超大数据量的表应该每隔一段时间执行一次收集统计信息的操作。例如,执行dbms_stats.gather_table_stats命令,将统计信息传递给Oracle优化器,以提高数据库系统的性能。

5)面向对象的最佳实践方法是为每个属性都定义一个get方法,但是不能把面向对象的实现方法应用于关系型数据库中。关系型数据库中的表不能等同于面向对象中的类,表中的字段同样不能等同于类的属性,如图2-5所示。因此查询数据库表中的字段时,应该一次性全部取出。图2-5 面向对象和关系型数据库的关系

6)谨慎使用自定义的函数。自定义函数通常会影响优化器对查询的优化作用。

7)检查满足某个条件的记录是否存在,绝对不要使用select count(*)语句去判断,可以考虑使用merge语句判断该记录是否存在。

总之,编写SQL代码程序的基本原则是尽可能减少数据库的连接,尽量减少表之间的关联(在表的设计过程中可以将第三范式的表转化成第二范式),少用临时表,避免将大批量的数据分割成小块的数据去处理。

此外,建议在表设计过程中尽量避免使用BLOB、CLOB等大字段,因为这样做可能会对数据库的迁移备份等造成不必要的麻烦。

2.3 数据库建模理论知识

2.3.1 数据库的数据模型

数据建模是指采用实体-关系的方法,用图形化的形式去描述业务规则的过程。数据建模主要关注的是企业的信息需求和各种业务活动。主要包括概念模型设计、逻辑模型设计和物理模型设计,数据模型最终要转化成数据库存储的物理表。数据模型是指用实体、实体的属性、实体之间的关系对企业在运营活动中涉及的所有业务概念和业务活动进行统一的定义和描述。数据模型是业务人员和技术开发人员之间沟通的平台。

1)概念模型是一种高层次的数据模型。它定义了主要的业务概念及其关系,通过对业务需求和调研访谈内容的分析,对业务模型进行初步的归纳和提炼。概念模型的主题域主要反映了企业活动中某方面的业务概念和内容,一般由同一类别的或者关系较为紧密的主题组成。主题是通过分析业务的需求,业务活动的流程和各种活动得到的。主题根据实际的业务需求可以进一步细化成更小的主题或者实体,而实体是概念模型的最小单元,是不可再分的。主题域、主题、实体以及它们之间的关系组成了整个概念模型的基础架构,如图2-6所示。

例如:人员基本信息主题域由人员职位信息、人员社会关系信息、人员教育背景信息、人员通信地址信息、人员社会保险信息等主题或实体组成。

主题域、主题和实体之间的关系如图2-7所示。图2-6 概念模型的基础架构图2-7 主题域、主题和实体之间的关系

2)逻辑模型是对概念模型的进一步分解和细化,描述了实体、属性以及实体之间的关系,一般采用第三范式。模型中的主要元素为主题、实体、属性、关系。所谓主题,是指与业务相关的数据主要类别;实体通常定义为一个概念、一件事或者一个人,是唯一的;属性用来描述实体的特性,处于最低层次;关系用来描述实体之间的业务规则。例如:客户实体包括客户姓名、地址、出生日期等属性,客户姓名可以是字符类型,长度是20。逻辑模型的作用主要有两点。一是便于技术开发人员和业务人员或者用户进行沟通交流,进一步明确需求。二是作为物理模型设计的基础,保证物理模型充分满足用户的需求。

3)物理模型在逻辑模型的基础上描述模型实体的细节,包括选择什么样的数据库平台,数据库产品所对应的数据类型、长度、索引等因素,为逻辑模型选择一个最优的物理存储环境。逻辑模型转化成物理模型的过程也就是实体名转化成表名,属性名转化成物理表列名的过程。在设计物理模型时,还需要考虑数据存储空间的分配,包括对列的属性必须作出明确的定义。例如:客户姓名的数据类型是Varchar2,长度是20,存储在Oracle数据库中,并且建立索引用于提高该字段的查询效率。

数据库模型的设计一般是从现实世界到概念模型、逻辑模型、物理模型到最后数据仓库设计的完成,如图2-8所示。其中概念模型主要关注业务相关的核心问题和核心概念,逻辑模型主要关注业务细节信息,而物理模型则偏重于数据存储方面的技术细节。数据模型之间的关系如图2-9所示。图2-8 数据库模型的设计流程图2-9 数据模型之间的关系

2.3.2 数据库建模的一般流程

数据建模的一般流程如下:

1)数据建模人员邀请业务人员进行“头脑风暴”,开发一系列可能的主题域,然后检查所有的主题域列表,精益求精。

2)建立主题域之间的关系,用建模工具画出最终的主题域关系图。

3)在已经确定的主题域内,通过项目组讨论,以“头脑风暴”的方式分析所有可能的主题和实体,并且建立标示符,确定实体和实体之间的关系,为实体加入属性,其中实体应该有一个唯一的名字,最后确定模型的结构和内容。逻辑模型的设计表达了企业的信息需求。

4)在逻辑模型设计完成之后,技术人员再根据所选数据库产品的特点及其他外界因素,基于逻辑模型按照实现技术进行物理模型的设计。物理模型需要满足逻辑模型的基本需求,并且对性能进行优化。物理模型设计的最终目的就是将逻辑模型表达的信息需求转化为数据库中的物理表。

数据建模的一般步骤如图2-10所示。图2-10 数据建模的一般步骤

数据建模流程如图2-11所示。图2-11 数据建模流程

2.4 本章小结

1)数据库的定义:一系列的物理文件和对应的逻辑结构被称为数据库。

2)Oracle框架体系结构。

●物理结构:数据文件、日志文件、控制文件、参数文件。

●系统全局区(SGA):共享池、数据缓冲区、日志缓冲区。

●进程:用户进程、服务器进程、后台进程。

3)Oracle逻辑结构包括:表空间、段、区段、块。其中块是最小的逻辑存储单元,表空间是最高级别的逻辑存储结构。

4)Oracle优化理论。

●外部优化包括增加CPU的个数和内存的大小去调整Oracle的性能。

●内部优化包括SQL优化的基本规则、SQL使用的基本规范、索引和临时表的使用规范、索引和视图的创建原则和代码程序中的规范等。因为商业智能数据仓库的数据量一般来说非常巨大,所以进行必要的数据库优化是非常重要的,甚至能决定项目的成败。

5)索引创建原则。

●先插入数据,再进行索引的创建工作。

●限制每个表的索引数量,避免大量的索引导致数据库系统的性能降低。

●为每个索引指定表空间,这样有利于避免发生I/O冲突。

●定期重建索引,以减少索引的碎片,提高数据库系统的性能。一般来说,枚举类型的字段可以考虑使用位图索引,而非二叉树类索引。

6)关系型数据库中的表不能等同于面向对象中的类,表中的字段同样不能等同于类的属性。

7)数据建模是指采用实体-关系的方法,用图形化的形式去描述业务规则的过程。数据建模主要关注的是企业的信息需求和各种业务活动。主要包括概念模型设计、逻辑模型设计和物理模型设计,数据模型最终要转化成数据库存储的物理表。

8)数据库模型的设计一般是从现实世界到概念模型、逻辑模型、物理模型到最后数据仓库设计的完成。

9)概念模型主要关注业务相关的核心问题和核心概念,逻辑模型主要关注业务细节信息,而物理模型则偏重于数据存储方面的技术细节。

10)数据模型是数据仓库项目中最关键的技术环节,直接影响项目的成败。在建模过程中不仅需要考虑当前的需求,更要为未来需求的扩展提供接口,从而满足数据仓库系统对新需求的适应能力。

11)数据建模的一般步骤是:头脑风暴,列出所有可能的主题域;开会讨论,列出最终的主题域;列出主题和实体,确定模型的结构;最后是物理表的设计。

12)数据建模的流程是:概念模型的设计、逻辑模型的设计、物理模型的设计。

第3章 商业智能数据仓库的理论知识

本章目标

通过前两章的学习,读者已经大致了解了商业智能的概念和学习商业智能所需要的前期准备知识。从本章开始正式学习在商业智能中占有重要地位的数据仓库理论方面的知识,使读者了解数据仓库的特点、设计方法和实施的方法论等。

学习本章后,您将掌握:

●数据仓库的定义。

●数据仓库的特点。

●数据仓库的使用和维护。

●数据仓库的组成部分。

●数据仓库的模型设计。

●数据集市的概念。

●数据集市和数据仓库之间的关系。

●数据仓库项目开发的一般流程。

●ODS统一信息视图区的含义。

3.1 数据仓库的定义

数据仓库是一个面向主题的、集成的、稳定的、反映历史变化的、随着时间的流逝发生变化的数据集合。它主要用来支持企业管理人员的决策分析。

数据仓库中面向主题的特性是根据业务的不同而进行的内容划分。数据仓库的集成特性是因为不同的业务源数据具有不同的数据特点,当业务源数据进入到数据仓库时,需要采用统一的编码格式进行数据加载,从而保证数据仓库中数据的唯一性。数据仓库的非易失性是指数据仓库通常保存数据不同历史时期的各种状态,并不对数据进行任何更新操作。数据仓库的历史特性是指数据保留时间戳字段,记录每个数据在不同时间点内的各种状态。

笔者认为:数据仓库是计算机应用发展的必然产物。它收集了企业相关内部和外部各个业务系统的数据源、归档文件等一系列历史数据,最后转化成企业需要的战略决策信息。数据仓库技术是企业应对市场激烈的竞争、扩大市场份额,提高企业利润的最佳方案之一。

3.2 数据仓库的特点

3.1 节归纳了数据仓库的特点:

●面向主题的。

●集成的。

●稳定性。

●反映历史变化。

数据仓库的特点如图3-1所示。图3-1 数据仓库的特点

下面将分别介绍数据仓库的这些特点。

3.2.1 面向主题

普通的操作型数据库主要是面向事务性处理,而数据仓库中的所有数据一般按照主题进行划分。主题是对业务数据的一种抽象,是从较高层次上对信息系统中的数据进行的归纳和整理。面向主题的数据组织可以分成两部分:根据原系统业务数据的特点进行主题的抽取和确定每个主题所包含的数据内容,例如典型的主题包括:客户主题、产品主题、财务主题等,而客户主题包括:客户基本信息、客户信用信息、客户资产信息等内容。在分析数据仓库主题的时候,一般的方法是先确定几个基本的主题,然后再将范围扩大,最后再逐步求精,如图3-2所示。图3-2 面向主题的方法

3.2.2 集成性

面向操作型的数据库通常是异构的、并且相互独立,所以无法对信息进行概括和反映信息的本质。而数据仓库中的数据是经过源数据的抽取、清洗、转换、加载得到的,所以为了保证数据不存在二义性,必须对源数据进行编码的统一和必要的汇总,以保证数据仓库内数据的一致性。数据仓库在经历数据集成阶段后,使数据仓库中的数据都遵循统一的编码规则,并且消除许多冗余数据。

集成一般有如下两种形式:(1)数据的集成

当数据从操作型数据传向数据仓库时,数据就会被集成,如图3-3所示。图3-3 数据的集成(2)编码的集成

当数据仓库是从原有分散的源数据库抽取出来的时候,为了消除编码的不一致性,需要将这些来自不同数据源的数据编码集成起来,使之遵循统一的编码规则,如图3-4所示。图3-4 编码的集成

3.2.3 稳定性

数据仓库中的数据反映的都是一段历史时期的数据内容,它的主要操作是查询、分析而不进行一般意义上的更新,一旦某个数据进入到数据仓库后,一般情况下数据会被长期保留,当超过规定的期限时才会被删除。通常数据仓库需要做的工作就是加载、查询和分析,一般不进行任何修改操作,是为了企业高层人员决策分析之用,如图3-5所示。图3-5 数据的加载

3.2.4 反映历史变化

操作型数据库主要反映某一时间段内的数据,而数据仓库的目标就是对企业的发展趋势作出分析和预测。数据仓库不断从OLTP数据库中获得变化的数据,从而形成分析和预测需要的历史数据,所以一般数据仓库中数据表的键码都含有时间键,以标明数据的历史时期信息,然后不断增加新的数据内容。通常来说,数据仓库包含的时间期限大概是5~10年,当超出规定的期限时,需要删除这些过时的数据。通过这些历史信息可以对企业的发展历程和趋势作出分析和预测。同时要清楚,数据仓库的建设需要大量的业务数据作为积累,并将这些宝贵的历史信息经过加工、整理,最后提供给决策分析人员,这是数据仓库建设的根本目的,如图3-6所示。图3-6 操作型数据库和数据仓库的区别

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载