Optim Development Studio 的新特性,第 1 部分: 快速跟踪异构数据库上的应用程序开发

Optim™ Development Studio(以前称为 Data Studio Developer)是 IBM 在实现其 Integrated Data Management 愿景方面取得的重大进展。本文介绍开发人员、架构师和数据库管理员(DBA)如何在包含 Oracle 和 IBM 数据库的异构数据库环境中通过一些新的、高效的方法进行协作。学习如何使用 Optim Development Studio 和 pureQuery 更快速地跟踪您的应用程序的性能。

Sonali Surange, 软件架构师, IBM

Sonali Surange 的照片Sonali Surange 是 IBM 硅谷实验室的一位 Optim Development Studio pureQuery 工具架构师。此前,Sonali 领导了用于 IBM 数据库的 Visual Studio .Net 工具的几个关键组件的开发工作。



2011 年 4 月 06 日

免费下载:IBM® Optim® Development Studio and Optim® pureQuery Runtime 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

2009 年 6 月,IBM 宣布将几个以前称为 Data Studio 的产品更新并更名为 Optim。Optim 解决方案的目标是交付 Integrated Data Management 的愿景。Integrated Data Management 被定义为一个集成的、模块化环境,用于管理企业应用程序数据,并跨异构环境、从需求到退役(retirement)优化数据驱动的应用程序。关键的异构数据开发和数据访问新功能在 Optim Development Studio 和 Optim pureQuery Runtime(以前分别称为 Data Studio Developer 和 Data Studio pureQuery Runtime)中交付。

开发环境不会只包含来自一个供应商的数据库,一个组织中的应用程序不会只使用一个单一数据库访问方法。类似地,一个开发组织中的团队成员很少局限于执行一个任务。实际情况是,开发人员、DBA 和架构师任务经常重叠,根据组织规模,这些任务可能只由一个人完成。

Optim Development Studio 的终极目标是:提供一个集成开发环境,帮助简化各个项目之间的技术转移,支持数据架构师、DBA 和开发人员等角色之间的协作,加快开发速度,以及跨各种不同的数据库环境改善应用程序性能。另外,经过改进的协作总体上肯定更符合业务目标。例如,改进后的协作能够确保当一个应用程序或数据通过开发和部署时,围绕数据隐私的重要要求不会被忽略。

Optim Development Studio 能改进您的数据访问,并提供一些工具来加速 Oracle 和 IBM 数据库(DB2® 系列和 Informix® Dynamic Server)上的迭代测试。除了能够在开发过程中识别性能热点外,开发人员还能在开发阶段及早地轻松调优 SQL,与应用程序移动到测试或生产阶段相比,在开发阶段更正错误更容易,成本也更低。

Optim Development Studio 2.2 版能够提供强大的集成,这种集成连接任务之间的点和需要执行的角色,支持团队协作,提供巨大的生产力提升,鼓励并支持迭代测试,以及改善数据访问性能。

本文使用的样例应用程序

本文使用一个简单的 Oracle 信用卡应用程序,该应用程序的编写部分采用了带 pureQuery 注释的编程风格(参见 参考资料 了解 pureQuery API 相关信息)。该应用程序的有些部分已经处于生产阶段,它们使用 JDBC 编写。存储信用卡信息的数据库表包含一些敏感信息,比如信用卡号和有效日期。说明这一点很重要,因为这个发布版中的一些关键增强涉及如何在开发中处理私有数据。

本文在一个较高的层面上介绍我们的应用程序的基本生命周期,将其作为一个框架来演示 Optim Development Studio 中的一些新功能,其中包括以下主题:

体验同时适用 Oracle 和 IBM 数据库的统一可用性和生产力

如果您的组织需要在 IBM 和 Oracle 数据库上进行异构数据库和数据库应用程序开发,那么 Optim Development Studio 2.2 将会减少针对 Oracle 和 IBM 数据库采用统一用户界面的学习曲线。

您可以预期生产力提升,因为 Development Studio 2.2 和 Data Studio Developer 的早期版本的大多数好处现在都可用于 Oracle 数据库。参考 数据库特性比较表 了解具体细节。

