3

我正在尝试为我的问题找到解决方案。问题陈述

  1. 我有两个不同的数据库的 Oracle 和 AS400。两个数据库具有相同的结构和相同的表(但显然不同的表名)。
  2. AS400 通过 Internet 更新,Oracle 通过商店或仓库更新。
  3. 两个数据库都是每天同步的,同步后我们需要每天生成一个报告,以了解数据是否有任何差异。
  4. 需要双方进行比较,首先从AS400获取数据并与Oracle DB进行比较,反之亦然。
  5. 我们在这里谈论 1000 万条记录。第一次是整个数据库比较,随后的报告将只针对已更改或新添加到数据库的记录(这相当简单且易于处理),但第一次比较是我们试图实现的.

我知道 ETL 过程确实会使工作变得简单,但我们没有 ETL 工具,因此试图使用 Java 找到解决方案。任何可以帮助我们的建议都非常感谢。

提前致谢。

4

4 回答 4

0

两个数据库都是每天同步的,同步后我们需要每天生成一个报告,以了解数据是否有任何差异。

根据同步的完成方式,您可能只能获取 Oracle 数据库和 AS400 数据库的日常事务输入。处理这些日常事务文件比处理整个数据库要快得多。

如果没有每日交易文件,那是您的第一步。创建每日交易文件。

于 2013-04-29T13:53:26.320 回答
0

如果您担心初始比较的内存消耗,为什么不考虑使用某种形式的记录数据散列。假设一个不错的主键(例如一个长键)和 SHA-1 摘要,这意味着每条记录 4+20 = 24 个字节,或者每个数据库大约 200 Mb。

于 2013-04-29T13:52:46.760 回答
0

我从未使用过它,但 Liquibase 同时支持 DB2 和 Oracle。

讨论它们的差异功能的页面

于 2013-04-29T13:28:34.973 回答
0

简单的方法是设置两个数据源,从每个商店获取数据并进行比较。

当然,你的内存会因 1000 万条记录而爆炸,所以不妨尝试批量抓取和比较数据(注意在执行此操作时发生更新)

如果您使用多线程,可能会获得进一步的性能提升

于 2013-04-29T13:29:18.063 回答