简介: 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 模拟具有生产应用程序的环境所需的步骤。这些步骤指导您运行现有的 creditCard JDBC 应用程序,方法是使用客户端优化捕获过程,然后使用参数标记替换应用程序中的文本。有关客户端优化和文本替换功能的更多信息,请参阅 参考资料 获得 IBM Redbooks® 出版物 Using Integrated Data Management to meet Service Level Objectives 的链接。
从示例应用程序捕获和绑定 SQL
要创建捕获文件,请执行以下步骤:
图 1. 支持在 pdq.properties 中进行 SQL 文本替换
注意,默认情况下,通过设置 captureMODE=ON 将捕获模式设置为 ON。
图 2. 在 Default.bindProps 中提供绑定选项
现在就收集了应用程序中的 SQL,并为应用程序的静态 SQL 执行创建了数据包。
构建 SQL 管理存储库
现在捕获的 SQL 和相关的执行属性可存储在数据库 SQL 管理存储库 中,该存储库提高了安全性并提供了到 DBA 的捕获信息的集中控制。将捕获的 SQL 和执行属性放在一个位置,可减少在绑定和执行过程中出现的错误。SQL 管理存储库包含 PQ 运行时配置、PDQXML 和增量PDQXML,如图 3 所示。这些项目可由 Optim Development Studio 或命令行工具管理,以访问数据库并在数据库上创建数据包等。当执行应用程序时,pureQuery Runtime 还可使用这些项目访问相应的属性。
图 3. SQL 管理存储库简介
下面是使用 SQL 管理存储库的一些优势:
在开发时可以继续使用文件系统中的捕获文件,之前的版本就支持这种操作。然后在准备部署时可以选择将其上载到 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。
要将捕获的文件和属性上载到存储库,请执行下列操作:
清单 3. 删除了捕获文件位置的 pdq.properties 文件
pdq.captureMode=ON pdq.executionMode=STATIC pdq.sqlLiteralSubstitution=ENABLE |
图 4. 创建一个到 SQL 管理存储库的连接
图 5. 创建运行时组的步骤
图 6. 将运行时组版本标记为活动
执行应用程序时,pureQuery 运行时使用 SQL 管理存储库中的此捕获文件 (pureQueryXml) 及其相关属性。
处理生产应用程序的后续更改
本部分介绍如何对生产应用程序进行更改,以及如何轻松地管理这些更改。对于示例场景,在应用程序投入生产的数月之后,为应用程序添加了新功能(包括新 SQL),现在需要部署该应用程序。本部分介绍如何复制此处的环境,以及如何使用新的修复包功能将这些更改部署到生产应用程序中。
在生产应用程序中创建更改
在本部分中,将撤销 update 和 delete 方法的注释以创建其他 SQL。然后可以在捕获模式中运行应用程序以收集新添加的 SQL。可以选择直接在 SQL 管理存储库的运行时组中存储新捕获的 SQL。操作步骤如下所示:
清单 4. pdq.properties 存储库值
pdq.finalRepositoryProperties = ;user=;password=; pdq.properties=CREDIT_GRP pdq.repositoryRequired=AtStartupAndForOutput |
处理生产应用程序的更改
本部分介绍如何查看存储库中增量收集的 SQL,以及如何为新捕获的 SQL 设置配置并绑定所需的属性。还介绍了如何在这些新更改上更新(合并更改和配置)和运行绑定操作。可选择单独运行这些步骤,也可以选择在一个步骤中运行所有步骤,使持续维护变得更容易。请执行下列操作:
图 7. Common Repository Explorer
图 8. 运行所有步骤以绑定和上载更改
注意,可以根据需要将 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,无需在捕获模式下再次运行应用程序。
请按以下步骤执行操作:
清单 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)"); |
图 9. SQL 大纲中的 Database 选项卡
提示:还可以从动态语句缓存或使用其他首选机制手动创建 .sql 文件。有了 .sql 文件后,可以将 SQL 和现有捕获文件组合使用,操作方法如下所示。
图 10. Common Repository Explorer
按照架构或表自动分组包中的 SQL
为确保正确支持多个架构,配置实用工具中的一个新选项支持按字符串分组 SQL。通过在字符串值中提供架构或表名称,可以轻松使用数据包的某一架构或表分组所有 SQL。此新选项称为 groupSQLByStrings。对于此示例场景,可使用它根据 GOSALESRT 架构分组。操作步骤如下所示:
清单 6. 添加属性
\CreditCardApp\pureQueryFolder\capture. pdqxml= -rootPkgName Credit -groupSQLByStrings (GOSALESRT) |
自动删除旧的未使用的 SQL
要确保最终删除引用较旧架构的旧 SQL 语句,可使用配置实用工具中名为 removeInactiveForDays 的新选项删除已有几天未执行的 SQL。在脚本中定期运行此选项可确保自动清理捕获文件以删除未使用的 SQL。本部分介绍如何使用 removeInactiveForDays 选项。
操作步骤如下所示:
清单 7. 添加属性以删除未使用的 SQL
\CreditCardApp\pureQueryFolder\capture. pdqxml= -rootPkgName Credit -groupSQLByStrings (GOSALESRT) -cleanConfigure TRUE -removeInactiveForDays 60 |
cleanConfigure 选项触发文件的重新配置。不活动的 SQL 将在 60 天之后删除。
查看和执行更改
DBA 并不能总是看到应用程序和 SQL 中的所有更改类型,但有了此信息有助于理解和管理更改。现在可使用更改报告功能查看带有新 SQL 的捕获文件与存储库中已存在文件之间的不同。批准了更改后,可将此文件上载到存储库中。操作步骤如下所示:
图 11. 合并和配置带有新 SQL 的捕获文件
这会使用重新排列数据包和删除旧 SQL 的属性合并和配置文件。
图 12. 根据架构分组的新语句
图 13. 更改报告
图 14. 绑定已更新和配置的文件
图 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/