Optim Development Studio 的新增功能,第 2 部分

Sonali Surange, 软件架构师, IBM
Sonali Surange 是 IBM 硅谷实验室 Optim Development Studio 的软件架构师。之前她领导了 IBM 数据库中 Visual Studio .Net 工具几个主要组件的开发。
Adekunle O Adio, 软件工程师, IBM
Adekunle Adio 是 IBM Lenexa 实验室的软件工程师。他从事过 Data Facility Storage Management Subsystem (DFSMS)、IBM Migration Toolkit (MTK) 和 pureQuery 工具方面的工作。目前,Adekunle 从事 Tivoli 产品方面的工作。

简介: 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 来完成此任务,但是命令行可使用本版本的所有功能编写脚本来进行自动化。

场景概述

示例场景描述了如何执行以下任务:

  1. 从示例应用程序和绑定包捕获初始 SQL 来构建示例应用程序
  2. 使用捕获的 SQL 和相关的运行时属性构建和填充存储库
  3. 处理应用程序更改并将这些更改应用于生产

最后本文介绍了包管理的新功能,包括以下内容:

  • 根据字符串和特殊的寄存器将语句分组为单独的包
  • 从捕获文件中清除旧 SQL
  • 报告正在工作的(开发)捕获文件副本和目前在存储库中的捕获文件副本的不同

先决条件

要跟随示例场景,请在开始前执行下列步骤。

  1. 安装 Optim Development Studio 2.2 Fix Pack 3(请参阅 参考资料 获得此修复包的下载文档链接)。
  2. 连接到 DB2® 上的 GSDB 示例数据库。本场景使用 DB2 for Linux®, UNIX®, and Windows®。请参阅 参考资料 获得到 GSDB 数据库的链接。
  3. 下载 JDBC 应用程序代码:TutMod.java 和 Utils.java(请参阅 下载 部分)。
构建示例应用程序

本部分介绍使用静态 SQL 模拟具有生产应用程序的环境所需的步骤。这些步骤指导您运行现有的 creditCard JDBC 应用程序,方法是使用客户端优化捕获过程,然后使用参数标记替换应用程序中的文本。有关客户端优化和文本替换功能的更多信息,请参阅 参考资料 获得 IBM Redbooks® 出版物 Using Integrated Data Management to meet Service Level Objectives 的链接。

从示例应用程序捕获和绑定 SQL

要创建捕获文件,请执行以下步骤:

  1. 在 Data Source Explorer 中,创建一个到 GSDB 数据库的名为 CREDIT 的连接。
  2. 创建一个名为 creditCardApp 的 Java 项目。这将容纳您的信用卡应用程序。
  3. 提供的源代码 (TutMod.java, Utils.java) 移动到 creditCardApp 的 src 文件夹中。
  4. 右键单击 creditCardApp 项目,选择 Add pureQuery support
  5. 按照向导中的步骤选择连接 CREDIT 并提供 GOSALESCT 的默认模式值。
  6. 确保选中了 Enable SQL capturing and binding for JDBC applications 复选框。
  7. 执行以下步骤替换文本:
    1. 导航到 creditCardApp 项目的 src 文件夹,打开 pdq.properties 文件。
    2. 添加行 pdq.sqlLiteralSubstitution=ENABLE,如图 1 所示。


图 1. 支持在 pdq.properties 中进行 SQL 文本替换

注意,默认情况下,通过设置 captureMODE=ON 将捕获模式设置为 ON。

  1. 要捕获 SQL,请执行下列操作。
    1. 右键单击 TutMod.java,选择 Run As > Java Application
    2. 运行应用程序时传入下列参数:
    3. 当应用程序完成运行时,右键单击项目并选择 Refresh。从该运行捕获的 SQL 已被放入名为 capture.pdqxml 的文件中,该文件位于 pureQueryFolder 文件夹中。
  2. 使用静态 SQL 准备将要运行的应用程序。要创建应用程序包,按照下列操作绑定应用程序。
    1. 在 pureQueryFolder 文件夹中,打开 Default.bindprops 文件并在 defaultOptions 中输入 -bindOptions "QUALIFIER (GOSALESCT)",如图 2 所示。


图 2. 在 Default.bindProps 中提供绑定选项

    1. 右键单击 capture.pdqxml 文件,选择 pureQuery > Bind
    2. 选择 CREDIT 连接。
    3. 保留向导中的默认值并单击 Finish

现在就收集了应用程序中的 SQL,并为应用程序的静态 SQL 执行创建了数据包。

构建 SQL 管理存储库

