0

我打算創建具有相似功能的多個rails博客應用程序。爲了減少花在管理這些rails應用程序上的時間,我決定創建一個單一的內容管理系統來監督它們。例如。 content.example.com內容使用單個mysql數據庫管理多個rails應用程序

在這個CMS的設計中,我一直在討論是否使用包含所有博客應用程序數據的單個mysql數據庫。這個單一數據庫將位於CMS應用程序(「content.example.com」)上,然後其他應用程序將查詢其數據。

博客應用:

//模型Blog.rb

class Blog < ActiveRecord::Base 
establish_connection "external_cms" 
end 

//database.yml

external_cms: 
    adapter: mysql 
    database: root/to/external/cms_db 
    username: user 
    password: password 

在這種情況下的CMS應用程式數據庫將變得非常大快,減緩從博客應用程序查詢查詢。即使索引,我知道這可能不是一個可行的選擇。我讀過幾個博客也要考慮的是,博客應用程序的schema.rb和模型需要與CMS應用程序的相同。在我到目前爲止的測試中發現,schema.rb並不一定是相同的(尚未測試模型是否需要相同)。

在同一個數據庫中運行多個應用程序是否常見?如果不是這是因爲查詢速度減慢以及需要保持schema.rb和模型相同的頭痛問題嗎?

以及索引什麼是我可以加快查詢補償大型數據庫的其他方式?

我可以在保持一個CMS的同時運行單個數據庫嗎?

回答

1

這個問題經常會出現,最好讓你閱讀multitenancy以及它是否適合你。

我的建議是從所有使用相同數據庫的博客應用程序開始,然後在性能成爲問題(可能永遠不會)時分片。

有很多方法可以加速數據庫訪問,第一道防線是緩存。

相關問題