使用Express实现SQL Server 2008 R2和MongoDB之间的实时同步

4

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

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

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

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

然后,我检查日期差异,并基于此更新我的MongoDB数据库。

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

SQL Server 2008 R2中是否有任何日志记录表格被更新的时间以及更新的表格?

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

欢迎提出更多关于实时数据同步的建议。

先谢谢了。:)


我遇到了与将MSSQL实时同步到MongoDB的问题,请帮忙解决上述问题。 - Prasad Bhosale
2
请查看 SQL Server 中的更改数据捕获功能,该功能应该提供此类信息。 - marc_s
另一个选择是使用Apache Camel来迭代SQL数据,过滤掉已经存在的数据集,并将新数据写入MongoDB。请注意,这可能会有相当大的延迟。至于实时同步,除了将数据同时写入两个数据库之外,我没有看到其他选项。如果不了解您的具体用例,很难找到解决方案。 - Markus W Mahlberg
@marc_s - 我尝试了CDC功能..
  1. 我使用sys.sp_cdc_enable_db更改了我的数据库的数据捕获启用状态。
  2. 使用sys.sp_cdc_enable_table启用表跟踪。
然后我在源表上尝试了一些插入命令,但是我无法在生成的CT表下找到任何条目。请给予更多建议。我认为我漏掉了什么..
- Viren Ajmera
1
@marc_s CDC 对我很有用.. 非常感谢.. 为你欢呼三声 :) 由于某些原因,SQL Server Agent 处于关闭状态.. 我只是将其打开,然后它就对我起作用了.. - Viren Ajmera
1个回答

0

当我有这样的需求需要在关系型数据库(如MYSQL)和非关系型数据库(Mongodb)之间进行同步时。

我遵循了以下步骤,希望能帮助其他人,这个概念通常被称为变更数据捕获。

  1. 捕获更改(对于MYSQL,我使用触发器。)
  2. 将更改转换为适当的更改,即从关系型数据库到非关系型数据库
  3. 更新更改
  4. 记得同步数据库的结构更改和相应的实现。

以下链接可能会有所帮助。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接