使用 pureQuery 数据访问方法构建针对 Oracle 的 Java 应用程序

图 1、2 和 3 展示了为 Oracle 上的信用卡表创建一个 pureQuery 数据访问层有多么简单。

图 1. 从 Oracle 数据库对象生成 pureQuery 代码
屏幕截图:Data Source Explorer 显示 CUST_CRDTCRD 被右键单击,Generate pureQuery Code 从其下拉列表中选中。标注文本显示:

如果您的数据库对象包含空格或下划线,那么您可以对您的 Java bean 和字段名轻松采用 “驼峰式” 大小写格式。图 2 展示了如何使用 “驼峰式” 大小写格式偏好生成代码。

图 2. 使用 “驼峰式” 大小写格式从表生成使用注释的编程风格
两个屏幕截图。在第一个屏幕截图中,Preferences 窗口显示左边选中了 pureQuery,右边选中了 Use Camel Case When Generating Defaults for Java Names。标注文本显示:

当您从单独的 SQL 语句或从包含 SQL 语句的文件生成代码时,可以指定参数类型。图 3 展示当您从一个或多个 SQL 语句生成 beans 时,可以可选地更改参数类型。

图 3. 从 SQL 语句生成代码时,可以根据需要更改参数类型,或者保持默认值
两个屏幕截图。在第一个屏幕截图中,SELECT CRDTCRD_ID, CUST_CODE... 被右键单击,pureQuery > Generate purQuery Code 被选中。在第二个屏幕截图中,Generate pureQuery Code from an SQL Statement 窗口显示:Parameters Name: ?1,Parameter Type: NUMERIC,Java name: param1 和 Java type: BigDecimal。

提高构建 Java 应用程序(Oracle 和 IBM 数据库)的生产力

SQL 内容助手提供 JDBC、JPA 中的原生 SQL、Hibernate 代码和 pureQuery 代码的验证、高亮显示和其他 SQL 编辑好处,以便帮助开发人员尽快找出错误。图 4 展示了一个示例,该示例演示了 Ctrl-空格(或您偏爱的内容助手默认快捷键)提供了 JDBC 中的 FROM 子句的适当表名。

图 4. SQL 内容助手和高亮显示
屏幕截图:SELECT CRDTCRD_ID, CUST_CODE... 被右键单击,CRDTCRD_EXP_DATE - DATE 被从下拉列表中选中。

关于 Oracle 语法检查的一个说明

SQL 99 语法可用于 Oracle。在这个发布中,您可以选择关闭 SQL 验证支持,或者对使用 Oracle 特有语法的 Oracle 应用程序,将错误显示为警告。

洞察发出的 SQL 和相关的性能指标

对于访问 Oracle 数据库的任何新的或现有的 Java 应用程序 — 即使是使用 Hibernate 这样的框架创建的,您都可以看到发出的 SQL 语句和相关的性能指标,比如频率和运行时间(elapsed time)。要将 pureQuery 功能用于现有 Java 代码,您需要在应用程序运行时捕获 SQL。这个功能称为客户端优化(client optimization)参考资料 中的教程 “Optimize existing JDBC applications with pureQuery” 介绍了该功能。

Oracle 和 IBM 数据库的性能指标

此前,性能指标只适用内联风格应用程序,以及使用客户端优化为其捕获 SQL 的应用程序。在 Optim Version 2.2 中,这个功能也适用使用 pureQuery 注释的编程风格应用程序。

图 5 展示了使用 pureQuery 注释编程风格的信用卡应用程序的性能指标,它们能够帮助识别可能需要进一步调优的区域。

图 5. 使用注释的编程风格的性能统计数据
三个屏幕截图。在第一个屏幕截图中,CustCrdcrdDataTest.java 被右键单击,Run As > Run Configurations 被选中,CustCrdtcrdDataTest 在生成的 Run Configurations 窗口中高亮显示。标注文本显示:

确定(Oracle 和 IBM 数据库的)JRE 和 pureQuery 运行时的新助手方法

