使用 Express 在 SQL Server 2008 R2 和 MongoDB 之间进行实时同步

Posted

技术标签:

【中文标题】使用 Express 在 SQL Server 2008 R2 和 MongoDB 之间进行实时同步【英文标题】:Live sync between SQL Server 2008 R2 and MongoDB with Express 【发布时间】:2015-03-18 09:04:57 【问题描述】:

我在 Express 中创建了自定义脚本,将 SQL Server 数据库实际迁移到 MongoDB。

但是我在两个数据库之间进行实时同步时遇到了问题。

目前我在两个数据库中都添加了 updated_by 列。

然后我从 MongoDb 和 SQL Server 数据库中获取最新的 updated_by 行。

然后我检查日期差异并根据它更新我的 MongoDB 数据库。

有很多 db 表,我发现很难确定哪个表正在更新。

SQL Server 2008 R2 中是否有任何日志说明更新了哪个表以及何时更新?

我需要一种机制,例如,db 表中的任何数据更新都应该立即将这些行同步到我的 MongoDB。

也欢迎您对实时数据同步提出更多建议。

提前致谢。 :)

【问题讨论】:

我在将 mssql 实时同步到 mongodb 时遇到了同样的问题,请帮助解决上述问题。 查看 SQL Server 中的Change Data Capture feature,它应该提供此类信息 另一种选择是使用 Apache Camel 迭代 SQL 数据,过滤掉已经存在的数据集并将新的数据集写入 MongoDB。请注意,会有相当长的延迟。至于实时同步,除了将其写入两个数据库之外,我没有看到其他选项。在不了解您的用例的情况下,很难找到解决方案, @marc_s - 我尝试了 CDC 功能.. 1. 我使用 sys.sp_cdc_enable_db 更改为我的数据库启用的数据捕获 2. 使用 sys.sp_cdc_enable_table 启用表跟踪然后我尝试了更多插入我的源表上的命令,但我无法在生成的 CT 表下找到任何条目。请就此提出更多建议。我想我错过了一些东西.. @marc_s - CDC 为我工作.. 非常感谢.. 3 为你欢呼:) 由于某种原因,SQL Server 代理已关闭.. 我刚刚打开它,它对我有用.. 【参考方案1】:

当我有这样的要求在关系数据库(mysql)和非关系数据库(Mongodb)之间同步时。

我已遵循以下步骤,这些步骤可能会在未来帮助其他人。这个概念通常被称为变更数据捕获

    捕获更改(对于使用触发器的 MYSQL iam。) 将更改转换为合适的更改 即RDBMS to Non RDBMS 更新更改 记得同步数据库的结构变化和相应的实现。

以下链接可能会有所帮助

https://www.flydata.com/blog/what-change-data-capture-cdc-is-and-why-its-important/

【讨论】:

以上是关于使用 Express 在 SQL Server 2008 R2 和 MongoDB 之间进行实时同步的主要内容,如果未能解决你的问题,请参考以下文章

Query (SQL Server 2008 Express) 在 SQL Server Management Studio 中有效,但在 Delphi 中使用 ADODB 无效

使用 SQL Server Express 和 SQL Server CE

Microsoft SQL Server Express 复制错误:缺少本地发布

从 SQL Server Express 导入 SQL Server CE

从使用 SQL Server Express 切换到 SQL Server Compact

在 SQL Server 2005 express 中使用连接