2 приложения Rails, использующих 1 базу данных MySQL - каковы риски? - PullRequest
2 голосов
/ 25 марта 2011

ОКРУЖАЮЩАЯ СРЕДА:
Ubuntu hardy LTS, Apache 2, Passenger
Виртуальный сервер Один: rails 2.3.8 доступ к приложению MySQL common_database
Виртуальный сервер два: доступ к приложению rails 3.0.4та же MySQL common_database

Первое приложение регулярно используется нашими клиентами.Второе приложение выпущено, но в настоящее время увидит свет.База данных, кажется, работает нормально.

Кто-то посоветовал мне, что эта конфигурация может привести к повреждению базы данных.Мы ожидаем, что второе приложение в конечном итоге получит интенсивное использование.Это убило бы некоторый импульс, если база данных была повреждена.Еще несколько фактов:

  1. Ни одно из приложений не имеет возможности изменять структуру базы данных.
  2. Оба приложения будут одновременно обращаться к одним и тем же таблицам.
  3. Этоневозможно, чтобы оба приложения пытались обновить одну и ту же запись одновременно.

Кто-нибудь испытывал повреждение базы данных MySQL, доступ к которой осуществляется в конфигурации такого типа?Удалось ли вам преодолеть проблему?Как?

1 Ответ

4 голосов
/ 25 марта 2011

Что было сделано для риска коррупции?

Пока вы не используете rake db: migrate и оба приложения имеют одинаковые модели, у вас примерно одинаковые риски, как если бы два или болеевеб-серверы с той же версией приложения были раскручены.Если существует расхождение в ожидании того, как схема базы данных выглядит между двумя приложениями, вы можете столкнуться с проблемами, особенно если расхождение связано с внешними ключами или логикой приложения, основанной на магических значениях.

При любых одновременных манипуляциях с базой данных вы сталкиваетесь с категорией проблем, связанных с одновременным изменением одних и тех же записей (кто выигрывает, когда два клиента пытаются изменить один и тот же фрагмент данных; какую модель блокировки вы используете и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...