Kora фреймворк для написания Java / Kotlin приложений с упором на производительность, эффективность, прозрачность сделанный разработчиками Т-Банк / Тинькофф

Kora is a framework for writing Java / Kotlin applications with a focus on performance, efficiency, transparency made by T-Bank / Tinkoff developers

Перейти к содержанию

Миграции

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

Flyway

Модуль для миграции базы данных с помощью инструмента Flyway.

Подключение

Зависимость build.gradle:

implementation "ru.tinkoff.kora:database-flyway"

Модуль:

@KoraApp
public interface Application extends FlywayJdbcDatabaseModule { }

Зависимость build.gradle.kts:

implementation("ru.tinkoff.kora:database-flyway")

Модуль:

@KoraApp
interface Application : FlywayJdbcDatabaseModule

Требует подключения JDBC модуля.

Конфигурация

Пример полной конфигурации, описанной в классе FlywayConfig (указаны значения по умолчанию):

flyway {
    locations = "db/migration" //(1)!
}
  1. Пути директорий где искать скрипты миграции
flyway:
  locations: "db/migration" #(1)!
  1. Пути директорий где искать скрипты миграции

Liquibase

Модуль для миграции базы данных с помощью инструмента Liquibase.

Подключение

Зависимость build.gradle:

implementation "ru.tinkoff.kora:database-liquibase"

Модуль:

@KoraApp
public interface Application extends LiquibaseJdbcDatabaseModule { }

Зависимость build.gradle.kts:

implementation("ru.tinkoff.kora:database-liquibase")

Модуль:

@KoraApp
interface Application : LiquibaseJdbcDatabaseModule

Требует подключения JDBC модуля.

Конфигурация

Пример полной конфигурации, описанной в классе LiquibaseConfig (указаны значения по умолчанию):

liquibase {
    changelog = "db/changelog/db.changelog-master.xml" //(1)!
}
  1. Путь до мастер файла конфигурации миграций
liquibase:
  changelog: "db/changelog/db.changelog-master.xml" #(1)!
  1. Путь до мастер файла конфигурации миграций

Рекомендации

Совет

Мы не рекомендуем использовать модули миграции для работы приложений в окружении где есть горизонтальное масштабирование посредствам увелечения количества реплик рабочего приложения. Так как это будет вести за собой вызов миграции на каждую запущенную реплику. Также имейте в виду что каждый перезапуск приложения также будет вызывать миграции.

В таких случаях рекомендуем например использовать для локальной разработки Flyway Gradle plugin, для тестов использовать запуск Flyway из кода после запуска базы данных, для боевого окружения Kubernetes использовать K8S Job либо миграцию из CI через Flyway Gradle plugin.