对于 Oracle 和 IBM pureQuery 应用程序,您可以确定您的应用程序使用的是哪个 JRE,还可以确定使用的 JDBC 驱动程序和 pureQuery 运行时版本。这可以帮助确保应用程序使用正确的先决条件级别。

您的 pureQuery 注释或内联风格应用程序生成的 SampleUtil 类中提供了这样一个示例,如清单 1 所示。您可以执行这个类的助手方法,查看您的应用程序使用的特性和运行时版本。

清单 1. SampleUtil 类
		// Get information on function and versions 
		// of pureQuery and Java runtime environments	
	publicstaticvoid main(String[] args)
	{
		System.out.println( com.ibm.pdq.tools.DataVersion.getVersion());
		System.out.println( com.ibm.pdq.tools.DataVersion.getConfiguration());
		System.out.println( com.ibm.pdq.tools.DataVersion.getFeatures());
		System.out.println( com.ibm.pdq.tools.DataVersion.validate()); 

	}

图 6 显示了返回的信息。

图 6. 获取 JRE 和 pureQuery 运行时和版本相关信息以及支持的特性的相关信息
两个屏幕截图。在第一个屏幕截图中,SampleUtil.java 被右键单击,标注文本显示:

替换现有 Oracle 应用程序中的 SQL — 不更改代码

像此前可用于 IBM 数据库那样,您可以捕获正在运行的应用程序的 SQL,然后修改生成的捕获文件,使用经过调优的 SQL 替换性能较差的 SQL,无需访问应用程序源代码。这种方法对于一些关键情况很有用,在那些情况下,您至少需要修复一个紧急 SQL 问题,但等不及供应商或开发人员提供修复程序。通过 Optim Development Studio,SQL 替换功能现在已经扩展到 Oracle(参见 参考资料 了解更多信息)。

特定于 Oracle 的特性

查找关于以下特定于 Oracle 的特性的更多信息:

  • 在 Oracle 和 IBM 上编辑、运行、调试和部署 PL/SQL 流程
  • 使用新的 CLPPlus 运行命令

Optim 2.2 支持 Oracle 和 IBM 数据库作为文本比较两个 SQL 语句。无论您在使用 pureQuery XML 编辑器编辑捕获文件,还是在查看 SQL 大纲,都可以进行这种比较。这不仅可以在处理大型 SQL 语句时改善可读性,还可以使用 Eclipse 文本比较特性轻松进行比较并更改。

图 7 展示了如何使用一个更好的语句替换一个 从 Oracle 应用程序捕获的 SELECT 语句。这两个 SQL 语句作为文本比较,以便轻松查看并修改。

图 7. 作为文本比较两个 SQL 语句
三个屏幕截图。在第一个屏幕截图中,pdq.properties 被选中,pdq.enableDynamicSQLReplacement=true 被圈住。标注文本显示:

解释 SQL 大纲(IBM 和 Oracle)中可用的信息

对于 Oracle(版本 10.1 或更高)和 IBM 数据库,您可以洞察您的 SQL 的健康状况,并确定 SQL 是否应该进一步调优。您可以获取以下一些信息:预计成本,是否使用索引,使用了多少联接,等等。图 8 展示了 SQL 大纲如何显示这些信息。

图 8. 解释 SQL 大纲中的信息
三个屏幕截图。在第一个屏幕截图中,pureQuery Background EXPLAIN 被选中,enable Background EXPLAIN 被选中。标注文本显示:

通过测试、从建模实施数据隐私要求

生产数据库通常包含敏感信息,比如信用卡号和社会保险号。当数据架构师使用 InfoSphere™ Data Architect 为这样的数据库创建数据模型时,他们能够识别哪些属性或列包含敏感信息,架构师能够指定适当的隐私策略来用于它们。

然后,通过关联这个模型和架构师的数据库,开发人员能够轻松识别哪些列被标识为包含敏感信息。这能够帮助他们在如何处理他们的应用程序中的那些数据方面维护依从性。再进一步,他们能够看到他们的应用程序中有哪些地方那些私有列正在上下文中使用,以确保他们没有执行不当操作,比如打印那些列中的数据。

