4

我的应用程序需要使用 java 在 sybase 和 db2 之间以及反之亦然以及内部(db2 到 db2 和 sybase 到 sybase)之间归档数据库表。

我试图了解在性能、实施、易用性和可扩展性方面的最佳策略。

这是我目前的流程-

  • 具有可接受参数(来自 java)的源表和目标表在 xml 中定义。[实际查询被放置在 xml 中,因为有时参数是从 java 接受的(例如,对于 where 子句条件)]
  • 应用程序读取源和目标配置并按顺序执行它们。
  • 当源只是从特定表中删除数据或源只是调用存储过程时,目标有时是可选的。
  • 源和目标之间的数据集非常大(以百万计)

在我看来,我似乎可以定义多个源和目标组合之间的依赖关系,并让它们在多个线程中并行执行。但这会提高任何性能(我希望它会)?

是否有任何使用 java 进行数据归档的开源框架?工具方面的任何其他想法都会非常有帮助。

谢谢

4

4 回答 4

8

Java 持久性最强大的开源框架是 Hibernate。您可以从现有 DB 对 Java 模型进行逆向工程(请参阅 Hibernate 工具),并使用 Session.replicate() 执行复制。您可以通过使用无状态会话和适用的二级缓存来微调性能。文档在这里

于 2010-03-28T00:12:04.113 回答
2

查看一些数据库复制工具(我们使用Shadowbase)。他们可能有 Java API。

另外,请查看此 IBM白皮书

[IBM] 提供了一种使用 JDBC 和 SyncML 标准来实现通用数据库数据复制的解决方案。

于 2010-03-30T16:49:39.717 回答
1

Pentaho 数据集成对在数据库之间或从数据库复制数据具有强大的支持。另外,它是开源的,允许你用 Java 编写插件。

从 Oracle 迁移到 MySQL

于 2010-04-03T19:26:58.673 回答
1

您需要做的最重要的一件事是禁用 JDBC 中的自动提交,否则您将在每次插入数据库表后提交。那会破坏性能。

但是您基本上必须弄清楚您的同步方案,以便您可以确定需要复制哪些记录,然后才能决定如何实际执行。

于 2010-04-03T20:54:38.440 回答