性少妇vide0seⅹfree_国产剧情视频在线观看_日日碰夜夜爽_九九这里只有精品视频_性free毛茸茸偷窥videos_国产v亚洲

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁(yè) > IT資訊 > 數(shù)據(jù)庫(kù) > 如何在Rails 6中管理多個(gè)數(shù)據(jù)庫(kù)?

如何在Rails 6中管理多個(gè)數(shù)據(jù)庫(kù)?

2020-07-23 16:35:48 | 來(lái)源:中培企業(yè)IT培訓(xùn)網(wǎng)

隨著Rails 6的發(fā)布,宣布的新功能之一是對(duì)多個(gè)數(shù)據(jù)庫(kù)的支持。那么如何在Rails 6中管理多個(gè)數(shù)據(jù)庫(kù)?當(dāng)我們一個(gè)應(yīng)用程序中,努力有效地管理獨(dú)立的DB時(shí),會(huì)讓你大吃一驚。人們想要Rails 6支持多個(gè)數(shù)據(jù)庫(kù)的原因有很多,使用SQL數(shù)據(jù)庫(kù)存儲(chǔ)用戶(hù)數(shù)據(jù),使用NoSQL存儲(chǔ)位置數(shù)據(jù);有多個(gè)SQL數(shù)據(jù)庫(kù)來(lái)管理單獨(dú)的應(yīng)用程序,但是一個(gè)應(yīng)用程序可能需要直接訪(fǎng)問(wèn)另一個(gè)數(shù)據(jù)庫(kù);管理多個(gè)NoSQL和Redis數(shù)據(jù)庫(kù)以存儲(chǔ)不同種類(lèi)的數(shù)據(jù)等。

當(dāng)面對(duì)使用多個(gè)數(shù)據(jù)庫(kù)時(shí),通常,一個(gè)充當(dāng)主服務(wù)器,而其他服務(wù)器充當(dāng)從服務(wù)器。因?yàn)槲沂窃赗ails 6發(fā)布之前進(jìn)行管理的,所以我使用了一種不太理想的方式(讀取修補(bǔ)程序/ hacky)來(lái)完成此任務(wù)。我為第二個(gè)數(shù)據(jù)庫(kù)創(chuàng)建了一個(gè)單獨(dú)的YAML文件,用于存儲(chǔ)連接信息。這是一個(gè)示例文件:

second_database.yaml

adapter: db_adapter

encoding: db_encoding

pool: db_pool

username: db_username

password: db_password

database: db_name

host: db_host

  要訪(fǎng)問(wèn)多個(gè)數(shù)據(jù)庫(kù),每次:

通過(guò)從YAML文件中讀取連接信息來(lái)建立連接

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']

)

  查詢(xún)數(shù)據(jù)

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

關(guān)閉連接

connection.close

但是,發(fā)布新的Rails 6時(shí),您可能不必費(fèi)心(并且可以自己編寫(xiě)代碼)來(lái)管理多個(gè)數(shù)據(jù)庫(kù)。

Rails 6啟動(dòng)后,我就升級(jí)了我的應(yīng)用程序,以利用多個(gè)數(shù)據(jù)庫(kù)支持的好處。讓我們逐步了解升級(jí)并為多個(gè)數(shù)據(jù)庫(kù)進(jìn)行設(shè)置。

首先,檢查并更新ruby版本至2.5,因?yàn)閞ails 6必須要求ruby 2.5或更高版本。

  將您的ruby版本升級(jí)到2.5或更高版本:

在ruby更新期間,可能僅由于版本升級(jí)而獲得語(yǔ)法錯(cuò)誤或棄用警告。

請(qǐng)逐步更新紅寶石版本-不要直接跳轉(zhuǎn)到最新的紅寶石版本;這會(huì)給您帶來(lái)很多問(wèn)題。

更新到下一個(gè)增量版本;解決錯(cuò)誤和警告;運(yùn)行并解決測(cè)試用例,然后重復(fù)該過(guò)程。

  將rails升級(jí)到5.2系列的最新版本:

由于本文僅涵蓋了從導(dǎo)軌5.2到導(dǎo)軌6的升級(jí)準(zhǔn)則;請(qǐng)確保您使用的是5.x系列的最新版本。

  更新Rails 6版本的gemfile:

