Sqldependency vs CDC 用于将数据复制器从 sql 服务器写入 mongodb
Sqldependency vs CDC for writing a data replicator from sql server to mongodb
我想编写一个简单的复制器,将数据从 sql 服务器数据库复制到 mongodb 数据库。
除了以下选项我还有什么选择:
a) 更改数据捕获
b) SqlDependency
- 每个选项对 sql-server 数据库性能的影响是什么?
- 如果我在 table 上有 50 writes/min,哪个选项更合适,为什么?
- 如果出现问题并 machine/server 重新启动,哪个选项更适合恢复?
CDC(+Change Tracking)和SqlDependency解决不同的问题,针对不同的场景。 SqlDependency 是应用程序的缓存失效机制。它不适合跟踪更改。 CDC 明确针对需要跟踪更改的应用程序。这几乎是 唯一 跟踪更改的可行机制。使用跟踪的更改取决于您的应用程序,例如将它们写入 /dev/null
或 modngodb(实际上是一样的东西)。
请先阅读MSDN相关主题,从Track Data Changes开始。
出于几个不同的原因,我喜欢 CDC 进行此类操作
- 您可以将其配置为捕获净变化。如果您不关心给定行在您的捕获间隔内更新了 10 次,这就是解决方法。
- 它会告诉您 发生了什么变化。您可以看到在哪个操作中更改了哪些列。
- 您不需要跟踪所有列。如果有一个列不需要传播到下游数据存储(在您的情况下,MongoDB),则不要将其包含在跟踪中。
- 它是异步的。 CDC 使用日志 reader 来确定事后发生的变化,因此您无需降低 CDC 的主要应用程序速度。
完成之前的回答:
- CDC 在 SQL 服务器标准版
中不可用
- 一种选择是使用 table 触发器 + Servier Broker(在标准版中可用)。
- 另一种选择是使用更改跟踪 (CT) 来监视 table 更改(在标准版中可用)并使用自定义监视应用程序将更改传播到 MongoDb。我在生产环境中使用 CT 实现了一个自制的复制系统,它工作得很好。根据 MS,维持 CT 指数的资源超支类似于 non-clusterd 指数。
希望对您有所帮助
我想编写一个简单的复制器,将数据从 sql 服务器数据库复制到 mongodb 数据库。
除了以下选项我还有什么选择:
a) 更改数据捕获
b) SqlDependency
- 每个选项对 sql-server 数据库性能的影响是什么?
- 如果我在 table 上有 50 writes/min,哪个选项更合适,为什么?
- 如果出现问题并 machine/server 重新启动,哪个选项更适合恢复?
CDC(+Change Tracking)和SqlDependency解决不同的问题,针对不同的场景。 SqlDependency 是应用程序的缓存失效机制。它不适合跟踪更改。 CDC 明确针对需要跟踪更改的应用程序。这几乎是 唯一 跟踪更改的可行机制。使用跟踪的更改取决于您的应用程序,例如将它们写入 /dev/null
或 modngodb(实际上是一样的东西)。
请先阅读MSDN相关主题,从Track Data Changes开始。
出于几个不同的原因,我喜欢 CDC 进行此类操作
- 您可以将其配置为捕获净变化。如果您不关心给定行在您的捕获间隔内更新了 10 次,这就是解决方法。
- 它会告诉您 发生了什么变化。您可以看到在哪个操作中更改了哪些列。
- 您不需要跟踪所有列。如果有一个列不需要传播到下游数据存储(在您的情况下,MongoDB),则不要将其包含在跟踪中。
- 它是异步的。 CDC 使用日志 reader 来确定事后发生的变化,因此您无需降低 CDC 的主要应用程序速度。
完成之前的回答:
- CDC 在 SQL 服务器标准版 中不可用
- 一种选择是使用 table 触发器 + Servier Broker(在标准版中可用)。
- 另一种选择是使用更改跟踪 (CT) 来监视 table 更改(在标准版中可用)并使用自定义监视应用程序将更改传播到 MongoDb。我在生产环境中使用 CT 实现了一个自制的复制系统,它工作得很好。根据 MS,维持 CT 指数的资源超支类似于 non-clusterd 指数。
希望对您有所帮助