Миграция для конкретного модуля с использованием нескольких схем с пролетом и пружинной загрузкой

#spring #postgresql #database-schema #flyway

Вопрос:

у нас есть одна база данных (PostgreSQL) с несколькими схемами. Каждая схема представляет схему базы данных для одного клиента (модуля). Мы хотели бы использовать Flyway для миграции БД. Другое требование состоит в том, чтобы иметь некоторые базовые сценарии, которые выполняются для каждой схемы, а некоторые являются специфичными только для клиента/модуля, что приведет к следующей структуре:

 db/migration  basic  V1.0__init1.sql  V1.1__init2.sql  tenant1  V2.0__tenantspecific1.sql  tenant2  V3.0__tenantspecific1.sql  V3.1__tenantspecific2.sql  

При запуске я хотел бы указать, какой клиент-модуль должен быть запущен, а затем все сценарии в basic каталоге и в указанном tenant каталоге будут перенесены.

Моя первая идея состояла бы в том, чтобы использовать не полное имя (без схемы) в sql-файлах в базовом каталоге и, следовательно, использовать настроенную схему по умолчанию. А для других файлов всегда используйте полное имя (со схемой.). Это означает, что все сценарии выполняются, но изменения, относящиеся к конкретному клиенту, вносятся только в схему, где они мне нужны. Есть ли какие-либо проблемы с номерами версий или есть какие-либо лучшие подходы?