我有一个用于数据处理的NoSQL数据库,因为它可以比SQL更快地用于我的应用程序。我将NoSQL数据库视为信息缓存,SQL是数据的权限,NoSQL存储更新了更新。现在,这是通过我们的应用程序完成的,因此当请求进行更改时,它将在SQL数据库和NoSQL数据库中生成。这有时会失败,因为有时NoSQL更新失败,或者其他情况导致NoSQL数据库失去同步。
我可以每X分钟进行一次批量更新,但数据存储中有很多信息,确保它们同步需要几个小时。我们有一些时间戳来改变已经改变的东西,但这并不总是准确的。
我想知道保持数据存储(辅助数据库缓存)与我的主商店同步的一些推荐策略是什么?
答案 0 :(得分:5)
我知道我在过去使用过消息传递了这一点 - 特别是使用ActiveMQ的JMS。我会使用队列将更新发送到NoSQL存储(Mongo)。这样消息可能会在队列中累积,如果与NoSQL存储的连接被切断,它可能会从中断处继续。
它非常有效,因为ActiveMQ非常稳定且易于使用。
我总是看到这与你提到的差异一样。您将介绍所有日期字段,然后跟踪最新的同步。这种方法的好处在于它可以轻松地通过修改上一个同步日期来重放事务。
最后一条建议......编写好的工具,将数据从A点抽到B点(在本例中为SQL到NoSQL)。我在上一份工作中编写了几个从SQL批量加载NoSQL存储的工具,如果任何事情真的不同步,它会让生活变得轻松。在脚本和批量加载过程之间,我总能恢复。