一、 数据仓库设计概况
数据仓库的作用在于从企业的应用系统中获取信息并转换到一个新的数据库,通过对新库中的历史信息和面向主题的信息进行分析,为领导层决策提供支持。数据仓库的设计不同于传统的数据库设计,数据库是为捕获数据而设计,数据仓库是为分析数据而设计,它的两个基本的元素是维表和事实表。维是看问题的角度,比如时间,部门,维表放的就是这些东西的定义,事实表里放着要查询的数据,同时有维的ID。要成功地建立一个数据仓库,必须有一个合理的数据模型,PowerDesigner就是这样一种企业建模工具,它能帮助用户构建成功的数据仓库。本文首先对简要介绍了Sybase PowerDesigner和Sybase IQ这两个产品,接着重点分析了如何利用PowerDesigner来加速IQ数据仓库的设计与实现,最后是一个总结。
二、 Sybase PowerDesigner 与 Sybase IQ 简介
PowerDesigner 是一款优秀的企业建模工具,它强大的数据建模功能在业界始终处于领先的地位,同时它还是优秀数据仓库模型设计工具。PowerDesigner在数据仓库设计工具市场中占有很大份额。它能从已有的数据库进行反向工程,从运行系统中将现存的数据结构抽取出来形成数据模型,使数据仓库的设计变得简单。 PowerDesigner 15是其最新版本,它全面支持IQ的数据建模。使用PowerDesigner 和模型驱动的方式开发数据仓库及应用可以极大的加速开发速度,提高生产率、减少IQ数据仓库设计和实现过程中的错误。
Sybase IQ是一个专门面向数据仓库环境的关系型数据库。Sybase IQ与传统的关系型数据库最关键的不同之处就是,它是专门为高性能的分析型进程设计的。该性能通过存储数据的方式——列存储,而不是传统关系型数据库中的行存储而获得。IQ中的关键技术是纵向数据存储(通过列而不是通过行来进行)、Bit-Wise查询索引、数据压缩和Multiplex技术。使数据仓库应用拥有卓越的查询性能与最低的总拥有成本。与传统数据库不同,Sybase IQ 在体系结构设计上是面向分析的-而不是面向事务的-它具有基于列的结构以及获得专利的索引技术,这都使它成为数据仓储的首选 。
三、利用PowerDesigner实现IQ数据仓库的最佳实践
1. 获取查询或报表需求并识别报表和查询所需的数据
数据仓库的设计通常由大量的数据查询或生成报表需求驱动,用户通过建立包含大量聚集数据的数据仓库或数据集市来加速数据查询和生成报表。例如考虑一个企业电子商务网站的例子。该企业需要作出如下典型决策,如哪些产品最有利可图?哪些客户会为我们带来最大利益?哪些环节需要花费很高的费用?哪些市场活动运行得最好,为什么?我们有可能会失去哪些客户等等。这些都是设计数据仓库的原动力。在获取了这些需求之后,我们需要找出要进行这些分析需要哪些的数据,比如,需要分析哪些客户会给企业带来最大利益时,这必需找到订单数据表和客户信息表数据才能进行分析。这些需求都可以通过PowerDesigner 提供的需求模型进行分析。如图 1所示:
图 1 数据仓库的需求分析
2. 基于OLTP(在线事务处理系统)数据库模式生成IQ数据仓库模型(Data Warehouse Model)
在明确了需求并识别出所需的数据及数据表之后,可以全新开始设计一个IQ数据仓库模型,也可以从原有数据库出发,通过PowerDesigner提供的反向工程功能来加速创建IQ数据仓库模型。下面介绍一下如何利用反向工程来创建IQ数据仓库模型。
首先,需要通过PowerDesigner菜单File ->Reverse Engineer->Database…来进行OLTP数据库的反向工程。
图2 数据库反向工程设置
在反向工程的设置页面中(如图2所示)需要选中 “Statistics”选项,表示我们需要在反向工程的模型中生成关于数据库的一些统计数据(例如,一个表有多少行,一个列中有多少个不同的值,一个列的数据类型是什么等信息),这些统计信息是下面步骤中生成IQ索引的重要信息。
其次,使用Tools->Generate Physical Data Model… 菜单生成基于的IQ数据仓库物理数据模型(PDM)。在PDM生成对话框的“General”页面中将DBMS选项中选择“Sybase As IQ 12.7”,在“Detail”页面中选择“Generate mappings...” 点击确定后,PowerDesigner就已经帮您生成了一个基于IQ物理数据仓库模型。
图3 生成IQ物理数据模型
3. 创建IQ 列索引(Column Index)及联合索引(Join Index)
IQ 需要列索引来提高各种性能,这些列索引的类型可以是:LF,HG,HNG,CMP,DATE,TIME,DTTM,WD,PowerDesigner支持这些列索引的建模。
如果用户是通过反向工程最后生成的IQ数据模型(包含统计数据),PowerDesigner支持自动生成IQ列索引。用户通过 Tools->Rebuild Objects->Rebuild Indexes 命令可以自动的创建所有的IQ列索引。联合索引是为了优化连接操作的性能而设计的。用户可以通过 Tools->Multidimension->Retrieve Multidimension Objects 命令来确定事实和多维表,通过Tools>Rebuild Object>Rebuild Join Indexes 来重建联合索引。这些功能极大地加速了数据仓库的设计过程,减少了大量的设计和开发的时间。
4. 多维数据建模(Multi-dimension Data Modeling)
多维数据建模以直观的方式组织数据,并支持高性能的数据访问。每一个多维数据模型由多个多维数据模式表示,每一个多维数据模式都是由一个事实表和一组维表组成的。PowerDesigner支持多种数据仓库模型,包括星型模式(Star Schema)和雪花模式(Snowflake Schema),如图4,图5所示。PowerDesigner 支持多维数据建模如图6所示,用户还可以通过使用映射编辑器来实现从Cube到Table的映射并支持脚本的生成。
图4 星型模式
图5 雪花模式
图6 多维图建模
5. 使用映射编辑器(Mapping Editor)定义数据转换(Data Transformation)
为了将数据从OLTP数据库移动到数据仓库中,用户需要定义源数据表/列到目的数据表/列的映射关系。对于简单的数据移动任务,例如源数据源和目的数据源的数据库Schema相同的情况下,可以通过将数据导出到平面文件中,然后使用“Bulk Copy”命令来加载数据。对于复杂的数据移动任务,数据抽取转换(ETL)工具例如Sybase ETL可以被用来实现这种转换。在PowerDesigner中用户可以通过两个物理数据模型(PDM)来定义OLTP数据库和IQ数据仓库模式之间的映射关系,当IQ数据仓库的模式是从OLTP数据库模式生成时,这种映射关系已经默认被生成了(如果用户在生成过程中选中了“Generate mappings”)。当然,用户还可以通过映射编辑器(Tools->Mapping Editor…)手动去修改这种映射关系。
图7显示了源数据源与目的数据源数据之间的映射关系。
图7 映射编辑器
6. 生成IQ数据仓库
至此,我们已经基本完成了IQ数据仓库模式的设计的过程,可以通过Database->Generate Database… 将数据仓库定义直接生成到IQ数据仓库中去(如图8所示)。
图8 数据仓库生成设置
7. 移动数据到数据仓库中
在完成了数据仓库的设计和实现之后,需要将数据从OLTP数据移动到数据仓库中去,利用PowerDesigner可以很容易的帮助用户实现这种数据移动的功能。PowerDesigner通过以下两种方式的来实现数据移动任务。方法一:生成数据导出脚本将数据从OLTP数据库导出到平面文件中去,再通过生成的数据导入脚本将数据导入到IQ数据仓库中去。方法二:生成“Insert … location”脚本直接将数据从OLTP数据库中导入到IQ数据库中。在PowerDesigner内部实现中是通过上文提到的数据映射定义来生成这些脚本的。目前,PowerDesigner支持的源数据库主要有:Sybase ASE, Sybase ASA, Oracle, IBM DB2, Microsoft SQL Server。接下来我们以方法一为例来介绍一下如何利用PowerDesigner来实现数据移动任务。
在IQ 物理数据模型中,通过Model->Extended Model Definitions…菜单添加“Data Movement IQ”扩展数据模型定义。
图 9 添加“IQ数据移动”扩展模型
定义数据源属性
选择Model->Data Sources,打开数据源定义属性对话框,定义用户名、密码、服务器名、数据库名、数据源名、导出目录等。(图10,图11所示)
图 10 数据库连接设置
图 11 数据移动设置
定义默认分隔符、加载目录
在浏览器中右键选择数据仓库模型,点击属性选项打开模型属性定义对话框,定义默认分隔符,加载目录等信息(图12所示)。
图12 默认分隔符、目录设置
预览和生成数据导入导出脚本
在模型属性对话框中,用户点击“Preview”可预览到自动生成的导入导出脚本(图13,图14),通过Tools->Extended Generation命令可将这些脚本生成到磁盘中去。
图13 数据导出脚本预览
图14 数据导入脚本预览
执行数据导出导入脚本
首先在OLTP数据库中执行PowerDesigner生成的数据导出脚本,执行的结果是模型中已经设置的导出目录中生成一系列的数据平面文件。接着需要将导出目录中生成的数据平面文件拷贝到安装IQ的机器中去,并在IQ中运行PowerDesigner生成的数据导入脚本,执行的结果就是将数据导入到 IQ 数据库中。至此我们完成了数据仓库的设计和实现整个过程。
四、总结
综上所述,大家可以看出利用PowerDesinger来设计数据仓库极大简化了设计过程,设计出的数据仓库模型对象直观明了,而且许多的操作都可以通过它来自动帮您去完成,加速了数据仓库的实现过程,用户只需要针对自己的一些特殊要求做适当的调整即可实现原来比较复杂数据仓库设计。所以无论设计者所面临的业务需求多么复杂,都可以从PowerDesigner里得到强有力的支持。
引自:
http://tech.it168.com/a2009/0210/264/000000264865.shtml