在我的产品中,我们需要为报告团队创建一个解决方案来提取和处理数据。我们需要从我们的数据库向他们发送增量数据更改。我正在评估各种解决方案。研究了 CDC 和 Replication,但不确定要使用哪一个或构建一个自定义的。
虽然 CDC 易于配置并且需要比复制更少的基础架构,但更改表位于同一个数据库中,性能可能会降低,具体取决于报告团队查询数据库的频率。
复制似乎更畅销,但它需要大量的基础设施。看起来也必须在同一服务器中有单独的数据库实例或使用另一台服务器。
定制解决方案在这里会有所帮助吗?有没有办法创建数据库副本并从源数据库读取日志并通过作业将增量数据推送到目标数据库。
CDC 并不是真正设计为使报告数据库保持最新的一种方式,它更多的是用于跟踪更改。
这里的最终目标到底是什么,您是否只是要将一些选定的表\数据带到另一台服务器上进行报告,或者您是否正在寻找一种方法来获取整个数据库?
你有几个选择,如果你只对少数表感兴趣,那么你可能想看看复制。复制实际上并不需要太多的基础设施,只需要另一个 SQL Server 来复制。
如果您想拥有数据库的完整副本以用于报告目的,那么您拥有的最简单的选择是日志传送,但请注意,当日志传送过程在日志中播放时,报告数据库将不可用。
您拥有的另一个选择是使用可用性组,其中辅助节点充当只读报告副本。
首先,不要尝试手动操作。这比你想象的要难。老实说,不要。
CDC 对于数据捕获、事件处理等非常有用。但是,您确实应该在这里使用复制。我有一个复制到 150 多个仓库的数据库,它运行良好。
我强烈推荐的一件事是您使用 VIEW 进行复制过滤。这样,如果您需要修改要复制的内容,您可以轻松更改它,而无需删除并重新启动复制。