Управление контентом нескольких рельсовых приложений с использованием единой базы данных MySQL - PullRequest
0 голосов
/ 04 марта 2011

Я намерен создать несколько блоговых приложений с подобными функциями.Чтобы сократить время, затрачиваемое на управление этими приложениями, я решил создать единую систему управления контентом, которая будет контролировать их все.например.content.example.com

При разработке этой CMS я размышлял, использовать ли единую базу данных mysql, содержащую данные для всех приложений для ведения блогов.Эта единичная база данных будет находиться в приложении CMS («content.example.com»), которое другие приложения будут затем запрашивать для своих данных.

Приложение для ведения блогов:

// Блог модели.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 Ответ

1 голос
/ 04 марта 2011

Этот вопрос всплывает часто, для вас лучше прочитать мультитенант и узнать, имеет ли он смысл для вас.

Мой совет: начните со всех ваших приложений для ведения блогов, использующих одну и ту же базу данных, а затем осмотрите, когда производительность станет проблемой (чего может никогда не быть).

Существует много способов ускорить доступ к базе данных, причем первая линия защиты - это кэширование.

...