2012-01-17 127 views
2

Heroku的database followers非常酷。它們允許您創建一個獨立的數據庫,並自動與主數據庫保持同步。從一個數據庫讀取並寫入另一個Rails 2.3

我想用這種技術來訪問我的跟隨者數據庫,而不是我的主數據庫昂貴的讀操作(但很明顯,我一直想寫信給我的主數據庫)

是否有可能同時訪問數據庫(掌握寫作和追隨者閱讀)當我在我的生產環境?我的理想API應該是類似於Post.use_db(:follower).find(1)Post.find(1, :use_db => :follower)

回答

4

DbCharmer已經暫停

在過去的2年(同時試圖讓DbCharmer使用Rails 4.0兼容),它已成爲越來越明顯,我只是不想再這樣下去了。我不需要DbCharmer來支持Rails 4.0+,但很顯然很多用戶都需要它,並且不斷地在問題和郵件列表中嘮叨,要求更新會對我產生很多焦慮,焦慮我不能做太多關於(最糟糕的一種)。結果,因爲我根本沒有看到有任何好的理由繼續對抗這場艱苦的戰鬥(而開發這樣的ActiveRecord這樣的東西是一場不斷的戰鬥!)我正式放棄read more

馬卡拉可能是一種替代方法:github.com/taskrabbit/makara

原來的答覆

據我所知,Rails不提供此功能的開箱。不過,我發現了一種名爲db-charmer的寶石,它似乎與您正在尋找的東西非常接近。

這裏是最好的部分(每查詢連接管理):

有時候,你有,你知道你要在主運行SELECT查詢。這可能會發生,例如,當您剛剛添加了一些數據,並且需要將其讀回來,並且不確定它是否完成了對奴隸的所有操作。對於這種情況,和其他幾個人有一組,我們已經加入的ActiveRecord模型的方法:

User.on_master.find_by_activation_code(code) 

on_slave - 要運行該方法用於力查詢即使在之前被迫使用主設備的情況下也是從設備。如果有多個奴隸,則隨機選擇一個奴隸。這個方法也有兩種形式:block和proxy。

on_db(連接) - 該方法使前面兩個方法成爲可能。它用於將模型的連接切換到某個數據庫以獲取一小段代碼甚至一條語句(兩種形式)。它接受與switch_connection_to方法相同的值範圍。例如:

Comment.on_db(:olap).count 
Post.on_db(:foo).find(:first) 
+1

db-charmer已經退役。 – 2017-12-28 04:22:24

相關問題