快速业务通道

跨多个数据源的J2EE开发: 细节探讨 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
- // select for query #3 query3[1]= "SELECT SUM(o_totalprice) AS total_ordered, COUNT(*) AS num_orders, c_custkey, c_name " +   "FROM tpcd.customer, tpcd.orders " +   "WHERE o_custkey = c_custkey " +   "AND o_orderdate >= ? " +   "AND o_orderdate < ? " +   "GROUP BY c_custkey, c_name"; // ------------------------ Oracle remote ------------------------- // select for query #3 query3[2]= "SELECT c_custkey, c_name, SUM(o_totalprice) AS total_ordered, COUNT(*) AS num_orders " +   "FROM customer, orders " +   "WHERE o_custkey = c_custkey " +   "AND o_orderdate >= ? " +   "AND o_orderdate < ? " +   "GROUP BY c_custkey, c_name"; // ------------------------ Excel local --------------------------- // select for query #3 query3[3]= "SELECT c_custkey, c_name, SUM(o_totalprice) AS total_ordered, COUNT(*) AS num_orders " +   "FROM [customer$], [orders$] " +   "WHERE o_custkey = c_custkey " +   "AND o_orderdate >= ? " +   "AND o_orderdate < ? " +   "GROUP BY c_custkey, c_name "; // insert statement for intermediate data for query #3 temp_insert[3]= "INSERT INTO temp_query3(c_custkey, c_name, total_ordered, num_orders) " +   "VALUES(?, ?, ?, ?)"; // final statement for query #3 temp_select[3]= "SELECT c_custkey, c_name, SUM(total_ordered) AS total_ordered, SUM(num_orders) AS num_orders " +   "FROM temp_query3 " +   "GROUP BY c_custkey, c_name " +   "ORDER BY total_ordered DESC " +   "FETCH FIRST 10 ROWS ONLY"; // delete statements for temporary tables temp_delete[3] = "DELETE FROM temp_query3";

跨多个数据源的J2EE开发: 细节探讨(9)

时间:2011-04-11 IBM C. M. Saracco

查询 4 和 5 与前三个查询在某些重要的方面是不同的。前三个查询只对三个数据源的 数据的昵称的 UNION ALL 视图进行操作。查询 4 执行跨地点连接;也就是说,它处理由 远程 DB2 UDB 系统管理的某些数据和远程 Oracle 系统管理的某些数据。它不使用 UNION ALL 视图。查询 5 使用了这样的一个视图,但是将该视图和特定于某个数据源的数据相连 接。这些查询的性质迫使我们修改我们的 servlet 逻辑。

我们将查询 4 分成两段:一段包含特定于远程 DB2 服务器的所有搜索谓词,另外一段 包含特定于远程 Oracle 服务器的所有搜索谓词。我们为每段构造 SELECT 语句,对远程 DB2 UDB 和 Oracle 数据库执行这些语句,并将结果插入我们本地 DB2 系统的辅助表。然 后我们发出最后的 SELECT 语句,该语句连接需要满足我们原始查询的辅助表。

如果您做过很多的 DBMS 应用程序编程工作,那么您知道这是我们能编写 servlet 逻 辑的唯一方法。我们考虑过其它可选的方法,例如在我们的 servlet 中编写等效的嵌套循 环,但是我们不信这里面有全胜的赢家。如果我们预先知道 DB2 UDB 或 Oracle 查询都将 返回一个很小的结果集,那么我们可以推断,如果我们使用这些结果进一步限制其它数据 源返回满足条件的行的数目,那么将改善性能。

但是我们无法知道这些。我们无法访问全局统计信息,而且我们不能假定 J2EE 开发者 熟

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号