我有一个rails应用程序,它使用了两个与我拥有的另一个rails应用程序相同的模型。保持两个模型之间数据同步的最佳方法是什么?
由于托管限制,可能无法进行MySQL复制,因为引用复制数据的内容依赖于=> :destroy意味着mysql复制将导致指向被删除的复制数据的东西保留。
简而言之,在应用程序级别上,在每个模型的基础上,在两个rails应用程序之间进行复制的最佳方法是什么?我是否必须使用REST来破解我自己的复制,或者有更好的方法吗?
我应该添加数据不经常更改,一天最多几次,并且该集合总是少于50k行。
编辑:回应下面的托比评论,数据都是单向的。
答案 0 :(得分:0)
这不是一个具体的答案,但考虑某种排队机制。应用程序A进行更改并写入队列和数据库。 “队列”可以是数据库中的表,其中显示“应用程序A已更改具有ID I的模型M”。然后,这两个应用程序都可以拥有一个轮询此表并应用更改的进程。
当你遇到麻烦时,双方都会修改同一个对象。
答案 1 :(得分:0)
因此,事实证明有两个插件可以做到这一点:
Acts as Replica 和 Acts as Syncable
Acts as Replica似乎有更好的文档。
然而,考虑到它的复杂性,我认为根据自己的需要,我将推出自己的需求,而对于我自己的用例来说,不完美将会简单得多。
我复制的表中的所有数据都是从XML文件中剔除的。出于隐私原因,XML无法完全发送到要复制的服务器(我只在两个应用程序中使用了一个子集,但额外的数据是敏感的),所以我只是公开一个带有数据的REST接口需要并复制它。