【发布时间】:2011-03-04 17:32:43
【问题描述】:
我打算创建多个具有相似功能的 Rails 博客应用程序。 为了减少管理这些 Rails 应用程序所花费的时间,我决定创建一个单一的内容管理系统来监督它们。例如。 content.example.com
在设计这个 CMS 时,我一直在争论是否使用包含所有博客应用程序数据的单个 mysql 数据库。这个单一数据库将位于 CMS 应用程序(“content.example.com”)上,然后其他应用程序将查询其数据。
博客应用:
//model 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 的同时运行单个数据库的替代方法是什么?
【问题讨论】:
标签: ruby-on-rails database-design database-connection content-management-system