sql-server - 在两个数据存储之间同步数据

标签 sql-server database database-design amazon-dynamodb nosql

我有两个不同的数据库,一个是旧的遗留数据库,由于不再使用旧服务,我将停用它。另一个是新服务,最终将取代旧系统。在此之前,我们需要两个服务都运行一段时间。

两者都有两个用户表,用于存储电子邮件地址、密码,另一个表用于简单的用户相关数据(地址)。

我需要在这两个数据库之间同步数据。旧的是 MS SQL Server 数据库,新的是 NoSQL 数据库 (DynamoDB)。

我的策略是在上线之前,将所有用户从旧数据库复制到新系统,然后在新系统运行后同步每个数据库之间的用户。

我将通过定期运行一个工具来检查上次运行后添加的任何用户,方法是查询用户表,类似这样 WHERE CreationDate >= LastRunTime 然后为每个用户查询它是否它存在于另一个数据库中。我将以两种方式执行此操作,即从旧数据库 -> 新数据库和从新数据库 -> 旧数据库。

这样做的好方法吗?还有其他更好、更快速的解决方案来实现这一目标吗?

如何检测现有用户数据的变化?有没有比检查和匹配两个系统表中每个用户的记录,然后获取最后修改的记录(通过检查每条记录的 LastModifiedDate 时间戳)并在另一个系统的表中更新它更好的解决方案?

最佳答案

解决方案 1 (我的推荐): 每当系统在任一数据库中插入/更新记录时,您都会在数据库中添加/更新记录数据并添加该信息在队列中。

sperate reader 将从队列中读取并定期将数据复制到相应的数据库,这样您的数据将在数据库之间同步。

注意:使用队列的另一个优势是您不必在 DynamoDB 表中设置非常高的吞吐量。

解决方案 2:根据您在问题中的建议,您可以添加一个 CRON 作业,该作业将通过检查基于时间戳的记录来复制数据库。

关于sql-server - 在两个数据存储之间同步数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34814694/

相关文章:

sql - 架构 - 2个外键到同一个主键?

sql - 为什么这个 SQL 有效?

sql-server - SQL Server - 将更新限制到特定列

mysql - IF 语句触发语法错误

同一表中不同用户组的mysql数据库架构

数据库基数关系奥林匹克问题?

sql - 如何选择 SQL 函数返回的表中的第一个元素

c# - 工作单元设计模式中的事务

安卓服务器;登录页面

mysql - Laravel 迁移无法添加外键