提示:如果您担任一个双重角色,则可以与 InfoSphere Data Architect 共享 shell,以便从您的开发桌面访问数据架构师功能。

现在您可以关联来自 InfoSphere Data Architect 的一个物理数据模型和公共连接存储库中的一个连接定义。(要了解关于公共连接的更多信息,请参阅 参考资料 中的 Common Connections 文章。)从连接存储库创建连接的团队成员现在可以使用它们的连接访问同一个模型,确保一个统一的开发和架构握手。与一个包含隐私信息的模型关联的任何连接现在可以使用隐私图标 Data Explorer privacy icon 在 Data Source Explorer 中显示那种关联。使用包含隐私信息列的 SQL 的应用程序使用隐私图标 SQL privacy icon 显示那些 SQL。

在图 9 中,信用卡物理模型与数据库连接关联。结果,信用卡列在开发人员环境中显示为私有。

图 9. 关联模型和连接并查看私有列
三个屏幕截图。在第一个屏幕截图中,Data Project Explorer 显示 CREDIT CARD NUMBER 被右键单击,生成的 Properties 窗口显示 Data Privacy 和 Privacy Policy Type: Credit Card Number (CCN) 被高亮显示。标注文本显示:

前面提到过,开发人员可以使用 SQL 大纲来查看哪些 SQL 语句包含敏感信息,以及这些 SQL 语句出现在应用程序中的什么地方。图 10 显示一个更新语句正在操作一个包含私有数据的列。

图 10. 在上下文中显示 “私有” 列的使用
屏幕截图:SQL Outline 选项卡显示 UPDATE CUST_CRDTCRD SET... 和 CRDTCRD_PRIM_ACCT_NBR 高亮显示。

显示使用私有列的 SQL 语句,如图 11 所示使用过滤器。另外,您可以在物理数据模型中获取这个列应用的隐私策略的有关细节,并轻松导航到关联的物理数据模型本身。

图 11. 只显示使用私有列的那些语句
三个屏幕截图。在第一个屏幕截图中,Filter 窗口显示包含标记为私有的列的 SQL 被选中。在第二个屏幕截图中,SQL Outline 选项卡显示 Schemas。在 Under crdtCrdapp 下方,CRDTCRD_PRIM_ACCT_NBR 被右键单击,以显示 Find in Physical Data Model。在第三个屏幕截图中,Properties 选项卡高亮显示 Classification 和 Credit Card Number (CCN)。

关于 SQL 大纲中的过滤器的更多信息

额外的 SQL 大纲过滤增强现在支持在选择、插入、更新和删除类型语句上进行过滤。

使用 pureQuery 应用程序时,可以决定是否将敏感值打印在控制台上。图 12 展示一个信用卡号的值如何流经应用程序。另外,一个过滤器被应用,以便查看这个值是否被打印到控制台,以及在哪里被打印到控制台上。

图 12. 识别您的应用程序中可能将敏感信息打印到控制台上的所有位置
三个屏幕截图。在第一个屏幕截图中,SELECT CRDTCRD_ID、CUST_CODE、CRDTCRD PRIM_ACCT_NBR、CRDTCRD_SERV CQ 被右键单击,pureQuery > Source Code Analysis > Analyze Column Value Dependency 被高亮显示。标注文本显示

现在,您已经洞察到了在一个针对 Oracle 运行的 pureQuery 应用程序中如何使用敏感信息。注意,尽管这个示例主要关注 pureQuery 数据访问,但当 SQL 语句已经被使用客户端优化捕获时,这些特性在现有的 JDBC 应用程序(比如 Hibernate 或 JPA)上也可用。


快速从异构数据库开发开发数据库或测试数据库

继续这个示例,假设您正在将这个基于 JDBC 的 Oracle 应用程序的一部分部署到 DB2 上。为此,创建一个反映 Oracle 数据库特征的 DB2 开发数据库,同时保护私有数据。

