2013-03-22 88 views
0

我正在为客户端构建一个新的Rails应用程序。他们已经有了一个单独的Rails应用程序来管理用户(使用所有的标准Devise字段),并且不希望在两个应用程序中都需要维护用户,这是非常重要的。Rails应用程序与远程数据库 - 应该复制到我的应用程序或远程连接

我能够连接到使用的database.yml的连接细节和establish_connection其远程数据库:在我的用户模型。它工作,虽然有点慢(通过公共互联网)。我担心依赖这个远程数据库寻找某个被LOT查询的东西会严重减慢我的应用程序。我也无法与远程数据库连接。

我的想法是复制的用户表在我的应用程序,并有运行每隔几个小时(或更频繁),保持我的表同步的“主” cron作业。

有没有什么理由不这样做?从设计的角度来看这是一个可怕的想法吗?

我要指出,我的数据库是Postgres的和远程数据库MySQL的是。我也开始阅读DbCharmer宝石(http://dbcharmer.net/),但我还没有完全理解它。

- 编辑: -

我还要提到的是,我将需要阅读从远程数据库其他表,而不仅仅是用户表。

+2

我会建立类似的OAuth在现有分贝的一面 - >因为你的数据库连接的放缓将随时间而增加。 – tingel2k 2013-03-22 11:34:31

+0

我在想,但还有一些其他表需要从远程数据库访问。我会更新我的问题以包括这一点。 – joshblour 2013-03-22 12:33:05

+1

您也可以在rails中使用多个dbs,以便某些模型使用远程数据库,而其他模型使用本地数据库。另一种方法可能是建立一个主从数据库系统。 – tingel2k 2013-03-22 12:53:26

回答

1

我会建议缓存他们DB本地,所以当你看到一台远程记录你本地记录它(如果它存在远程)或录制在本地一个阴性结果如果它不存在的远程 - 你缓存远程记录不存在的记录。请记住缓存负面结果的时间少于积极结果。

然后你可以看看你的本地缓存,看看是否有一个新的,足够的结果返回,如果在本地缓存的结果是无效的或没有本地缓存​​的结果只能查询远程。

这是我会做往心里去;我会缓存而不是复制和同步。不过,您可以通过将通常提取的东西定期预取到缓存中来合并这两种方法。

有没有必要使用Pg的本地缓存,你可以很容易地使用redis/memcached /任何(我是一个Pg开发,所以我不完全偏向于Redis)。

+0

谢谢克雷格!这听起来像是要走的路。你认为在rails中使用低级缓存来存储远程数据库结果是个好主意吗? – joshblour 2013-03-22 17:18:58

+0

@ user1202726我并没有真正使用Rails,所以我不能对此发表评论。也许发布一个新问题? – 2013-03-23 02:46:01

+0

好的,我会的。感谢您的建议 – joshblour 2013-03-23 16:08:05

相关问题