【问题标题】:Joining Information Across DB2 and Oracle Databases Best Practices跨 DB2 和 Oracle 数据库连接信息最佳实践
【发布时间】:2009-04-03 13:46:46
【问题描述】:

我们正在设计一个相当大的棕地应用程序,但遇到了一些问题。

我们在 DB2 数据库中拥有来自仍在加载数据的遗留应用程序的大量信息。我们在我们控制的 Oracle 数据库中也有信息。

我们必须对表执行“JOIN”类型的操作。现在,我正在考虑将 DB2 表中的信息提取到 List 中,然后将它们迭代到 Oracle 数据库上的 SQL 语句中,例如:

select * from accounts where accountnum in (...)

有没有更简单的方法在数据库之间进行交互,或者至少,这种操作的最佳实践是什么?

【问题讨论】:

    标签: java sql oracle db2


    【解决方案1】:

    我有两种方法。

    在不同的机器上有两个 Sybase 数据库,我设置了存储过程,然后调用 like 函数来来回发送数据。这还允许存储过程审计/记录,以说服客户在此过程中没有丢失任何数据。

    在 Oracle 到 Sybase 的一种方式中,我使用视图来编组数据和每个供应商的 C 库,这些库是从 C++ 程序调用的,该程序为 C API 提供了一个通用接口。

    在 MySQL 和 DB2 设置上,与您的情况一样,Db2 是“旧版但仍然存在”,我采用了类似于您所描述的设置:将数据提取到 (Java) 客户端程序中。

    如果连接始终是一对一的,并且每个框的结果集具有相同的键,则您可以使用相同的顺序拉取它们,并在客户端中轻松连接它们。即使它们是一对多的,将它们拼接在一起也只是两个列表的单向迭代。

    如果是多对多,那么我可能会退回到一次处理一个项目(尽管您可以使用 HashSet 查找)。

    不过,基本上,您的选择是存储过程(您需要和一个客户端层),或者只是在客户端中进行。

    【讨论】:

      【解决方案2】:
      1. 您可以从 DB2 以平面文件格式导出数据,并将该平面文件用作外部表或使用 sql 加载程序,这是一个批处理过程。

      2. 还有一种叫做异构连接的东西。在这里,您创建了一个从 Oracle 到 DB2 的数据库链接。这使得实时查询 DB2 数据库成为可能,并且您可以将 Oracle 表与 DB2 表连接起来。

      您还可以将此数据库链接与物化视图结合使用。

      有不同种类的异构连接,因此请仔细阅读文档。

      【讨论】:

        【解决方案3】:

        必须是实时数据吗?如果是这样,那么有一些产品可用于异构连接,尤其是作为联合服务器一部分的 db2 关系连接。如果延迟被接受,您可以设置脚本以将数据复制到 oracle,您可以使用它进行本地连接。 将数据拉到客户端应用程序时性能会很差。如果这是唯一的选择,请尝试创建一个 db2 存储过程来返回数据,这将使性能稍好一些。

        【讨论】:

          【解决方案4】:

          如果可以将旧数据库中的数据复制到您控制的数据库中,您可以考虑每天(或尽可能频繁地)将新记录从旧数据库复制到甲骨文数据库。如果您无法识别自上次数据加载以来遗留数据库中生成的新记录,这可能不会那么简单。

          然后,您可以在 Oracle 实例中进行连接。

          【讨论】:

            【解决方案5】:

            如果您询问供应商,最好的做法可能是购买其他产品。

            在 IBM 方面,有IBM Federation Server,它可以“将来自不同来源(如 DB2、Oracle 和 SQL Server)的数据组合到一个虚拟视图中”。我想甲骨文也有一个,但我对他们的产品不太熟悉。

            【讨论】:

              【解决方案6】:

              请注意,如果您拥有 DB2 Advanced Enterprise Server Edition (AESE),则包括 Infosphere Federation Server。

              这两种产品都允许您使用发送到一个数据库的单个连接查询,该查询从两个数据库返回数据。 Oracle 产品非常棒,因为它允许 Oracle 将 DB2 数据库视为另一个 Oracle DB,并允许 DB2 将 Oracle 数据库视为另一个 DB2 数据库。 (感谢 IBM 发布了 DB2 使用的 DRDA 协议的客户端和服务器端的规范。太糟糕了,没有其他供应商愿意这样做,尽管他们可以毫不费力地利用 IBM 这样做的事实。)

              这两种产品都不是我所说的便宜。 为了便宜,您可以利用 Oracle Database Gateway for ODBC
              http://docs.oracle.com/cd/E16655_01/gateways.121/e17936/toc.htm

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2011-07-25
                • 2013-07-07
                • 2014-06-21
                • 1970-01-01
                • 2016-03-06
                • 1970-01-01
                • 1970-01-01
                • 2020-05-05
                相关资源
                最近更新 更多