【问题标题】:Content Managment of multiple rails applications using a single mysql database使用单个 mysql 数据库对多个 Rails 应用程序进行内容管理
【发布时间】: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


    【解决方案1】:

    这个问题经常出现,您最好阅读multitenancy 以及它是否对您有意义。

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

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

    【讨论】:

      猜你喜欢
      • 2016-08-16
      • 2012-01-16
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-04
      • 1970-01-01
      • 2019-11-16
      相关资源
      最近更新 更多