Ух ты, Юг звучит довольно круто! Я не уверен ни в одном из готовых решений, которые помогут вам почти так же, как в этом случае, однако, если вы выберете Hibernate в качестве своего решения ORM, вы сможете создать свой собственный набор для постепенного переноса данных без особых проблем.
Вот подход, который я использовал в своем собственном проекте, он работал довольно хорошо для меня в течение нескольких лет и несколько обновлений / изменений схемы:
Ведение таблицы schema_version в базе данных, которая просто определяет число, представляющее версию вашей схемы базы данных. Эта таблица может быть обработана за пределами Hibernate, если вы хотите.
Сохраните "текущий" номер версии для вашей схемы в вашем коде.
Когда номер версии в коде новее, чем у базы данных, вы можете использовать утилиту Hibernate SchemaUpdate, которая обнаружит любые дополнения схемы (ПРИМЕЧАНИЕ, только дополнения), такие как новые таблицы, столбцы и ограничения.
Наконец, я сохранил «сценарий», если вы хотите, чтобы шаги миграции были не просто изменениями схемы, которые были определены по тому номеру версии схемы, для которого они были необходимы. Например, для новых столбцов требовались значения по умолчанию или что-то в этом роде.
Это может звучать как большая работа, особенно если вы работаете в среде, которая позаботилась о вас, но вы можете довольно быстро получить такую настройку, как Hibernate, и ее довольно легко добавить в как вы идете дальше. Я никогда не заканчивал тем, что вносил какие-либо изменения в мою инфраструктуру инкрементного обновления за это время, кроме добавления новых задач миграции.
Надеюсь, кто-нибудь придет с хорошим ответом для более "невнятного" подхода, но я подумал, что поделюсь подходом, который мне очень помог.
Удачи тебе!