2013-02-19 173 views
2

我正在为以下问题寻找可能的解决方案。在不同数据库之间同步数据

首先我现在的情况:
我有2个数据库,1个Oracle数据库和1个MySQL数据库。尽管他们有很多相似之处,但并不完全相同。 Oracle DB和MySQL DB上都有很多表,但Oracle表通常更广泛,包含更多列。 数据库的情况不能改变,所以我必须解决这个问题。

现在我在寻找以下:
我想从Oracle数据同步到MySQL,反之亦然。这必须实时或尽可能接近实时地完成。所以当一个数据库发生变化时,他们必须尽快同步到另一个数据库。

也不是每个表都必须同步,所以解决方案必须提供一种方法来选择哪些表必须同步,哪些不需要。

由于数据库不完全相同,我认为复制不是一个选项。但是什么? 我希望你们可以帮我找到一种做法,或者做一个完全符合我需要的工具。也许你知道我可以使用一些好的论文/文章?

谢谢!

+1

使用类似Pentaho的ETL工具 – Johan 2013-02-19 12:03:52

+0

使用JDBC?你应该能够走两条路...... – Ben 2013-02-19 13:10:26

+0

你在说什么,听起来很像EAI。它可以变得非常棘手!阅读EAI会给你一些有关陷阱和风险的良好知识。维基百科在EAI上有一个很好的101(引子),并列出了几个流行的供应商和资源:http://en.wikipedia。组织/维基/ Enterprise_application_integration – tgolisch 2013-02-19 16:39:05

回答

0

我看了你的问题和你的答案。我已经在这两个Oracle,SQL,ETL和数据仓库工作,这里是我的建议:

  1. 这是好事,有一个现成的ETL工具。但是,如果您的应用程序足够大以至于需要量身定制的ETL工具,我建议您使用自制的ETL过程。

    • 如果你的事务型数据库在Oracle上,你可以有触发器设置的键表,将进一步触发写在C,C++或Java编写的外部程序。
    • 使用外部过程的原因是能够同时与两个数据库进行通信 - Oracle和MySQL。
    • 您可以阅读有关Oracle外部过程​​here的更多信息。
  2. 如果不通过EXTPROC,你可以开发使用Java或.NET一个单独的应用程序会从第一个数据库中提取数据,根据您的业务规则变换并将其加载到你的仓库。

在您选择的任何一种方法中,如果您实施自己的工具而不是现成的工具,那么您将对ETL过程有更大的控制权。

1

感谢您的意见。

我对ETL和EAI做了一些进一步的研究。 我发现我正在寻找一个ETL工具。