Optim Development Studio 的新增功能,第 2 部分
上一篇 / 下一篇 2010-10-12 16:22:45 / 个人分类:DB2
简介: Fix Pack 3 of IBM Optim™(TM) Development Studio and pureQuery Runtime 2.2 的新功能在安全性、控制和维护方面提供了重大改进,以便使用 pureQuery 客户端优化的管理员提高 Java 数据库应用程序的安全性、稳定性和性能。这些改进基于存储 pureQuery 元数据和属性的新中央存储库。本文使用一个场景诠释了 Fix Pack 3 使之变为可能的一些新功能。
pureQuery 客户端优化支持您从正在运行的 Java 应用程序捕获 SQL 和相关元数据,这样就可以使用捕获的 SQL 帮助改善问题诊断、相关性分析和安全性,方法是指定仅执行捕获和查看的 SQL。当目标数据源是 DB2 时,捕获的 SQL 可以绑定到数据库包中进行静态 SQL 执行,这有助于使用静态执行安全性模型提供更加一致(或更好)的性能、更易管理的应用程序更改和应用程序可跟踪性,以及更好的安全性。有关客户端优化的收益的更多信息,请参阅本文的参考资料部分。
越来越多的企业正在评估和实施 pureQuery 客户端优化。本文反映了 Fix Pack 3 of the Optim pureQuery Runtime and Optim Development Studio 实施和交付的初始更改集。这些更改支持数据库管理员 (DBA) 更多地控制流程的复杂企业环境,从而降低了依赖应用程序服务器管理员的需求。此外,持续维护也更容易了。
本文介绍了一种使用并维护生产应用程序的场景,该应用程序使用了静态 SQL 和 pureQuery 客户端优化。尽管本文重点介绍使用 Optim Development Studio 来完成此任务,但是命令行可使用本版本的所有功能编写脚本来进行自动化。
示例场景描述了如何执行以下任务:
最后本文介绍了包管理的新功能,包括以下内容:
- 根据字符串和特殊的寄存器将语句分组为单独的包
- 从捕获文件中清除旧 SQL
- 报告正在工作的(开发)捕获文件副本和目前在存储库中的捕获文件副本的不同
要跟随示例场景,请在开始前执行下列步骤。
- 安装 Optim Development Studio 2.2 Fix Pack 3(请参阅参考资料获得此修复包的下载文档链接)。
- 连接到 DB2® 上的 GSDB 示例数据库。本场景使用 DB2 for Linux®, UNIX®, and Windows®。请参阅参考资料获得到 GSDB 数据库的链接。
- 下载 JDBC 应用程序代码:TutMod.java 和 Utils.java(请参阅下载部分)。
本部分介绍使用静态 SQL 模拟具有生产应用程序的环境所需的步骤。这些步骤指导您运行现有的 creditCard JDBC 应用程序,方法是使用客户端优化捕获过程,然后使用参数标记替换应用程序中的文本。有关客户端优化和文本替换功能的更多信息,请参阅参考资料获得 IBM Redbooks® 出版物Using Integrated Data Management to meet Service Level Objectives的链接。
要创建捕获文件,请执行以下步骤:
- 在 Data Source Explorer 中,创建一个到 GSDB 数据库的名为CREDIT的连接。
- 创建一个名为creditCardApp的 Java 项目。这将容纳您的信用卡应用程序。
- 将提供的源代码(TutMod.java, Utils.java) 移动到 creditCardApp 的src文件夹中。
- 右键单击creditCardApp项目,选择Add pureQuery support。
- 按照向导中的步骤选择连接CREDIT并提供GOSALESCT的默认模式值。
- 确保选中了Enable SQL capturing and binding for JDBC applications复选框。
- 执行以下步骤替换文本:
- 导航到 creditCardApp 项目的src文件夹,打开pdq.properties文件。
- 添加行
pdq.sqlLiteralSubstitution=ENABLE,如图 1 所示。
图 1. 支持在 pdq.properties 中进行 SQL 文本替换
注意,默认情况下,通过设置captureMODE=ON将捕获模式设置为 ON。
- 要捕获 SQL,请执行下列操作。
- 右键单击TutMod.java,选择Run As > Java Application。
- 运行应用程序时传入下列参数:
<database> <host> <port> <username> <password> - 当应用程序完成运行时,右键单击项目并选择Refresh。从该运行捕获的 SQL 已被放入名为
capture.pdqxml的文件中,该文件位于 pureQueryFolder 文件夹中。
- 使用静态 SQL 准备将要运行的应用程序。要创建应用程序包,按照下列操作绑定应用程序。
- 在 pureQueryFolder 文件夹中,打开 Default.bindprops 文件并在 defaultOptions 中输入
-bindOptions "QUALIFIER (GOSALESCT)",如图 2 所示。
- 在 pureQueryFolder 文件夹中,打开 Default.bindprops 文件并在 defaultOptions 中输入
图 2. 在 Default.bindProps 中提供绑定选项
- 右键单击capture.pdqxml文件,选择pureQuery > Bind。
- 选择CREDIT连接。
- 保留向导中的默认值并单击Finish。
现在就收集了应用程序中的 SQL,并为应用程序的静态 SQL 执行创建了数据包。
现在捕获的 SQL 和相关的执行属性可存储在数据库 SQL 管理存储库中,该存储库提高了安全性并提供了到 DBA 的捕获信息的集中控制。将捕获的 SQL 和执行属性放在一个位置,可减少在绑定和执行过程中出现的错误。SQL 管理存储库包含 PQ 运行时配置、PDQXML 和增量PDQXML,如图 3 所示。这些项目可由 Optim Development Studio 或命令行工具管理,以访问数据库并在数据库上创建数据包等。当执行应用程序时,pureQuery Runtime 还可使用这些项目访问相应的属性。
下面是使用 SQL 管理存储库的一些优势:
- 使用 pureQuery 客户端优化的应用程序可提取和使用集中管理的信息。
- 信息的备份策略可与数据库的备份策略保持一致。
- 数据库可执行访问控制。
- 捕获的 SQL 派生的数据可以与 Optim Performance Manager Extended Edition 的 Extended Insight 功能共享,该功能支持由数据库管理员控制的端到端监控解决方案。
在开发时可以继续使用文件系统中的捕获文件,之前的版本就支持这种操作。然后在准备部署时可以选择将其上载到 SQL 管理存储库。
您可以使用生产中的事务数据库创建 SQL 管理存储库。这就确保了 SQL 管理存储库的高可用性。此外,也可以在单独的数据库中创建 SQL 管理存储库。有关支持配置的灵活性的更多信息,请参阅参考资料中列出的 Integrated Data Management Information Center 关于客户端优化的主题。
本文中的场景在生产使用的应用程序的相同数据库中创建了 SQL 管理存储库。
Optim Development Studio 提供了 manageRepository.bat 文件,使运行命令行工具变得很容易。您可以使用该 bat 文件提供的示例作为学习该工具的出发点。
要创建存储库,请找到<ODSInstallLocation>\dsdev\bin并使用清单 1 中的代码,清单下面将介绍详细内容。
manageRepository -create repository -repositoryType pureQueryOnly -repositoryURL <url> -repositoryUsername <userid> -repositoryPassword <pwd> -repositoryDriverClass com.ibm.db2.jcc.DB2Driver |
-repositoryType pureQueryOnly(默认)创建的数据库包含 pureQuery runtime 所需的一些内容,以及 SQL 进行问题确认和影响分析(包括 SQL 相关性)所需的其他信息。
-repositoryType pureQueryRuntimeOnly创建了一个轻量型存储库,仅包含 pureQuery 客户端优化运行时所需的信息。
如果您的存储库与应用程序的数据库同时存在,请考虑使用轻量型存储库降低对计算机的性能影响。
访问存储库时要可选地使用静态 SQL,请使用 bind 命令创建数据库包,如清单 2 所示。
manageRepository -bind packages -repositoryDriverClass com.ibm.db2.jcc.DB2Driver -repositoryURL <url> -repositoryUsername <userid> -repositoryPassword <pwd> |
最后,您可能想要控制并授予特定用户访问数据包的特定权限。例如,如果您选择不使用静态 SQL 访问存储库,就需要将权限授予存储库表格本身。根据需要使用manageRepository -grant命令执行这些操作。或者,请参阅参考资料中列出的 Integrated Data Management Information Center 关于客户端优化的主题。
现在您已经捕获了应用程序中的 SQL 并绑定了 SQL 以创建准备使用的数据库包,以使用静态 SQL 执行它。您还创建了要用于存储捕获的 SQL 和运行时属性的 SQL 管理存储库。
新的 Eclipse 透视图(Common Repositories 透视图)支持 DBA 使用用户界面提供的逐步方法处理捕获的 SQL。您将在本过程的此步骤使用此新透视图。
运行时组是另一个新概念。运行时组是存储在管理存储库中的捕获文件及其相关属性的组合。可以创建多个运行时组以匹配应用程序的执行属性需求。例如,对于一个应用程序,根据需要可以启用一些运行时组的捕获,而关闭另一些运行时组的捕获。
还可以创建一个运行时组的多个版本并将要在执行时间使用的版本标记为active。
要将捕获的文件和属性上载到存储库,请执行下列操作:
- 从 pdq.properties 删除行
pdq.pureQueryXml。默认情况下,当 Optim Development Studio 设置静态 SQL 执行的属性时,将指向您工作区中捕获文件的位置。因为当捕获文件上载到 SQL 管理存储库时该位置不正确,所以这会删除指向工作区的属性。因此,pdq.properties 包含的内容如清单 3 所示。
清单 3. 删除了捕获文件位置的 pdq.properties 文件
pdq.captureMode=ON pdq.executionMode=STATIC pdq.sqlLiteralSubstitution=ENABLE |
- 根据下列步骤,创建一个指向包含存储库的数据库的连接:
- 单击Window > Open Perspective打开 Optim Common Repositories 透视图。
- 浏览到 Common Repository Explorer,右键单击Common Repository Connections。
- 单击New。
- 创建一个指向在构建 SQL 管理存储库部分创建的存储库的连接,并单击Finish,如图 4 所示。
- 要创建名为 CREDIT_RG 的运行时组,请执行以下操作:
- 右键单击SQL Management节点,选择New Runtime Group。
- 输入运行时组名称和版本。
- 从上载的项目中选择属性文件,如图 5 所示。
- 单击Finish。
- 右键单击新运行时组版本,选择Mark Active将运行时组版本标记为活动,如图 6 所示。
执行应用程序时,pureQuery 运行时使用 SQL 管理存储库中的此捕获文件 (pureQueryXml) 及其相关属性。
本部分介绍如何对生产应用程序进行更改,以及如何轻松地管理这些更改。对于示例场景,在应用程序投入生产的数月之后,为应用程序添加了新功能(包括新 SQL),现在需要部署该应用程序。本部分介绍如何复制此处的环境,以及如何使用新的修复包功能将这些更改部署到生产应用程序中。
在本部分中,将撤销 update 和 delete 方法的注释以创建其他 SQL。然后可以在捕获模式中运行应用程序以收集新添加的 SQL。可以选择直接在 SQL 管理存储库的运行时组中存储新捕获的 SQL。操作步骤如下所示:
更多信息
提供了很多灵活性来控制何时以及如何将这些更改更新到数据库。要了解选项列表的详细内容,请参阅参考资料中在 IDM 信息中心列出的客户端优化主题。
- 撤销 TutMod.java 中 basicUpdate 和 basicDelete 方法的注释。
- 将值添加到 creditCardApp 中的 pdq.properties,如清单 4 所示。
pdq.finalRepositoryProperties = <url>;user=<user>;password=<pwd>; pdq.properties=CREDIT_GRP pdq.repositoryRequired=AtStartupAndForOutput |
finalRepositoryProperties指定在检索 pureQuery 运行时属性和 pureQueryXML 文件信息时要使用的位置。propertiesGroupId指定在检索数据或将数据存储到 SQL 管理存储库时要使用的 SQL 管理存储库的运行时组 ID。repositoryRequired指定何时需要 SQL 管理存储库。
- 再次运行应用程序。带有新 SQL 的捕获文件存储在 SQL 管理存储库中。
本部分介绍如何查看存储库中增量收集的 SQL,以及如何为新捕获的 SQL 设置配置并绑定所需的属性。还介绍了如何在这些新更改上更新(合并更改和配置)和运行绑定操作。可选择单独运行这些步骤,也可以选择在一个步骤中运行所有步骤,使持续维护变得更容易。请执行下列操作:
- 右键单击运行时组的活动版本,选择Manage,如图 7 所示。
图 7. Common Repository Explorer
- 单击Run All Steps,如图 8 所示。
- 输入 2 作为新 Runtime Group Version。
- 选择CREDIT作为要绑定的连接。
注意,可以根据需要将 delta 更改绑定到新package版本。通过提供pkgVersion选项配置属性可创建包版本。
现在部署了新更改,并且应用程序准备在生产中再次运行。
数据库架构通常在应用程序部署到生产之后更改。这会触发 SQL 的更改并导致应用程序中的更改使用 SQL。根据架构的更改,现在应用程序可访问多个架构,这就产生了 “按架构正确排列包含在静态 SQL 包中的 SQL” 这一需求,以便可使用每个包的正确限定符绑定应用程序。
在 Fix Pack 1 中,IBM 引入了允许 pureQuery 注解方法风格(现称为 DAO)的应用程序访问多个架构的能力。在 Fix Pack 3 中,通过按架构或表格自动排列捕获文件中的包,可更好地处理访问多个架构的现有应用程序。可以从命令行工具或 Optim Development Studio 工具执行此操作。
您需要自动更新 SQL 文件,这样就可以收集新 SQL,而无需再次运行应用程序,并可从之前捕获的 SQL 中删除旧的不用的 SQL,将其作为日常维护的一部分。
本部分介绍如何利用这些包管理功能。
Optim Development Studio 使用源代码分析确定应用程序在 SQL 大纲中显示 SQL 使用的 SQL 语句。JDBC、Hibernate 或 JPA 应用程序都有此功能。可使用此功能收集合并到现有捕获文件的新 SQL,无需在捕获模式下再次运行应用程序。
请按以下步骤执行操作:
- 在新架构 GOSALESRT 中创建 CUST_CRDT_CARD 表,操作步骤如下所示:
- 从 GOSALESCT 架构选择表 CUST_CRDT_CARD。
- 右键单击选中的表,并选择Copy。
- 单击GOSALESRT。
- 右键单击并选择Paste。
- 在向导中,选择单选按钮Paste directly into target,然后单击Next。
- 选择单选按钮Copy database objects only。
- 单击Copy dependent database objects选项,然后单击Finish。CUST_CRDT_CARD 表及其相关表现在都在 GOSALESRT 架构中创建。
- 更改应用程序,这样 basicInsert 方法从新架构(GOSALESRT 而不是 GOSALESCT)指向表,如清单 5 所示。
Line 166:
stmt.executeUpdate("INSERT INTO GOSALESRT.CUST_CRDT_CARD(CUST_CC_ID, CUST_CODE,
CUST_CC_NUMBER, CUST_CC_SERV_CODE) "+ "
VALUES(999, 999, '10000000009669483', 692)");
Line 171:
stmt.executeUpdate("INSERT INTO GOSALESRT.CUST_CRDT_CARD(CUST_CC_ID, CUST_CODE,
CUST_CC_NUMBER, CUST_CC_SERV_CODE) "+ "
VALUES(888, 888, '10000000009669483', 693)"); |
- 打开 SQL 大纲,如果还没有打开,单击Window > Show View > Data Management,并选择SQL Outline。
- 展开 SQL 大纲中 Database 选项卡的 GOSALESRT。可以看到两个新 insert 语句现在指向 GOSALESRT 架构而不是 GOSALESCT。
- 将新 SQL 语句导出到现有的捕获 SQL 文件中,方法是选择 SQL 语句,右键单击它们并选择Export to SQL File,如图 9 所示。
提示:还可以从动态语句缓存或使用其他首选机制手动创建 .sql 文件。有了 .sql 文件后,可以将 SQL 和现有捕获文件组合使用,操作方法如下所示。
- 使用 Optim Common Repositories 透视图将新 SQL 与已捕获的 SQL 合并起来,操作步骤如下所示:
- 从活动版本节点,右键单击并选择Add SQL。注意,可使用运行时组节点的Add SQL to Active Version菜单执行相同的操作。
- 提供在之前的步骤中创建的 .sql 文件,如图 10 所示。
图 10. Common Repository Explorer
- 单击Finish。
为确保正确支持多个架构,配置实用工具中的一个新选项支持按字符串分组 SQL。通过在字符串值中提供架构或表名称,可以轻松使用数据包的某一架构或表分组所有 SQL。此新选项称为groupSQLByStrings。对于此示例场景,可使用它根据 GOSALESRT 架构分组。操作步骤如下所示:
- 单击Configure Properties选项卡。
- 添加属性,如清单 6 所示。
<yourProjectLocation>\CreditCardApp\pureQueryFolder\capture. pdqxml= -rootPkgName Credit -groupSQLByStrings (GOSALESRT) |
要确保最终删除引用较旧架构的旧 SQL 语句,可使用配置实用工具中名为removeInactiveForDays的新选项删除已有几天未执行的 SQL。在脚本中定期运行此选项可确保自动清理捕获文件以删除未使用的 SQL。本部分介绍如何使用 removeInactiveForDays 选项。
操作步骤如下所示:
- 单击Configure Properties选项卡。
- 添加 cleanconfigure、groupSQLByStrings 和 removeInactiveForDays 属性,如清单 7 所示。
<yourProjectLocation>\CreditCardApp\pureQueryFolder\capture. pdqxml= -rootPkgName Credit-groupSQLByStrings (GOSALESRT)-cleanConfigure TRUE-removeInactiveForDays 60 |
cleanConfigure 选项触发文件的重新配置。不活动的 SQL 将在 60 天之后删除。
- 稍后将为了进行测试而减少此天数。
DBA 并不能总是看到应用程序和 SQL 中的所有更改类型,但有了此信息有助于理解和管理更改。现在可使用更改报告功能查看带有新 SQL 的捕获文件与存储库中已存在文件之间的不同。批准了更改后,可将此文件上载到存储库中。操作步骤如下所示:
- 在 Common Repository Explorer 视图中,右键单击Version 2,并选择Manage。
- 展开Step 1,并单击Update pureQueryXML,如图 11 所示。
这会使用重新排列数据包和删除旧 SQL 的属性合并和配置文件。
- 单击pureQueryXML选项卡查看数据包中根据架构排列的 SQL,如图 12 所示。
- 单击Change Report功能查看捕获文件正在工作的副本和存储库中已存在文件的更改,如图 13 所示。
- 展开Step 2并单击Bind pureQueryXML,如图 14 所示。
- 要准备上载的配置属性,请删除 cleanConfigure 选项,方法是单击Configure properties选项卡,然后删除-cleanConfigure true。
- 展开Step 3,说明版本号,然后单击Upload to Repository将新运行时组上载到存储库中,如图 15 所示。注意,如果愿意可单击Delete the processed captured SQL。
现在就完成了示例场景。
本文介绍了 Fix Pack 3 of Optim Development Studio 2.2 and Optim pureQuery Runtime 2.2 的新功能如何改进生产应用程序的持续维护。这些功能支持在数据库存储库中存储 SQL 捕获文件 (pureQueryXML) 和属性。无需在捕获模式下运行应用程序,即可更新 pureQueryXML 文件,这改进了构建和运行体验。可以将 pureQueryXML 文件保持为最新。还提供了更多自动化以根据数据包排列 SQL。可使用命令行工具或 Optim Development Studio 执行所有新功能。
原文链接:http://www.ibm.com/developerworks/cn/data/library/techarticles/dm-1006optimdeveloper2/index.html
相关阅读:
- 借助包装外部系统管理工具,通过云来实现企业操作自动化 (CloudSpace, 2010-9-29)
- 使用一个 Windows 服务来启动 WebSphere MQ File Transfer Edition 客户端代理 (CloudSpace, 2010-9-29)
- 为 WebSphere Application Server 开发企业 OSGi 应用程序 (CloudSpace, 2010-9-29)
- 使用RAFW管理您的 WebSphere 产品安装、配置和应用程序部署 (CloudSpace, 2010-9-29)
- WebSphere 反向投资者: 解决 WebSphere Application Server 的配置冲突 (CloudSpace, 2010-9-29)
- 评论专栏: 结合 Dojo 和 JAX-RS 创建 RESTful 服务 (CloudSpace, 2010-9-29)
- 从外部应用程序发送参数到基于 JSR 286 的 Web Content Viewer portlet (CloudSpace, 2010-9-29)
- IBM Rational Software Architect V8.0 版本的新特性 (habug, 2010-9-29)
- 编写高效 SQL 语句的最佳实践 (ArtCode, 2010-10-12)
导入论坛 引用链接 收藏 分享给好友 推荐到圈子 管理 举报
标题搜索
日历
|
|||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | 2 | 3 | 4 | 5 | |||||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 | |||
| 13 | 14 | 15 | 16 | 17 | 18 | 19 | |||
| 20 | 21 | 22 | 23 | 24 | 25 | 26 | |||
| 27 | 28 | 29 | 30 | 31 | |||||
我的存档
数据统计
- 访问量: 79039
- 日志数: 314
- 建立时间: 2008-08-05
- 更新时间: 2010-10-12












