5

我不确定它是否完全适合stackoverflow,但是当我正在寻找一些代码而不是工具时,我认为它确实如此。

我正在寻找一种如何复制/同步不同数据库系统的方法——在这种情况下:mysql 和 mongodb。我们都出于不同的目的而运行。我们从 mysql 数据库开始,后来为特殊应用添加了 mongodb。我们希望在两个数据库中都有数据,我们希望在 mysql 和 mongodb 中分别有 dbrefs 的约束。例如:我们需要 mysql 中的用户记录,但也需要 mongodb 中的表之间的引用对象。目前我们有一个 cronjob,它会转储 mysql 数据并将其导入 mongodb。然而,虽然它运行得很好,但这不是我们想要的解决方案。

我认为目前单向复制就足够了——mysql->mongodb,重要的是,复制“实时”工作,就像 mysql master->slave 复制一样。

是否已经有针对此问题的任何解决方案或任何有关如何实现此目标的想法?

谢谢!

4

4 回答 4

3

SymmetricDS是开源的、基于 Java 的、支持 Web 的、独立于数据库的、数据同步/复制软件,只需稍作调整即可解决问题。它有一个名为 IDataLoaderFilter 的扩展点,您可以使用它来实现 MongodbDataLoader。

这将有助于一种方式的数据库复制。从 MongoDb -> 关系数据库同步可能有点困难,但 SymmetricDS 团队在尝试找到解决方案时会非常有帮助。

于 2010-01-27T02:10:58.717 回答
2

您正在寻找的是所谓的 EAI(企业应用程序集成)。周围有很多商业工具,但在提供的链接下,您还会找到一些 OSS 解决方案。EAI 的基础是您拥有数据源和数据接收器。EAI 框架提供了在两者之间构建自定义泵的工具。

我建议要么使用 DB 触发器来启动同步,要么在您的应用程序中发送触发信号。请注意,由于同步可能变得任意复杂(例如,您如何确保复制所有行?),因此没有关键孔解决方案。

于 2010-01-08T08:20:01.497 回答
0

据我所知,您需要开发某种“控制程序”,其中包含每个 DBMS 的驱动程序并将其作为守护程序运行。守护程序应该有一个触发器或一个非常小的重新检查间隔以保持数据库同步

于 2010-01-08T07:53:07.280 回答
0

从技术上讲,您可以设置一个进程来解析 MySQL 服务器的二进制日志并复制相关的 sql 查询。我从来没有用不同的数据库作为奴隶做过这样的事情,但也许值得一试?

于 2010-01-08T08:07:47.340 回答