gpt4 book ai didi

ruby-on-rails - 在正在运行的应用程序中将模型动态连接到数据库?

转载 作者:数据小太阳 更新时间:2023-10-29 06:56:58 25 4
gpt4 key购买 nike

我已经阅读了许多关于这个主题的现有问题/线程,但请记住,它们没有直接解决了我的问题。另请记住,这不是 database.yml 的情况,因为我不会提前知道数据库信息。

就是说,我需要一个动态 连接到 Rails 应用程序中的多个数据库的解决方案。我的情况是我有多个数据记录站点,所有站点都有一个简单的数据表(EVENTS、TIMESTAMP、VALUE)。由于需要使用它们的本地应用程序,这些站点需要(并将)保持原样。

我需要创建一个应用程序来维护一个“MYSQL_LOGINS”表,并使用每个登录名连接到各种数据库中的任何一个,并为其中的数据提供图表/图形。

对于我连接的所有 MySQL 数据库,我的“数据”模型将保持不变,我只需要能够告诉我的模型即时连接到不同的数据库。我希望这非常简单,但我们拭目以待。

最佳答案

你想要ActiveRecord::Base#establish_connection .您可能希望在抽象子类中使用它,以便使用手动连接的模型不会干扰应用程序其余部分使用的连接:

class LogBase < ActiveRecord::Base
self.abstract_class = true
end

class LogItem < LogBase
...
end

LogItem.establish_connection { ... }

LogItem.find_by_ ...

如果您只有一个模型可以进行手动连接,则不需要抽象类。

您知道您可能连接的全套数据库吗?如果是这样,database.yml 可能对您仍然有用。您可以将所有信息作为一个目录放在那里,为每个数据库命名,然后使用这些名称在应用程序中动态选择要与哪个数据库建立连接:

# database.yml
atlanta:
host: atlantadb.foo.com

# foo.rb
LogItem.establish_connection :atlanta

设置连接可能非常繁重,如果站点被广域网隔开,则更是如此。我会考虑使用提取-转换-加载方法并使用每小时/每天的 cron 作业将数据复制到集中报告站点是否更有意义。这是数据仓库的最基本形式,也是一种非常常用的方法。如果您使用的是 MySql,Maatkit Sync是一个简洁的小工具,就像表格的 rsync。或者,您可能使用支持主从复制的数据库,但维护起来可能要复杂得多。

关于ruby-on-rails - 在正在运行的应用程序中将模型动态连接到数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/966246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com