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