我有一个用于数据处理的NoSQL数据库,因为它可以比SQL更快地用于我的应用程序。我将我们的NoSQL数据库处理得几乎像信息缓存一样,数据的权威是SQL,而NoSQL存储是通过更改来更新的。现在,这是通过我们的应用程序来完成的,所以当请求进行更改时,就会在SQL数据库和NoSQL数据库中发出请求。有时这是失败的,因为有时NoSQL更新失败,或者其他情况导致NoSQL数据库不同步。
我可以每隔X分钟进行一次批量更新,但是数据存储中有大量的信息,需要几个小时才能确保它们是同步的。我们有一些时间戳来做不同的改变,但这并不总是准确的。
我想知道有什么推荐的策略来使数据存储(二级数据库缓存)与我的主存储保持同步?
发布于 2013-08-01 17:36:05
我知道我在过去做过消息传递--特别是使用ActiveMQ的JMS。我会使用队列将更新发送到NoSQL商店(Mongo)。通过这种方式,消息可以在队列中累积,如果连接到NoSQL存储的连接被切断,它就可以从中断的位置拾取。
它运行得很好,因为ActiveMQ非常稳定,使用起来也很简单。
我一直都看到像你提到的那样用不同的方法来完成这件事。您将引入所有日期字段,然后跟踪最新的同步。这种方法的好处是,它允许您通过修改最后的同步日期轻松地重放事务。
最后一个建议..。编写好的工具,将数据从A点抽到B点(在本例中,是将数据抽到NoSQL)。在我的上一份工作中,我编写了几个工具来从SQL中批量加载NoSQL存储,这使得生活变得非常简单,如果任何事情都不同步的话。在脚本和批量加载进程之间,我总是可以恢复。
https://stackoverflow.com/questions/17981794
复制相似问题