Миграции

Миграции #

1. Liquibase. Что это и для чего? #

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


2. Какие записи создаёт liquibase во время миграции? #

Liquibase автоматически создаёт несколько служебных таблиц (при первой миграции) и использует их для отслеживания текущего состояния схемы базы данных и применённых миграций

DATABASECHANGELOG - хранит информацию о выполненных миграциях (changelog-файлах).

ПолеОписание
IDУникальный идентификатор изменения
AUTHORАвтор миграции
FILENAMEПуть к файлу миграции (например, changelog.xml)
DATEEXECUTEDДата выполнения изменения
ORDEREXECUTEDПорядок выполнения изменений
MD5SUMХэш содержимого изменения для проверки

DATABASECHANGELOGLOCK - предотвращает одновременное выполнение миграций разными процессами

ПолеОписание
IDИдентификатор блокировки (обычно 1)
LOCKEDФлаг (TRUE или FALSE), показывающий, занята ли блокировка
LOCKGRANTEDВремя предоставления блокировки
LOCKEDBYИнформация о процессе, который удерживает блокировку


3. Зачем нужны инструменты миграции? #

Инструменты миграций (Liquibase, Flyway) нужны для удобства управления миграциями. Основные цели:

  1. автоматизация обновлений - автоматическое применение изменений базы данных (создание таблиц, добавление столбцов, индексов и т.д.)
  2. откат изменений - возможность отменить применённые миграции в случае ошибок
  3. отслеживание изменений - позволяет вести историю всех изменений базы (версионирование)
  4. безопасность - инструменты предотвращают выполнение миграций двумя процессами одновременно (через блокировки)
  5. согласованность - изменения гарантированно применяются одинаково на всех окружениях (локально, тестовые, продакшн)
  6. упрощение совместной работы - разработчики могут синхронизировать свои изменения через централизованные файлы миграции