Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 带有远程数据库的Rails应用程序-我应该在应用程序中复制还是远程连接_Mysql_Ruby On Rails_Postgresql - Fatal编程技术网

Mysql 带有远程数据库的Rails应用程序-我应该在应用程序中复制还是远程连接

Mysql 带有远程数据库的Rails应用程序-我应该在应用程序中复制还是远程连接,mysql,ruby-on-rails,postgresql,Mysql,Ruby On Rails,Postgresql,我正在为客户端构建一个新的rails应用程序。他们已经有了一个单独的rails应用程序来管理用户(使用所有标准的Desive字段),并且不想在这两个应用程序中都维护用户,这完全有道理 我可以使用database.yml连接到他们的远程数据库以获取连接详细信息,并在我的用户模型中建立_connection:。它可以工作,虽然有点慢(通过公共互联网)。我担心依赖这个远程数据库进行大量查询会严重减慢我的应用程序的速度。我也无法与远程数据库进行连接 我的想法是在我的应用程序中复制用户表,并有一个cron

我正在为客户端构建一个新的rails应用程序。他们已经有了一个单独的rails应用程序来管理用户(使用所有标准的Desive字段),并且不想在这两个应用程序中都维护用户,这完全有道理

我可以使用database.yml连接到他们的远程数据库以获取连接详细信息,并在我的用户模型中建立_connection:。它可以工作,虽然有点慢(通过公共互联网)。我担心依赖这个远程数据库进行大量查询会严重减慢我的应用程序的速度。我也无法与远程数据库进行连接

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

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

我应该提到我的数据库是postgres,远程数据库是mysql。我也开始阅读dbcharmergem(),但我还没有完全理解它

--编辑:--

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

我建议在本地缓存他们的数据库,因此当您查找远程记录时,您可以在本地记录它(如果远程存在)或者,如果远程不存在负面结果,则在本地记录负面结果-缓存远程记录不存在的记录。记住,缓存负面结果的时间要比缓存正面结果的时间短

然后,您可以查看本地缓存,查看是否有足够新鲜的结果返回,并且仅当本地缓存的结果过时或没有本地缓存的结果时才查询远程缓存

我个人就是这样做的;我宁愿缓存而不是复制和同步。当然,您可以通过定期将通常获取的内容预取到缓存中,将这两种方法结合起来


本地缓存不需要使用Pg,您也可以轻松地使用redis/memcached/随便什么(我是Pg开发人员,所以我并不完全偏向于redis).

我会在现有db->的一侧设置类似oauth的东西,因为db连接的速度会随着时间的推移而增加。我正在考虑这个问题,但是我需要从远程db访问其他一些表。我将更新我的问题以包括这一点。您还可以在rails中使用多个db,因此一些型号使用远程db,而其他型号使用本地db。另一种方法是,设置一个主从数据库系统。谢谢Craig!这听起来是个好办法。你认为在rails中使用低级缓存来存储远程数据库结果是一个好主意吗?@user1202726我并不真正使用rails,所以我不能对此发表评论。也许发布一个新问题?好的,我会的。谢谢你的建议