我有两个Rails应用程序,它们的数据非常相互依赖。如果我需要轻松访问Django中另一个应用程序的模型或以其他方式共享它们,这是微不足道的,因为我只需在我的项目中包含这两个应用程序并能够导入其他应用程序的模型。那时,我可以使用Django的ORM访问另一个应用程序数据库中的对象,它是一致的,非常棒。
在Rails中,我获得了压倒性的氛围,这样做的方法是在每个应用程序中为您希望其他应用程序请求的每个事物创建RESTful API挂钩。看起来很干净和模块化,但它开始变得混乱,因为我有如下情况:
很明显,这会产生一个可扩展性的噩梦,在我们的例子中,由于新的请求等待原始请求完成的竞争条件,请求超时,但直到新的请求完成才会发生。我们可以启动更多的Web服务器进程,但我觉得必须有一个更好的方法来实现这一点,这不会涉及在我维护这两个应用程序时发出这些多余的GET请求。
最终,我的问题是1)是否有更直接的方法来获取另一个Rails应用程序的数据而不是发出GET请求,或者我只是试图以一种杀死它的方式使用实际上是一个伟大的设计? 2)如果我正在反对设计模式,这真的是一个很好的方法,你可以提供任何一般性的建议,这将有助于我保持这些应用程序中的数据不会相互依赖导致竞争像这样的条件?我意识到我可以从A前面传递应用B需要的信息(现在只是一个字段但后来可能更多),但是是吗?
答案 0 :(得分:2)
如果有大量共享数据/模型,请将这些模型放入gem /插件中并在两个应用程序中使用它们。不过,请保持每个应用程序的数据库配置,IMO。
如果它们紧密交织在一起,我并不是100%确信一个或两个应用程序正确地做到了这一点。
答案 1 :(得分:0)
我也碰巧发现Mongoid支持多个数据库,这使我们可以完全我想要做的事情:http://mongoid.org/docs/installation/replication.html