現(xiàn)在該更新Gemfile中的rails版本了。在您的gem文件中更改rails gem版本。

在終端中運(yùn)行bundle update rails命令以更新rails和其他相關(guān)的gem。

  在終端中運(yùn)行rails app:update:

通過(guò)運(yùn)行此命令,您會(huì)發(fā)現(xiàn)一些新的配置設(shè)置已添加到您的應(yīng)用程序。我建議您對(duì)每個(gè)文件更改使用差異工具選項(xiàng)(d)。

取消注釋new_framework_defaults_6_0.rb中的默認(rèn)值:

  運(yùn)行遷移:

現(xiàn)在,運(yùn)行bundle install安裝剩余的gem,并運(yùn)行遷移并解決問(wèn)題(如果有)。

  運(yùn)行并修復(fù)TestCases:

大規(guī)模升級(jí)之后,讓我們測(cè)試您的應(yīng)用程序。運(yùn)行您的測(cè)試案例;解決是否有任何失敗,并解決棄用警告。

  啟動(dòng)本地主機(jī)并執(zhí)行手動(dòng)測(cè)試:

我建議您對(duì)您的應(yīng)用程序進(jìn)行一輪手動(dòng)測(cè)試。趕緊動(dòng)手,開(kāi)始手動(dòng)測(cè)試您的應(yīng)用程序。

現(xiàn)在,讓我們進(jìn)一步進(jìn)行使用Rails 6的多個(gè)數(shù)據(jù)庫(kù)設(shè)置。

有了rails 6多數(shù)據(jù)庫(kù)支持,您可以擁有多個(gè)數(shù)據(jù)庫(kù),并且每個(gè)數(shù)據(jù)庫(kù)都有一個(gè)副本(只讀副本)。

現(xiàn)在,考慮具有單個(gè)主數(shù)據(jù)庫(kù)的Rails應(yīng)用程序,現(xiàn)在升級(jí)到Rails 6之后,您需要為一些新表添加新數(shù)據(jù)庫(kù)。您的database.yml當(dāng)前版本如下:

帶導(dǎo)軌6;您可以為主數(shù)據(jù)庫(kù)添加副本,也可以通過(guò)更新database.yml來(lái)添加新數(shù)據(jù)庫(kù),如下所示:

考慮將副本用于數(shù)據(jù)庫(kù)時(shí)需要注意的幾點(diǎn):

.對(duì)于主數(shù)據(jù)庫(kù)和副本數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)名稱(chēng)應(yīng)該相同,因?yàn)閮蓚€(gè)數(shù)據(jù)庫(kù)都包含相同的數(shù)據(jù)。使用副本數(shù)據(jù)庫(kù)時(shí),您需要添加一個(gè)replica: true 數(shù)據(jù)庫(kù)設(shè)置。

.副本數(shù)據(jù)庫(kù)和主數(shù)據(jù)庫(kù)的用戶(hù)名應(yīng)該不同;主用戶(hù)將同時(shí)具有讀取和寫(xiě)入權(quán)限,而副本用戶(hù)將僅具有讀取權(quán)限別寫(xiě)。

.添加新數(shù)據(jù)庫(kù)時(shí),還需要注意遷移路徑。要實(shí)現(xiàn)它,您需要添加migrations_path如上所示,在database.yml文件中進(jìn)行設(shè)置。盡管我們有一個(gè)副本數(shù)據(jù)庫(kù),但我們沒(méi)有為其設(shè)置遷移路徑。

完成此步驟后,您將添加一個(gè)新數(shù)據(jù)庫(kù)。現(xiàn)在,讓我們?yōu)槠浣⒁粋€(gè)模型。要使用一個(gè)新的數(shù)據(jù)庫(kù),您需要向您的應(yīng)用程序添加一個(gè)抽象模型類(lèi)。如下所示:

現(xiàn)在您可以訪(fǎng)問(wèn)新數(shù)據(jù)庫(kù)了;現(xiàn)在讓我們簡(jiǎn)要討論多個(gè)數(shù)據(jù)庫(kù)功能:

  1.主數(shù)據(jù)庫(kù)和副本數(shù)據(jù)庫(kù)之間的自動(dòng)連接切換:

要對(duì)應(yīng)用程序使用只讀數(shù)據(jù)庫(kù),您需要配置中間件以進(jìn)行自動(dòng)連接切換。

