最新公告
  • 欢迎您光临AA分享网,一个高级程序员的学习、分享的分享平台!立即加入我们
  • 如何在Rails 6中管理多个数据库?

    随着Rails 6的发布,宣布的新功能之一是对多个数据库的支持。那么如何在Rails
    6中管理多个数据库?当我们一个应用程序中,努力有效地管理独立的DB时,会让你大吃一惊。人们想要Rails 6支持多个数据库的原因有很多,使用SQL数据库存储用户数据,使用NoSQL存储位置数据;有多个SQL数据库来管理单独的应用程序,但是一个应用程序可能需要直接访问另一个数据库;管理多个NoSQL和Redis数据库以存储不同种类的数据等。

    当面对使用多个数据库时,通常,一个充当主服务器,而其他服务器充当从服务器。因为我是在Rails
    6发布之前进行管理的,所以我使用了一种不太理想的方式(读取修补程序/
    hacky)来完成此任务。我为第二个数据库创建了一个单独的YAML文件,用于存储连接信息。这是一个示例文件:

    second_database.yaml

    adapter: db_adapter

    encoding: db_encoding

    pool: db_pool

    username: db_username

    password: db_password

    database: db_name

    host: db_host

      要访问多个数据库,每次:

    通过从YAML文件中读取连接信息来建立连接

    config = YAML.load_file(second_database.yaml')

    connection = ActiveRecord::Base.establish_connection(

    adapter: config['adapter'],

    host: config['host'],

    database: config['database'],

    username: config['username'],

    password: config['password']

    )

      查询数据

    employees = connection.execute("SELECT * from employees")

    关闭连接

    connection.close

    但是,发布新的Rails 6时,您可能不必费心(并且可以自己编写代码)来管理多个数据库。

    Rails 6启动后,我就升级了我的应用程序,以利用多个数据库支持的好处。让我们逐步了解升级并为多个数据库进行设置。

    首先,检查并更新ruby版本至2.5,因为rails 6必须要求ruby 2.5或更高版本。

      将您的ruby版本升级到2.5或更高版本:

    在ruby更新期间,可能仅由于版本升级而获得语法错误或弃用警告。

    请逐步更新红宝石版本-不要直接跳转到最新的红宝石版本;这会给您带来很多问题。

    更新到下一个增量版本;解决错误和警告;运行并解决测试用例,然后重复该过程。

      将rails升级到5.2系列的最新版本:

    由于本文仅涵盖了从导轨5.2到导轨6的升级准则;请确保您使用的是5.x系列的最新版本。

      更新Rails 6版本的gemfile:

    现在该更新Gemfile中的rails版本了。在您的gem文件中更改rails gem版本。

    在终端中运行bundle update rails命令以更新rails和其他相关的gem。

      在终端中运行rails app:update:

    通过运行此命令,您会发现一些新的配置设置已添加到您的应用程序。我建议您对每个文件更改使用差异工具选项(d)。

    取消注释new_framework_defaults_6_0.rb中的默认值:

      运行迁移:

    现在,运行bundle install安装剩余的gem,并运行迁移并解决问题(如果有)。

      运行并修复TestCases:

    大规模升级之后,让我们测试您的应用程序。运行您的测试案例;解决是否有任何失败,并解决弃用警告。

      启动本地主机并执行手动测试:

    我建议您对您的应用程序进行一轮手动测试。赶紧动手,开始手动测试您的应用程序。

    现在,让我们进一步进行使用Rails 6的多个数据库设置。

    有了rails 6多数据库支持,您可以拥有多个数据库,并且每个数据库都有一个副本(只读副本)。

    现在,考虑具有单个主数据库的Rails应用程序,现在升级到Rails
    6之后,您需要为一些新表添加新数据库。您的database.yml当前版本如下:

    带导轨6;您可以为主数据库添加副本,也可以通过更新database.yml来添加新数据库,如下所示:

    考虑将副本用于数据库时需要注意的几点:

    .对于主数据库和副本数据库,数据库名称应该相同,因为两个数据库都包含相同的数据。使用副本数据库时,您需要添加一个replica: true
    数据库设置。

    .副本数据库和主数据库的用户名应该不同;主用户将同时具有读取和写入权限,而副本用户将仅具有读取权限别写。

    .添加新数据库时,还需要注意迁移路径。要实现它,您需要添加migrations_path如上所示,在database.yml文件中进行设置。尽管我们有一个副本数据库,但我们没有为其设置迁移路径。

    完成此步骤后,您将添加一个新数据库。现在,让我们为其建立一个模型。要使用一个新的数据库,您需要向您的应用程序添加一个抽象模型类。如下所示:

    现在您可以访问新数据库了;现在让我们简要讨论多个数据库功能:

      1.主数据库和副本数据库之间的自动连接切换:

    要对应用程序使用只读数据库,您需要配置中间件以进行自动连接切换。

    自动连接切换使您的应用程序可以基于HTTP请求方法在主数据库和副本数据库之间进行切换。

    例如,如果您的应用程序收到POST,PUT,DELETE或PATCH请求,则该应用程序将自动写入主数据库。并且,对于诸如GET或HEAD之类的请求,应用程序从副本之一读取。

    配置中间件以进行自动连接切换;取消注释或将以下行添加到应用程序配置。

    仅当读取请求在我们上面配置的范围内时,Rails才将GET或HEAD请求发送到主请求。默认情况下,它将设置为2秒。您可以根据数据库基础结构自由更改它。

      2. 在主数据库和副本数据库之间进行手动连接切换:

    手动连接到副本数据库或主数据库;轨道提供ActiveRecord::Base.connected_to 方法。

    有时,无论请求类型如何,您的应用程序都需要连接到主数据库或副本数据库。在这种情况下,您可以利用connected_to
    ActiveRecord提供的方法。

    通过使用上面的代码,无论请求类型如何,都可以强制您的应用程序连接到博客的数据库。

    现在,此命令使用该连接读取博客数据库的副本并使用它。

      Rails 6的多个数据库不支持哪些功能?

    .分片

    .副本的负载平衡

    .跨多个数据库联接

    我们可以预期这些功能很快就会出现,并可以帮助我们使用Rails 6 super高效地配置,使用和管理多个数据库。

    好了,关于如何在Rails 6中管理多个数据库的信息,介绍到这里就结束了,想了解更多关于数据库的信息,请继续关注。

    AA分享网一个高级程序员的学习、分享的IT资源分享平台
    AA分享网-企业网站源码-PHP源码-网站模板-视频教程-IT技术教程 » 如何在Rails 6中管理多个数据库?
    • 277会员总数(位)
    • 6130资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 784稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情