支持复制粘贴功能的服务器

  • 如果在 Oracle 和 DB2 之间复制,使用 DB2 for LUW 9.7 in Oracle 兼容模式和 Oracle Version 10 或 Version 11。
  • 如果从 Oracle 复制到 Oracle,Oracle 必须处于 Version 10 或 Version 11。
  • 如果在 LUW 上从 DB2 复制到 DB2,使用 Versions 9.5 和 9.7。

Optim Development Studio 提供一种简单的方法来在开发或测试环境中的某个功能需要的数据库之间复制和粘贴对象和数据子集。另外,如果测试数据比较敏感且必须被反识别(de-identified),Optim Development Studio 能够为 Optim Test Data Management 解决方案生成适当的输入,以便提取和屏蔽要迁移的数据。

可以在同构数据库(从 Oracle 到 Oracle,在 DB2 for Linux®, UNIX®, or Windows® [LUW] 数据库之间)或者在异构数据库(从 Oracle 到 DB2 for LUW 或从 DB2 for LUW 到 Oracle)之间移动或复制对象。可以一次复制整个数据库、多个相关对象或单个对象。

图 13 和 14 显示了从 Oracle 复制信用卡表并将其粘贴到 DB2(带有可选的数据隐私屏蔽指定)的序列。注意,客户信用卡表对主账户编号拥有隐私图标。

图 13. 从 Oracle 生产数据库复制
屏幕截图:Data Source Explorer 选项卡显示 CUST_CRDTCRD 被右键单击,Copy 在下拉列表中被选中。

图 14 展示了到 DB2 中的粘贴操作。如果您指定您需要数据隐私,Optim Development Studio 将执行以下操作:

  • 复制指定的数据库对象
  • 生成适当的 Optim 导出文件,Optim Test Data Management Solution 将使用该文件将数据(或一个引用上完整的子集)复制到新创建的对象并进行适当的屏蔽。参见 参考资料 观看展示 Data Privacy Option 正在运行的 Optim Test Data Management 的视频。
图 14. 粘贴到 DB2 并指定数据隐私屏蔽
三个屏幕截图。在第一个屏幕截图中,Data Source Explorer 选项卡显示 GS_DB > GOSALESCT 被右键单击,Paste 在下拉列表中被选中。在第二个屏幕截图中,Paste Database Objects 窗口显示 Paste with a Test Data Subset and Optional Privacy Masking 被选中。在第三个屏幕截图中,Paste Database Objects 窗口显示 Export location: optimExportFile.txt 被高亮显示。

推荐:Optim Development Studio 中的复制粘贴特性在创建小型开发或测试环境时提高生产力。它不旨在迁移大量对象或大量数据。对于大型迁移或生产类环境的创建,使用其他工具,比如 DB2 High Performance Unload 来进行大量数据的快速迁移,或者使用 Optim Test Data Management 来获取复制完成业务对象方面的更多灵活性。

集成 Optim Query Tuner,帮助开发人员编写高效 SQL

您创建了 DB2 开发数据库并将 JDBC 应用程序迁移到那里,现在可以根据需要调优它的 SQL,优化应用程序以访问 DB2。

开发人员通常不关注调优 SQL。但是,如果这个任务得到简化,那么开发人员可以学习 SQL 调优技巧,并在开发过程中积极地改进应用程序性能,从而避免开发后和生产阶段成本高昂的更改。这正是 Optim Query Tuner 的目标,它能够提供专家建议来帮助开发人员编写更高效的 SQL,或者至少使开发人员拥有足够的信息来向 DBA 询问新索引或统计数据。

尽管 Optim Query Tuner 作为一个单独的产品可用,但当它安装在一个共享 shell 中时可以与 Optim Development Studio 无线集成,从而为查询调优提供一些自然的启动点,比如从 Java® 编辑器内部,或从 SQL 大纲视图和 pureQuery XML 编辑器。

图 15 显示了 DB2 上的示例信用卡应用程序的 SQL 大纲视图,还列示了预计的成本信息。您可以选择成本最低的查询,并可以从那个视图直接启动 Optim Query Tuner。

