欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 數據庫 > 如何在Rails 6中管理多個數據庫?

如何在Rails 6中管理多個數據庫?

2020-07-23 16:35:48 | 來源:中培企業IT培訓網

隨著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中管理多個數據庫的信息,介紹到這里就結束了,想了解更多關于數據庫的信息,請繼續關注中培偉業。

標簽: 數據庫
主站蜘蛛池模板: 啪啪啪免费视频 | 五月久久久综合一区二区人妻 | 成人AV综合在线网站 | 美女裸体无遮挡免费视频网站 | 忘忧草社区www日本高清图片 | 好深好爽办公室做视频 | 人妻无码一区二区三区四区 | 久久久久国色AⅤ免费看 | 黄色. | JAPANESE厨房乱TUB | 老色鬼永久精品网站 | 麻豆国产原创视频在线播放 | 国产日产欧洲无码视频 | 韩日av一区二区 | 欧美猛男军人gay巨大 | 亚洲女优视频 | 欧美老熟妇AAAAAA | 亚洲成av人片在线观看无码不卡 | 4438x成人免费| 欧洲裸体兽交大黑妞 | AV无码一区二区三区 | 92久久精品一区二区 | 午夜精品久久久久久久久久久 | 无码AV我不卡在线观看 | 欧美极P品少妇的XXXXX | 丝袜护士强制脚交 | 亚洲A无码综合A国产AV中文 | 欧美最猛性xxxx | 亚洲一区二区三区四区五区高 | 俄罗斯兽交黑人又大又粗水汪汪 | 国产真实乱人偷精品人妻 | 99久热精品 | 精品国产国语对白久久免费 | 在教室伦流澡到高潮H强圩动漫 | 亚洲精品久久无码av片动漫网站 | 天天做天天躁天天躁 | 亚洲成av人网站在线播放 | 大狠狠大臿蕉香蕉大视频 | 免费AV无码不卡在线观看 | 高清日韩av在线影院 | 美脚丝袜一区二区三区在线观看 |