我有两个不同的数据库,一个是旧的遗留数据库,由于不再使用旧服务,我将停用它。另一个是新服务,最终将取代旧系统。在此之前,我们需要两个服务都运行一段时间。
两者都有两个用户表,用于存储电子邮件地址、密码,另一个表用于简单的用户相关数据(地址)。
我需要在这两个数据库之间同步数据。旧的是 MS SQL Server 数据库,新的是 NoSQL 数据库 (DynamoDB)。
我的策略是在上线之前,将所有用户从旧数据库复制到新系统,然后在新系统运行后同步每个数据库之间的用户。
我将通过定期运行一个工具来检查上次运行后添加的任何用户,方法是查询用户表,类似这样 WHERE CreationDate >= LastRunTime
然后为每个用户查询它是否它存在于另一个数据库中。我将以两种方式执行此操作,即从旧数据库 -> 新数据库和从新数据库 -> 旧数据库。
这样做的好方法吗?还有其他更好、更快速的解决方案来实现这一目标吗?
如何检测现有用户数据的变化?有没有比检查和匹配两个系统表中每个用户的记录,然后获取最后修改的记录(通过检查每条记录的 LastModifiedDate 时间戳)并在另一个系统的表中更新它更好的解决方案?
最佳答案
解决方案 1 (我的推荐): 每当系统在任一数据库中插入/更新记录时,您都会在数据库中添加/更新记录数据并添加该信息在队列
中。
sperate reader 将从队列中读取并定期将数据复制到相应的数据库,这样您的数据将在数据库之间同步。
注意:使用队列的另一个优势是您不必在 DynamoDB 表中设置非常高的吞吐量。
解决方案 2:根据您在问题中的建议,您可以添加一个 CRON 作业,该作业将通过检查基于时间戳的记录来复制数据库。
关于sql-server - 在两个数据存储之间同步数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34814694/