Sql server 2008 从sql server到另一个数据存储库的实时单向同步

Sql server 2008 从sql server到另一个数据存储库的实时单向同步,sql-server-2008,ssis,sqlbulkcopy,data-synchronization,Sql Server 2008,Ssis,Sqlbulkcopy,Data Synchronization,在我关于此门户的文章中,我询问了有关在SQL Server和基于键值的数据存储库之间同步数据的一些见解 为了避免同样的问题(从SQL到HBase或任何其他数据库的单向实时同步),我需要考虑一些性能和延迟方面的因素,并且没有找到一种非常简单的方法 我们有多个SQL 2008数据碎片,其中数据从不同来源更新,并由多个进程同时处理(UI从相同碎片读取) 目标是在任何时间点获取选定表中的所有更新,并以几乎实时的方式将它们传输到其他数据源 SQL碎片中的更改量将保持在100-500 MB的范围内(如果我们

在我关于此门户的文章中,我询问了有关在SQL Server和基于键值的数据存储库之间同步数据的一些见解

为了避免同样的问题(从SQL到HBase或任何其他数据库的单向实时同步),我需要考虑一些性能和延迟方面的因素,并且没有找到一种非常简单的方法

  • 我们有多个SQL 2008数据碎片,其中数据从不同来源更新,并由多个进程同时处理(UI从相同碎片读取)

  • 目标是在任何时间点获取选定表中的所有更新,并以几乎实时的方式将它们传输到其他数据源

  • SQL碎片中的更改量将保持在100-500 MB的范围内(如果我们保持1分钟的频率)。我们不希望对SQL Server进行重大更改,因为在迁移整个系统后,我们会放弃它

  • 不幸的是,我们的数据访问层在各个层中都是混乱的。否则,它将是从两个方向进行更新的最佳方式

  • 触发器将减慢碎片的速度并使其处于无响应状态

  • 不确定SQL Server 2008是否具有类似于SQL Server 2005的通知服务功能,以及该功能的效果如何

  • 任何其他创新的解决方案都会大有裨益


    这里我的问题不是将数据从关系型转换为键值型(这相当容易),而是如何在不影响用户体验的情况下实时获取SQL Server更新(可以承受1-2分钟的延迟)

    您看过SQL Service Broker吗?这里有一个链接,其中包含一些信息:

    从下到上都有数据层:存储、文件系统、数据库和应用程序

    最有效的方法是使用存储复制。它几乎对性能没有影响,可以配置为同步或异步,并且不是免费的。您可以在谷歌上搜索SRDF或MirrorView以了解其概念

    然后,您可以查看文件系统复制。它类似于存储复制,但发生在操作系统/文件系统层,消耗主机系统的资源(CPU、IO、mem)。您可以在谷歌赛门铁克存储基金会获取更多信息。 在DB级别,您可以执行数据库复制/日志传送来复制数据。SQLServer有这样的功能


    “最便宜”的解决方案是修改您的应用程序(如4),但我建议您使用消息队列来复制数据,以最大限度地减少对性能的影响。

    您可能希望研究的一个选项是(SQL2008或更高版本的一部分)。这是查找SQL Server数据库中发生的更改(包括删除)的一种非常有效的方法,对SQL DB的影响非常小,不需要触发器,并且提供了一种很好的方法,允许您将数据更改移动到Hadoop


    充分披露,我在科特加工作,这是我们非常关注的事情。如果这是您感兴趣的方向,我很乐意提供更多帮助。

    更改跟踪似乎是一个很好的解决方案。但是,尚未找到高流量服务器上性能开销的任何统计信息。您可能需要查看的另一个统计信息是Sql Server更改数据捕获。