Миграции

Миграции #

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

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


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

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

Основные таблицы:

  1. DATABASECHANGELOG

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

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

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

Инструменты миграции (например, Liquibase, Flyway) используются для управления изменениями в структуре базы данных в различных средах разработки.

Основные цели:

  1. Автоматизация обновлений: Автоматическое применение изменений базы данных (создание таблиц, добавление столбцов, индексов и т.д.).
  2. Отслеживание изменений: Позволяет вести историю всех изменений базы (версионирование).
  3. Упрощение совместной работы: Разработчики могут синхронизировать свои изменения через централизованные файлы миграции.
  4. Согласованность: Изменения гарантированно применяются одинаково на всех окружениях (локально, тестовые, продакшн).
  5. Откат изменений: Возможность отменить применённые миграции в случае ошибок.
  6. Безопасность: Инструменты предотвращают выполнение миграций двумя процессами одновременно (через блокировки).