图 15. 选择最昂贵的查询并调优
三个屏幕截图。在第一个屏幕截图中,Optim Query Tuner 选项卡显示 Choose Tuning Activities 被高亮显示。在第二个屏幕截图中,Choose Tuning Activities 窗口显示所有活动都被选中,OK 被高亮显示。在第三个屏幕截图中,SQL Outline 选项卡显示 crdtCrdAppDB2 行被右键单击,Tune SQL 被从下拉列表中选中。Cost: 153.25 的标注文本显示:

现在查看提供的建议并进行相应更改。在本例中,Optim Query Tuner 建议您更新统计数据,您可以直接从 Query Tuner 工具执行更新操作。(根据开发人员是否管理自己的开发数据库,他可能需要请求 DBA 运行统计数据。)

图 16. 来自 Optim Query Tuner 的建议
两个屏幕截图。在第一个屏幕截图中,crdtCrdappDB2_Query 选项卡高亮显示 Formatted Query,并显示 Advisor Recommendation 建议 Statistics Advisor 是一个 High Priority 项目。在第二个屏幕截图中,Statistics Recommendation Detail 窗口显示 RUNSTATS ON TABLE 'GOSALESCT' 控制语句被右键单击,Run 被高亮显示。

现在您可以再次查看 SQL 大纲,您将看到,成本估计降低了,这仅仅是因为执行这个简单任务。

图 17. 检索新 SQL 的解释信息,查看降低后的成本
屏幕截图:SQL Outline 选项卡显示 SELECT CRDTCRD_ID, CUST_CODE... 行被右键单击,Retrieve EXPLAIN Data 被在下拉列表中高亮显示。Cost: 145.35 也被高亮显示。标注文本显示:

提高使用静态 SQL 的能力,改进 DB2 应用程序的性能

可以使用静态 SQL 进一步优化 DB2 上的应用程序。这将使您实现以下增强:

  • 在捕获过程中用参数替换文本
  • 绑定灵活性
  • 有能力保存并比较性能指标。注意,性能指标比较特性在 Oracle 和 IBM 数据库上都可用。

在捕获过程中用参数替换文本

在 Optim Development Studio 和 Optim pureQuery Runtime 的以前发布中,使用文本的 SQL 语句不能受益于静态 SQL 执行,因为捕获过程将每个语句视为不同语句(因为文本中的值变化了)。

现在,Optim pureQuery Runtime 2.2 可以使用参数化的语句替换这样的 SQL 语句,以便许多惟一的 SQL 语句能够合并为一个语句,由此提高动态执行的 SQL 的缓存命中率,或者使其更容易转换为静态 SQL,如图 18 所示。

图 18. 在 pureQuery 捕获过程中用参数替换文本
两个屏幕截图。在第一个屏幕截图中,pdq.properties 和 pdq.sqlLiteralSubstitution=ENABLE 被高亮显示。标注文本显示:

绑定灵活性

下面,将一些 SQL 语句绑定到一个 DB2 包中并使用静态 SQL 执行应用程序,如图 19 所示。还要注意版本 2.2 中的新功能,包括从 SQL 大纲数据库选项卡绑定一个捕获的 pdqxml 中的单个包的能力。还可以选择在后台运行绑定进程,以免干扰可能正在进行的其他工作。

图 19. 绑定单个包
两个屏幕截图。在第一个屏幕截图中,capture.pdq 选项卡显示 INSERT INTO CUST_CRDTCRD... 高亮显示,SQL Outline 选项卡显示 CustCrdcrdData 被重新单击,Bind 从下拉列表被选择。标注文本显示:

保存和比较性能指标的能力

您可以保存您的应用程序的每次执行的性能数据集,并比较各次执行的性能结果。使用性能比较特性,您现在可以比较您的应用程序的动态执行和使用文本替换的静态执行的性能。

图 20 显示示例系统中有一个巨大的性能提升。(注意,根据您的特定执行环境和数据的不同,您的结果可能差别很大。)