现在捕获的 SQL 和相关的执行属性可存储在数据库 SQL 管理存储库 中,该存储库提高了安全性并提供了到 DBA 的捕获信息的集中控制。将捕获的 SQL 和执行属性放在一个位置,可减少在绑定和执行过程中出现的错误。SQL 管理存储库包含 PQ 运行时配置、PDQXML 和增量PDQXML,如图 3 所示。这些项目可由 Optim Development Studio 或命令行工具管理,以访问数据库并在数据库上创建数据包等。当执行应用程序时,pureQuery Runtime 还可使用这些项目访问相应的属性。


图 3. SQL 管理存储库简介

下面是使用 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 文件提供的示例作为学习该工具的出发点。

要创建存储库,请找到 \dsdev\bin 并使用清单 1 中的代码,清单下面将介绍详细内容。


清单 1. 创建存储库

manageRepository -create repository
	  -repositoryType pureQueryOnly
	  -repositoryURL  
	  -repositoryUsername  
	  -repositoryPassword  
	  -repositoryDriverClass com.ibm.db2.jcc.DB2Driver

-repositoryType pureQueryOnly (默认)创建的数据库包含 pureQuery runtime 所需的一些内容,以及 SQL 进行问题确认和影响分析(包括 SQL 相关性)所需的其他信息。

-repositoryType pureQueryRuntimeOnly 创建了一个轻量型存储库,仅包含 pureQuery 客户端优化运行时所需的信息。

如果您的存储库与应用程序的数据库同时存在,请考虑使用轻量型存储库降低对计算机的性能影响。

访问存储库时要可选地使用静态 SQL,请使用 bind 命令创建数据库包,如清单 2 所示。


清单 2. 使用 bind 创建数据库包

manageRepository 
	-bind packages
	-repositoryDriverClass com.ibm.db2.jcc.DB2Driver 
	-repositoryURL  
	-repositoryUsername  
	-repositoryPassword 

最后,您可能想要控制并授予特定用户访问数据包的特定权限。例如,如果您选择不使用静态 SQL 访问存储库,就需要将权限授予存储库表格本身。根据需要使用 manageRepository -grant 命令执行这些操作。或者,请参阅 参考资料 中列出的 Integrated Data Management Information Center 关于客户端优化的主题。

现在您已经捕获了应用程序中的 SQL 并绑定了 SQL 以创建准备使用的数据库包,以使用静态 SQL 执行它。您还创建了要用于存储捕获的 SQL 和运行时属性的 SQL 管理存储库。

将应用程序和属性上载到 SQL 管理存储库

新的 Eclipse 透视图(Common Repositories 透视图)支持 DBA 使用用户界面提供的逐步方法处理捕获的 SQL。您将在本过程的此步骤使用此新透视图。

运行时组 是另一个新概念。运行时组是存储在管理存储库中的捕获文件及其相关属性的组合。可以创建多个运行时组以匹配应用程序的执行属性需求。例如,对于一个应用程序,根据需要可以启用一些运行时组的捕获,而关闭另一些运行时组的捕获。

还可以创建一个运行时组的多个版本并将要在执行时间使用的版本标记为 active

要将捕获的文件和属性上载到存储库,请执行下列操作:

  1. 从 pdq.properties 删除行 pdq.pureQueryXml。默认情况下,当 Optim Development Studio 设置静态 SQL 执行的属性时,将指向您工作区中捕获文件的位置。因为当捕获文件上载到 SQL 管理存储库时该位置不正确,所以这会删除指向工作区的属性。因此,pdq.properties 包含的内容如清单 3 所示。


清单 3. 删除了捕获文件位置的 pdq.properties 文件

	pdq.captureMode=ON
	pdq.executionMode=STATIC
	pdq.sqlLiteralSubstitution=ENABLE

  1. 根据下列步骤,创建一个指向包含存储库的数据库的连接:
    1. 单击 Window > Open Perspective 打开 Optim Common Repositories 透视图。
    2. 浏览到 Common Repository Explorer,右键单击 Common Repository Connections
    3. 单击 New
    4. 创建一个指向在 构建 SQL 管理存储库 部分创建的存储库的连接,并单击 Finish,如图 4 所示。


图 4. 创建一个到 SQL 管理存储库的连接

  1. 要创建名为 CREDIT_RG 的运行时组,请执行以下操作:
    1. 右键单击 SQL Management 节点,选择 New Runtime Group
    2. 输入运行时组名称和版本。
    3. 从上载的项目中选择属性文件,如图 5 所示。


图 5. 创建运行时组的步骤

    1. 单击 Finish
    现在捕获的 SQL 及其相关运行时属性都上载到了存储库。
  1. 右键单击新运行时组版本,选择 Mark Active 将运行时组版本标记为活动,如图 6 所示。


图 6. 将运行时组版本标记为活动

执行应用程序时,pureQuery 运行时使用 SQL 管理存储库中的此捕获文件 (pureQueryXml) 及其相关属性。

