上一篇 | 下一篇

用于 J2EE 开发: 成本/收益分析

发布: 2008-7-01 13:13 | 作者: admin | 来源: | 查看: 0次

用于 J2EE 开发: 成本/收益分析

热 荐

【字体:小 大】

用于 J2EE 开发: 成本/收益分析

作者:- 文章来源:- 点击数:861 更新时间:2006-4-22

C. M. Saracco, IBM 硅谷实验室, 加利福尼亚圣何塞

Susanne Englert, 加利福尼亚圣何塞, IBM 硅谷实验室

Ingmar Gebert, 加利福尼亚圣何塞, IBM 硅谷实验室

2003 年 5 月 J2EE 开发人员们,请注意了!通过使用业务合并方案,我们的几位作者自己体验到了使用 DB2 Information Integrator 访问异构后端数据源(包括 Oracle、DB2 UDB 和 Microsoft Excel)时,他们的代码是多么更简单。这是由三部分组成的系列文章的第一部分。

简介

您听过这样一个故事:还有另一种新技术可望使 Java 2 企业版(Java 2 Enterprise Edition,J2EE)开发人员更轻松地工作 - 这个突破可以使开发工作减少 30%、40% 甚至 50%。提供该技术的新软件简化了复杂任务。提供该技术的新产品增强了您现有 Java™ 集成开发平台和 Web 应用程序服务器环境。

我们也听过这个故事。我们是在同事们讨论 IBM 新的 DB2® Information Integrator 时听到的,这个产品旨在提供数据的单点映像,这些数据驻留在不同平台上、以不同格式存储并可通过不同的应用程序编程接口(API)来访问。而我们只想知道:对于承担构建处理异构数据所需的 Web 组件这个任务的 J2EE 程序员而言,这种技术可以完成什么。

在本系列文章中,我们将讨论我们构建的一系列 servlet,它们需要访问散布于多个数据源(在我们的例子中,是 DB2、Oracle 和 Excel)上的数据。一组 servlet 使用了 DB2 Information Integrator 来模拟这些数据源的单点映像,而另一组直接访问所需的每个数据源。

其结果令我们吃惊,而我们计划和您分享这些结果。

在这个由三部分组成的系列文章中,我们将带您查看我们的工作,这样您就可以自己比较不同的实现,并了解我们必须克服的难题。本文是该系列文章的第一篇,将描述我们的项目并总结我们的重大发现。第二篇文章将集中讨论我们的开发工作,带您更仔细地查看设计和编码问题。最后一篇文章将描述我们遇到的性能问题,并提供我们的联邦及本机数据访问实现的一些性能数据。

但如果您已经迫不及待地想要了解最终结果,那么结果就是:我们发现,当我们使用 DB2 Information Integrator 中的联邦数据库技术时,我们的开发工作比直接使用每个数据源的确轻松得多 - 而且快得多。特别是,我们削减了大约 40% 的 servlet 代码,而且缩短了超过 50% 的设计、开发和测试周期。这比我们期望的还要好。

另外,可能同样重要的是:我们发现,尽管不同查询的结果相差很大(有些联邦查询比直接数据访问快,而另外一些有点慢),但是基于联邦的 servlet 的性能比直接访问数据的 servlet 更具竞争力。当然,根据发出的特定查询和实现的 servlet 设计,结果可能会不同。但是您将有机会回顾我们的工作,这样您就会明白它可能是怎样反映您组织中常见的那类工作。

关键技术概述

理解联邦 DBMS 技术和 servlet 是理解我们项目的关键。这里我们将只描述这两者的几个要点,因为许多网站(包括本网站)已经发布了无数有关这些主题的教程和技术文章。如果您已经很熟悉联邦 DBMS 和服务器端 Java 技术,那么跳过这一节,开始阅读 我们做了什么。

理解联邦 DBMS

联邦 DBMS 提供了到多个数据源的单一应用程序编程接口(API)。这些数据源可能运行在不同的硬件和操作系统平台上,可能是由不同供应商开发的,也可能使用了不同的 API(包括不同的 SQL“方言”)。程序员使用联邦服务器以比本来可能的抽象级别更高的级别工作,因为该服务器提供了物理上异构的数据的单点映像。使用表(或其它数据对象,如文件)的 昵称(nickname)为程序员提供了位置透明性,使他们不必确切知道所期望的数据驻留在何处。功能补偿可以掩盖不同供应商产品之间的差别,并模拟不受给定数据源本机支持的能力。多点连接(join)和联合(union)促进了来自多个数据源的数据的集成。

各个商业产品的数据源支持和产品功能各不相同。DB2 Information Integrator 支持 IBM® DB2 系列的所有成员、IBM Informix® 、Microsoft® SQL Server、Oracle、Sybase、支持 ODBC 的数据源、XML、Web 服务、WebSphere® MQ、Excel 电子表格、平面文件以及生命科学数据源。此外,DB2 Information Integrator 还可以通过 IBM Lotus® Extended Search 访问 Web 搜索引擎、内容资源库、电子邮件数据库和其它基于内容的数据源。

因为 DB2 Information Integrator 包含功能齐全的关系 DBMS,所以它可以存储和管理它自己的本地数据对象,如表、视图和索引。它的优化器被设计成考虑其环境的异构和物理分布的特性,这样它可以为每个查询选择一个有效的数据访问策略。这个 DB2 Information Integrator 发行版支持在单个事务内从多个数据源读取数据;支持针对每个事务一个数据源的写操作。

理解服务器端 Java 组件

在许多 Web 应用程序服务器环境中,很多公司会经常使用 servlet 和 Enterprise JavaBeans(EJB)以实现关键的业务逻辑,包括对可能驻留在远程服务器上的企业数据的访问。servlet 是这两种技术中较早出现的一种,它们经常被用作公共网关接口(Common Gateway Interface,CGI)脚本的替代品,以支持 Web 页面的动态内容。servlet 依靠请求-响应编程模型。

Java 编程环境提供了包含用于编写 servlet 的接口和类的包,并对它们的构造强加了特定的编程要求。例如,servlet 包含了基本的生命周期方法(如 init、 service和 destroy),服务器会在适当的时候自动调用它们。程序员可以根据需要覆盖这些方法,通常他们确实也是这样做的。例如,我们的 servlet 在初始化时查找 DataSource 对象(用于连接)以使开销最小。大多数 servlet 工作的大部分在其 doGet和 doPost方法中进行。我们的 servlet 使用这些方法来执行适当的查询并返回结果。

字号: | 推荐给好友

31/3123>

评分:0

我来说两句