图 20. 比较动态执行和使用文本替换的静态 SQL 执行的性能
屏幕截图:SQL Outline 选项卡显示 Compare 被选中,标签为 Number、Total Time 和 Max Time 的列中显示 Database Packages 信息。注意,对于 SELECT CRDTCRD_ID、CUST_CODE,使用文本替换的静态 SQL 的执行时间为 198.05。不使用文本替换的动态 SQL 的执行时间为 301.08。标注文本显示:

在前面几个小节中,您调优了查询并改进了它的预计成本。然后您将使用文本的 SQL 语句转换为参数化的 SQL,以便代码可以使用静态执行模式执行。然后您通过执行这个步骤确认了执行时间性能得到了改进。

下一小节展示当数据库架构需要更改时,Optim Development Studio 如何减少生产中的应用程序的关联成本。

执行增强的影响分析

生产应用程序需要定期更改。可能的原因是业务需求或特性功能发生了变化,因此也要求更改数据库架构。数据库更改通常要求更改用于查询和处理结果的关联 Java 代码。如果您的生产应用程序中缺少某个必要更改,那么就可能会导致应用程序停用。如果您的项目处于开发阶段,今后更改数据库架构可能会导致巨大的代码更改,从而阻碍可交付结果的及时交付并降低质量,进而增加成本。

另外,如果您正在 DB2 上使用静态 SQL,更改 SQL 可能会引发需要重新绑定的现有已部署包中的更改。要最小化包重新绑定导致的混乱,重要的是确保不需要更改的现有包能够保持不变。

更改管理是一项关键任务,应该使用尽可能多的信息来进行管理,以帮助员工做出好的决定。在 Optim Development Studio 中,估计一个即将进行的数据库架构更改对您在生产或开发中的应用程序的影响甚至变得更容易。

这个示例展示一位 DBA 和开发员工如何评估删除 DB2 上的一个信用卡应用程序中的一列 CRDTCRD_EXP_DATE 的影响。可以对正被更名的列和其他数据库架构更改采用类似的方法。

通常,当一位 DBA 提议更改时,他使用数据定义语言(Data Definition Language,DDL)提供脚本 — 比如 ALTER 语句 — 来执行那个更改。要创建 DDL,执行以下操作:

  1. 右键单击 ALTER 脚本,选择 Find reference in SQL outline
  2. 使用 SQL Outline 来查看哪些 SQL 将受到这个更改的影响。从每个 SQL,您可以导航到源代码中需要更改的位置。
  3. 对于其中已经捕获了 SQL 的现有应用程序,您还可能需要管理捕获的 SQL,以便移除任何可能无效的 SQL。如果您需要保存 SQL 语句,可以将其移动到您自己的包。稍后,您可以将新的 SQL 重新捕获到一个新的包或捕获文件中。

要进一步阅读关于从现有应用程序捕获 SQL 和使用静态 SQL 的信息,请参阅 参考资料 中的教程 “Optimize existing JDBC applications with pureQuery”。Optim Development Studio 使得这个过程更加简单,如图 21 所示。

图 21. 找到某个更改影响的 SQL 然后从捕获文件中删除它
两个屏幕截图。在第一个屏幕截图中,Script3.sql 选项卡显示 Alter Table GOALESCT.CUST_CRDTCRD Drop Column CRDTCRD_EXP_DATE 被右键单击,Find Reference in SQL Outline 被选中。标注文本显示

此时,如果对应用程序或数据库包的影响可以接受,那么您或那位 DBA 就可以执行 ALTER 语句。按照以下步骤完成您的应用程序和数据库包需要的更改:

捕获文件编辑器改进摘要