处理生产应用程序的后续更改

本部分介绍如何对生产应用程序进行更改,以及如何轻松地管理这些更改。对于示例场景,在应用程序投入生产的数月之后,为应用程序添加了新功能(包括新 SQL),现在需要部署该应用程序。本部分介绍如何复制此处的环境,以及如何使用新的修复包功能将这些更改部署到生产应用程序中。

在生产应用程序中创建更改

在本部分中,将撤销 update 和 delete 方法的注释以创建其他 SQL。然后可以在捕获模式中运行应用程序以收集新添加的 SQL。可以选择直接在 SQL 管理存储库的运行时组中存储新捕获的 SQL。操作步骤如下所示:

更多信息

提供了很多灵活性来控制何时以及如何将这些更改更新到数据库。要了解选项列表的详细内容,请参阅 参考资料 中在 IDM 信息中心列出的客户端优化主题。

  1. 撤销 TutMod.java 中 basicUpdate 和 basicDelete 方法的注释。
  2. 将值添加到 creditCardApp 中的 pdq.properties,如清单 4 所示。


清单 4. pdq.properties 存储库值

pdq.finalRepositoryProperties = ;user=;password=;
pdq.properties=CREDIT_GRP
pdq.repositoryRequired=AtStartupAndForOutput

  • finalRepositoryProperties 指定在检索 pureQuery 运行时属性和 pureQueryXML 文件信息时要使用的位置。
  • propertiesGroupId 指定在检索数据或将数据存储到 SQL 管理存储库时要使用的 SQL 管理存储库的运行时组 ID。
  • repositoryRequired 指定何时需要 SQL 管理存储库。
  1. 再次运行应用程序。带有新 SQL 的捕获文件存储在 SQL 管理存储库中。

处理生产应用程序的更改

本部分介绍如何查看存储库中增量收集的 SQL,以及如何为新捕获的 SQL 设置配置并绑定所需的属性。还介绍了如何在这些新更改上更新(合并更改和配置)和运行绑定操作。可选择单独运行这些步骤,也可以选择在一个步骤中运行所有步骤,使持续维护变得更容易。请执行下列操作:

  1. 右键单击运行时组的活动版本,选择 Manage,如图 7 所示。


图 7. Common Repository Explorer

  1. 单击 Run All Steps,如图 8 所示。


图 8. 运行所有步骤以绑定和上载更改

  1. 输入 2 作为新 Runtime Group Version。
  2. 选择 CREDIT 作为要绑定的连接。

注意,可以根据需要将 delta 更改绑定到新 package 版本。通过提供 pkgVersion 选项配置属性可创建包版本。

现在部署了新更改,并且应用程序准备在生产中再次运行。

管理 SQL 和包

数据库架构通常在应用程序部署到生产之后更改。这会触发 SQL 的更改并导致应用程序中的更改使用 SQL。根据架构的更改,现在应用程序可访问多个架构,这就产生了 “按架构正确排列包含在静态 SQL 包中的 SQL” 这一需求,以便可使用每个包的正确限定符绑定应用程序。

在 Fix Pack 1 中,IBM 引入了允许 pureQuery 注解方法风格(现称为 DAO)的应用程序访问多个架构的能力。在 Fix Pack 3 中,通过按架构或表格自动排列捕获文件中的包,可更好地处理访问多个架构的现有应用程序。可以从命令行工具或 Optim Development Studio 工具执行此操作。

您需要自动更新 SQL 文件,这样就可以收集新 SQL,而无需再次运行应用程序,并可从之前捕获的 SQL 中删除旧的不用的 SQL,将其作为日常维护的一部分。

本部分介绍如何利用这些包管理功能。

在不运行应用程序的情况下捕获 SQL

Optim Development Studio 使用源代码分析确定应用程序在 SQL 大纲中显示 SQL 使用的 SQL 语句。JDBC、Hibernate 或 JPA 应用程序都有此功能。可使用此功能收集合并到现有捕获文件的新 SQL,无需在捕获模式下再次运行应用程序。

请按以下步骤执行操作:

  1. 在新架构 GOSALESRT 中创建 CUST_CRDT_CARD 表,操作步骤如下所示:
    1. 从 GOSALESCT 架构选择表 CUST_CRDT_CARD。
    2. 右键单击选中的表,并选择 Copy
    3. 单击 GOSALESRT
    4. 右键单击并选择 Paste
    5. 在向导中,选择单选按钮 Paste directly into target,然后单击 Next
    6. 选择单选按钮 Copy database objects only
    7. 单击 Copy dependent database objects 选项,然后单击 Finish。CUST_CRDT_CARD 表及其相关表现在都在 GOSALESRT 架构中创建。
  2. 更改应用程序,这样 basicInsert 方法从新架构(GOSALESRT 而不是 GOSALESCT)指向表,如清单 5 所示。


