给定一个预生产 oracle 数据库和一个生产 oracle 数据库,如果大约 300K 记录需要从前者传输到后者,那么使用诸如 ESB/JMS/TIBCO 之类的消息传递系统是否是一个不错的选择?
3 回答
我不了解 Oracle,但如果我尝试使用 SQL Server 异步复制数据,我会使用他们自己的内部工具来完成它。我想 Oracle 有类似的工具来运行在两个 Oracle 数据库之间复制的作业。
但是,我确实有相当多的使用 ESB (Mule) 和 ActiveMQ 来跨数据库技术复制数据的经验。具体来说,我已经使用 Mule 和 ActiveMQ 完成了 SQL Server->Mongo 和 MySQL->Mongo。
到目前为止,我发现 Mule 是一个很好的解决方案——尤其是与 ActiveMQ 结合使用。我已经能够在大约 20 分钟内将大约 400k Wordpress 博客文章(来自 MySQL)复制到 Mongo。要从 CMS 系统传输 10 万篇文章,我们能够在大约 30 分钟内完成。
我想我会参与进来,因为您提到了 ESB 和消息传递。如果集成点是异构的,我会走那条路。如果你真的走那条路,骡子很棒。
如果您尝试将数据从旧数据库移动到新数据库而不是异步执行,则可能更简单的方法是 sql 注入。假设您的旧数据库允许您“导出”您的数据库,当您导出它时,您将下载一个 sql 文件。然后,您可以在记事本之类的程序中打开该 sql 文件,并将该代码复制粘贴到新数据库的 sql 执行器中,它将重新创建所有表并用旧数据填充它们。
实际上使用数据库工具将是在数据库之间复制数据的推荐方法。
使用消息传递时,不能保证数据将以与发送时相同的顺序传输,也不能保证表之间的关系,这可能会导致复制错误,除非在 JMS 接收方建立某种机制来维护序列。但这看起来更像是开销。