Вопрос о переносе сайта на Rails / Grails

#ruby-on-rails #grails #migration

#ruby-on-rails #grails #миграция

Вопрос:

У меня вопрос по Grails / Rails.

У нас есть приложение на Java, и мне было интересно, можно ли его написать на Grails или Rails. (Я новичок в Grails и Rails, поэтому надеюсь, что это не глупые вопросы.)

Проблема в том, что у нас есть несколько источников данных. Наше приложение использует множество баз данных.

Наши пользователи разделены на группы. У нас есть одна глобальная база данных, которая содержит информацию о пользователях, группах и некоторую глобальную информацию, а также базу данных для каждой группы. База данных для каждой группы содержит данные для этой группы. Существует одна схема для глобальной базы данных и одна для всех групповых баз данных.

Когда кто-то создает учетную запись, в глобальной базе данных создаются записи для новой группы и для пользователя. Затем для этой группы создается новая база данных в MySQL. Это делается с помощью Java EE EntityManagers. Для глобальной базы данных есть один EntityManager. Когда создается новая группа или когда пользователь входит в систему, Глобальный EntityManager считывает информацию из таблицы group и создает объекты EntityManager и Connection для базы данных группы, и они сохраняются в сеансе пользователя.

У нас есть несколько баз данных, работающих на одном сервере MySQL. Мы не храним некоторую информацию в базе данных MySQL, а некоторую — в базе данных Oracle; похоже, это наиболее распространенный сценарий, который я вижу, когда я гуглил о работе с несколькими базами данных в Rails. Я немного погуглил, и похоже, что множество страниц о работе с несколькими базами данных в Rails предназначены для работы с уникальной схемой в каждой базе данных. У нас есть две схемы, но одна из них используется во многих базах данных. Информация о подключении для каждой базы данных группы находится в глобальной базе данных. В файле содержится только информация для глобальной базы данных. Является ли добавление дополнительных записей в database.yml единственным способом использовать больше баз данных?

Я нашел это, и я думаю, что это может быть то, что я ищу: http://programmerassist.com/article/302

Есть идеи?

Ответ №1:

В Grails есть хороший плагин для источников данных, но он предназначен для случая, когда разные классы домена поступают из разных баз данных, а не для нескольких баз данных для одного типа объекта. Однако он предоставляет метод получения шаблона гибернации, настроенного для определенного источника данных, поэтому вы должны быть в состоянии делать то, что хотите.

Единственной сложной частью может быть динамическое добавление источников данных во время выполнения. Автор плагина очень активен в сообществе и очень полезен, поэтому я думаю, вы сможете заставить его работать.

Если вы разработчик веб-приложений на Java, Grails будет гораздо более простым фреймворком для изучения, чем Rails (ИМО, будучи разработчиком Java, который использовал оба).