使用 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