自動(dòng)連接切換使您的應(yīng)用程序可以基于HTTP請(qǐng)求方法在主數(shù)據(jù)庫(kù)和副本數(shù)據(jù)庫(kù)之間進(jìn)行切換。

例如,如果您的應(yīng)用程序收到POST,PUT,DELETE或PATCH請(qǐng)求,則該應(yīng)用程序?qū)⒆詣?dòng)寫(xiě)入主數(shù)據(jù)庫(kù)。并且,對(duì)于諸如GET或HEAD之類(lèi)的請(qǐng)求,應(yīng)用程序從副本之一讀取。

配置中間件以進(jìn)行自動(dòng)連接切換;取消注釋或?qū)⒁韵滦刑砑拥綉?yīng)用程序配置。

僅當(dāng)讀取請(qǐng)求在我們上面配置的范圍內(nèi)時(shí),Rails才將GET或HEAD請(qǐng)求發(fā)送到主請(qǐng)求。默認(rèn)情況下,它將設(shè)置為2秒。您可以根據(jù)數(shù)據(jù)庫(kù)基礎(chǔ)結(jié)構(gòu)自由更改它。

  2. 在主數(shù)據(jù)庫(kù)和副本數(shù)據(jù)庫(kù)之間進(jìn)行手動(dòng)連接切換:

手動(dòng)連接到副本數(shù)據(jù)庫(kù)或主數(shù)據(jù)庫(kù);軌道提供ActiveRecord::Base.connected_to 方法。

有時(shí),無(wú)論請(qǐng)求類(lèi)型如何,您的應(yīng)用程序都需要連接到主數(shù)據(jù)庫(kù)或副本數(shù)據(jù)庫(kù)。在這種情況下,您可以利用connected_to ActiveRecord提供的方法。

通過(guò)使用上面的代碼,無(wú)論請(qǐng)求類(lèi)型如何,都可以強(qiáng)制您的應(yīng)用程序連接到博客的數(shù)據(jù)庫(kù)。

現(xiàn)在,此命令使用該連接讀取博客數(shù)據(jù)庫(kù)的副本并使用它。

  Rails 6的多個(gè)數(shù)據(jù)庫(kù)不支持哪些功能?

.分片

.副本的負(fù)載平衡

.跨多個(gè)數(shù)據(jù)庫(kù)聯(lián)接

我們可以預(yù)期這些功能很快就會(huì)出現(xiàn),并可以幫助我們使用Rails 6 super高效地配置,使用和管理多個(gè)數(shù)據(jù)庫(kù)。

好了,關(guān)于如何在Rails 6中管理多個(gè)數(shù)據(jù)庫(kù)的信息,介紹到這里就結(jié)束了,想了解更多關(guān)于數(shù)據(jù)庫(kù)的信息,請(qǐng)繼續(xù)關(guān)注中培偉業(yè)。

標(biāo)簽: 數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 精品国产一区二区三区久久久 | 日韩欧美国产精品 | www超碰| 成年人啪啪 | 日本无遮挡边做边爱边摸 | 视频一区 视频二区 视频三区 视频四区 国产 | 未禁18成禁人免费无遮挡 | 国产成人a片免费观看 | 免费精产国品一二三产区区大学生 | 激情久久网 | ab黄色片 | 五月婷婷俺也去 | 国产一区二区三区免费视频 | 色婷婷久久综合久 | 久久久久亚洲精品无码系列 | 国产女主播在线一区二区 | 三级黄色视频 | 亚洲—本道在线无码AV发 | 欧美大bbbbbbbbbbbb | 国产资源免费观看 | 国产精品一区二区吃奶在线观看 | 国产精品久久久久无码 | 麻豆91精品一区二区 | 五月天综合在线 | 大量情侣在线偷拍小视频 | 蜜桃欧美 | 四虎网站在线播放 | 狠狠操狠狠插 | 亚洲国产精品推荐 | av2017天堂网| 九九色网| 国产二区在线看 | 强奷人妻日本中文字幕 | 上流社会在线看 | 欧美黑人xxxxx又粗又长动态 | 琪琪看片 | 欧美成人sexfree12p | 国产特黄 | 国产jjzz | 日皮免费视频 | 三级视频小说 |