清单 5. 编辑 basicInsert 方法

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)");

  1. 打开 SQL 大纲,如果还没有打开,单击 Window > Show View > Data Management,并选择 SQL Outline
  2. 展开 SQL 大纲中 Database 选项卡的 GOSALESRT。可以看到两个新 insert 语句现在指向 GOSALESRT 架构而不是 GOSALESCT。
  3. 将新 SQL 语句导出到现有的捕获 SQL 文件中,方法是选择 SQL 语句,右键单击它们并选择 Export to SQL File,如图 9 所示。


图 9. SQL 大纲中的 Database 选项卡

提示:还可以从动态语句缓存或使用其他首选机制手动创建 .sql 文件。有了 .sql 文件后,可以将 SQL 和现有捕获文件组合使用,操作方法如下所示。

  1. 使用 Optim Common Repositories 透视图将新 SQL 与已捕获的 SQL 合并起来,操作步骤如下所示:
    1. 从活动版本节点,右键单击并选择 Add SQL。注意,可使用运行时组节点的 Add SQL to Active Version 菜单执行相同的操作。
    2. 提供在之前的步骤中创建的 .sql 文件,如图 10 所示。


图 10. Common Repository Explorer

    1. 单击 Finish

按照架构或表自动分组包中的 SQL

为确保正确支持多个架构,配置实用工具中的一个新选项支持按字符串分组 SQL。通过在字符串值中提供架构或表名称,可以轻松使用数据包的某一架构或表分组所有 SQL。此新选项称为 groupSQLByStrings。对于此示例场景,可使用它根据 GOSALESRT 架构分组。操作步骤如下所示:

  1. 单击 Configure Properties 选项卡。
  2. 添加属性,如清单 6 所示。


清单 6. 添加属性

\CreditCardApp\pureQueryFolder\capture.
pdqxml= -rootPkgName Credit -groupSQLByStrings (GOSALESRT)

自动删除旧的未使用的 SQL

要确保最终删除引用较旧架构的旧 SQL 语句,可使用配置实用工具中名为 removeInactiveForDays 的新选项删除已有几天未执行的 SQL。在脚本中定期运行此选项可确保自动清理捕获文件以删除未使用的 SQL。本部分介绍如何使用 removeInactiveForDays 选项。

操作步骤如下所示:

  1. 单击 Configure Properties 选项卡。
  2. 添加 cleanconfigure、groupSQLByStrings 和 removeInactiveForDays 属性,如清单 7 所示。


清单 7. 添加属性以删除未使用的 SQL

\CreditCardApp\pureQueryFolder\capture.
pdqxml= -rootPkgName Credit 
         -groupSQLByStrings (GOSALESRT)
				-cleanConfigure TRUE
         -removeInactiveForDays 60  

cleanConfigure 选项触发文件的重新配置。不活动的 SQL 将在 60 天之后删除。

  1. 稍后将为了进行测试而减少此天数。

查看和执行更改

DBA 并不能总是看到应用程序和 SQL 中的所有更改类型,但有了此信息有助于理解和管理更改。现在可使用更改报告功能查看带有新 SQL 的捕获文件与存储库中已存在文件之间的不同。批准了更改后,可将此文件上载到存储库中。操作步骤如下所示:

  1. 在 Common Repository Explorer 视图中,右键单击 Version 2,并选择 Manage
  2. 展开 Step 1,并单击 Update pureQueryXML,如图 11 所示。


图 11. 合并和配置带有新 SQL 的捕获文件

这会使用重新排列数据包和删除旧 SQL 的属性合并和配置文件。

  1. 单击 pureQueryXML 选项卡查看数据包中根据架构排列的 SQL,如图 12 所示。


图 12. 根据架构分组的新语句

  1. 单击 Change Report 功能查看捕获文件正在工作的副本和存储库中已存在文件的更改,如图 13 所示。


图 13. 更改报告

  1. 展开 Step 2 并单击 Bind pureQueryXML,如图 14 所示。


图 14. 绑定已更新和配置的文件

  1. 要准备上载的配置属性,请删除 cleanConfigure 选项,方法是单击 Configure properties 选项卡,然后删除 -cleanConfigure true
  2. 展开 Step 3,说明版本号,然后单击 Upload to Repository 将新运行时组上载到存储库中,如图 15 所示。注意,如果愿意可单击 Delete the processed captured SQL


图 15. 上载新运行时组

现在就完成了示例场景。

结束语

本文介绍了 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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/15082138/viewspace-675774/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/15082138/viewspace-675774/

你可能感兴趣的:(Optim Development Studio 的新增功能,第 2 部分)