我们使用标准JDBC调用来构建我们的servlet,通过DB2 Information Integrator和本地客户端接口(无DB2 Information Integrator)访问数据。只要有可能,我们就使用DataSource连接(连接池),这样能够更有效的利用系统资源。更进一步,我们通过执行JNDI在每个servlet的init方法中查找DataSource,设法维护编码效率。
当我们通过DB2 Information Integrator访问远程数据的时候,我们的servlet发出针对别名或者跨多个别名的UNION ALL视图的查询。当直接访问远程数据的时候,我们的servlet发出针对每个数据源的查询。然后,我们必须确定如何整合返回的结果。
如果这听上去很含糊,那么让我们研究一个简单的例子。 想象我们需要构建一个servlet,不使用DB2 Information Integrator,报告一套零件的最低供应价格。 在与我们三个数据源中的每一个连接之后,我们的servlet将查询每一个数据源上PARTSUPP数据,来找到这些零件的最低供应价格。 (SQL语句可能看起来像Select MIN ( ps_supplycost) from PARTSUPP where ps_partkey IN ( list of ps_partkeys) group by ps_partkey。) servlet然后将把价格信息储存到一个本地临时表中,这个表两个列:ps_partkey和ps_supplycost。 最后,这个servlet可能发出一个针对本地表的查询,计算最小的ps_supplycost值,使用ps_partkey分组。
紧接着,是实现我们直接使用直接数据访问的servlet的基本程序逻辑。 当然,程序比仅仅编写一个简单的查询要更复杂,我们要编写当我们使用DB2 Information Integrator进行数据访问的时候,我们要做什么。但是到底有多复杂呢?请接着向下读。
现在,你可能对我们从我们的工作中了解到的东西感到好奇。 我们将在本文中总结我们的结论,然后在后续的文章中向你说明我们怎样得到这些结论。 但是归根到底还是那句话:我们发现,当我们使用DB2 Information Integrator的时候,构建servlet更为容易。