У меня есть приложение Rails 3 - это интерфейс для исследования различных проектов. Мы не хотим, чтобы исследователи случайно помещали данные Duff на сайт пользователя, поэтому мы отделили приложение, используя среду dataentry
, используемую исследователями, и среду production
, которая обращена к пользователю. Исследователи помещают новые данные в базу данных dataentry
, которая проверяется и затем выписывается редактором; данные охватывают более 30 моделей, которые имеют различные ассоциации belongs_to
и has_many
.Перемещение (большое количество) данных между средами
Что я хотел бы сделать, так это то, как периодически перемещать данные из среды ввода данных в живую среду. Я не хочу, чтобы каждый раз удалял базу данных production
и дамп dataentry
, потому что я не хочу потерять, например. подписки от новых пользователей, зарегистрированных на реальном сайте.
Большинство решений, которые я видел для переноса данных между средами, либо включают: а) передачу данных в YAML или подобное, либо b) загрузку целых таблиц в массив Ruby, подключение базы данных к базе данных и выполнение цикла each
массив, чтобы загрузить их обратно. Оба подхода кажутся субоптимальными, когда таблицы очень большие.
Я мог (предположительно) mysqldump
все соответствующие таблицы от dataentry
и передать результат в mysql production
, но это похоже на тупой инструмент.
Есть ли какие-либо рекомендации по управлению подобным «разделением данных» в Rails?
см. Http://www.rubyrep.org/ –
Как насчет того, чтобы реплицировать данные из ввода данных в производство с помощью фильтра на репликацию? http://stackoverflow.com/questions/1731599/can-i-set-up-a-filtered-star-pattern-database-replication Таким образом, он всегда готов, и вам не нужно синхронизировать его навалом? – ryan1234