0

我正在为客户构建一个新的 Rails 应用程序。他们已经有一个单独的 Rails 应用程序来管理用户(使用所有标准的设计字段),并且不希望在两个应用程序中都维护用户,这是完全有意义的。

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

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

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

我应该提到我的数据库是 postgres 而远程数据库是 mysql。我也开始阅读 DbCharmer gem ( http://dbcharmer.net/ ),但我还没有完全理解它。

- 编辑: -

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

4

1 回答 1

1

我建议在本地缓存他们的数据库,因此当您查找远程记录时,您将其记录在本地(如果它存在远程),或者如果远程不存在,则在本地记录否定结果- 您缓存远程记录不存在的记录. 请记住将负面结果缓存的时间少于正面结果。

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

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

本地缓存不需要使用 Pg,您可以轻松地使用 redis/memcached/whatever(我是 Pg 开发人员,所以我并不完全偏向于 Redis)。

于 2013-03-22T13:27:12.083 回答