#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-файлах в базовом каталоге и, следовательно, использовать настроенную схему по умолчанию. А для других файлов всегда используйте полное имя (со схемой.). Это означает, что все сценарии выполняются, но изменения, относящиеся к конкретному клиенту, вносятся только в схему, где они мне нужны. Есть ли какие-либо проблемы с номерами версий или есть какие-либо лучшие подходы?