使用改进后的编辑器进一步控制您的捕获文件和 DB2 包的构造方式。您可以:

  • 创建新的包
  • 在两个包之间移动语句
  • 删除现有 SQL 语句或使用兼容 SQL 语句替换它们
  • 使用 Eclipse 中的文本比较特性比较两个 SQL 语句
  • 有选择地绑定包或包中的语句
  • 命名您的包,或者使用工具命名它们
  • 轻松恢复一个 SQL 语句到原始捕获状态,或者将捕获文件恢复为最后一个良好版本
  • 按照数据库对象或 SQL 类型(或其他任何标准)过滤 SQL 语句,这使您能够更轻松地在非常大的捕获文件中找到需要的内容。
  1. 使用 SQL 验证特性来识别代码中需要更改的 SQL 并使用内容助手将其替换为有效的 SQL。这个验证特性可用于 JDBC 应用程序、JPA 中的原生 SQL、Hibernate 应用程序、以及 pureQuery 应用程序。
  2. 重新运行应用程序,捕获它的 SQL。

    使用 Version 2.2,您可以将逻辑上相关的应用程序部分捕获到独立的捕获文件中。这有助于将 DDL 更改的效果局限到那些使用那个已更改的架构的部分的应用程序。

    同样是在 Version 2.2 中,已经被配置和绑定的包可以在捕获文件中标记为 don't touchFINAL。来自一个递增捕获的其他语句然后被捕获到一个新的包中。

  3. 您可以验证来自您的项目的工件对应的包是否存在,方法是在 bindprops 中指定以下内容并运行绑定: defaultOptions = –verifyPackage DETAIL。控制台 打印数据库上已存在(如果有的话)的包的相关信息。您可以轻松看出在更改代码后,哪些 pureQuery 接口或捕获文件需要重新绑定。
  4. 使用这个新特性来绑定来自 SQL 大纲的单个包,以便只绑定更改后的包。或者,您可以在您的 default.bindprops 文件中指定 -differenceOnly TRUE,这只绑定已更改的包。注意,删除绑定包中的一个或多个语句引用的一个列将使数据库上的包无效。

要清理由于这种更改而无效的任何现有包,可以使用这个新功能来找出数据库或架构级别上的无效包。然后您可以同时选中并删除它们,如图 22 所示。

图 22. 从 Data Source Explorer 找出并删除无效包
两个屏幕截图。在第一个屏幕截图中,Data Source Explorer 选项卡显示 Schemas 被右键单击,Find Invalid Packages 被从下拉列表中选中。Find Invalid or Inoperative Packages 窗口显示无效包。在第二个屏幕截图中,GS_DB > Packages 被右键单击,Drop 被从下拉列表中选中。标注文本显示:

理解其他 pureQuery 运行时增强

  • 对于 pureQuery 应用程序,现在您可以指定一些应用程序级属性,这些属性允许您设置应用程序属性而无需重新启动 Web 服务器。
  • 使用新的 SQL 支持,定位的更新比搜索的更新或删除更快。
  • 要使用客户端优化优化现有应用程序,可以在递增式捕获过程中生成多个捕获文件来锁定捕获的信息。然后您可以使用命令行或 Optim Development Studio 工具来合并捕获文件。

比较数据库特性

下表显示每个数据库支持的特性。

表 1. 数据库平台的特性支持
特性DB2 for LUWIDSDB2 for z/OSDB2 for iOracle
pureQuery 代码生成
客户端优化
SQL 编辑特性,比如内容助手、验证、高亮显示
pureQuery、JDBC、JPA、Hibernate
所有 SQL 大纲好处
SQL 大纲中的性能指标和比较
SQL 大纲中的 SQL Explain 数据 10.1 或更高
运行时和 JRE 的助手方法
从建模到测试的数据隐私
快速和轻松测试和开发数据库开发 同构
(9.5 和 9.7)
异构(9.7)
10 和 11
集成 Optim Query Tuner 即将支持
客户端优化捕获过程中的文本替换
应用程序级属性
多个捕获文件和合并
静态 SQL 好处
异构批处理
增强的影响分析

结束语

本文简要介绍了 Optim Development Studio 的一些新特性,对于任何想创建高性能 Java 数据访问代码并跨 Oracle、DB2 和 Informix Dynamic Server 数据库利用生产力和影响分析特性的任何组织而言,这些特性都是必须拥有 的。

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=644961
ArticleTitle=Optim Development Studio 的新特性,第 1 部分: 快速跟踪异构数据库上的应用程序开发
publish-date=04062011