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以及它是否适合你。

我的建议是从所有使用相同数据库的博客应用程序开始,然后在性能成为问题(可能永远不会)时分片。

有很多方法可以加速数据库访问,第一道防线是缓存。

相关问题