Ответ
Liquibase — это инструмент для контроля версий и развертывания изменений схемы базы данных (Database Migration).
Основные задачи, которые я решал:
- Версионирование схемы БД: Все изменения (создание таблиц, индексы, изменения колонок) описывались в файлах changelog (XML/YAML/JSON/SQL) и хранились в системе контроля версий (Git).
- Автоматическое применение миграций: Liquibase отслеживает примененные изменения в служебной таблице
DATABASECHANGELOGи применяет только новые changeSet'ы при запуске. - Обеспечение консистентности: Гарантировал, что схема БД идентична на всех окружениях (dev, staging, production).
- Откат изменений (Rollback): Писал явные rollback-скрипты или использовал автоматический откат для поддерживаемых операций (например,
dropTableдляcreateTable).
Пример changeSet в формате XML:
<changeSet id="create-users-table" author="dev">
<createTable tableName="users">
<column name="id" type="BIGINT" autoIncrement="true">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="email" type="VARCHAR(255)">
<constraints unique="true" nullable="false"/>
</column>
</createTable>
<rollback>
<dropTable tableName="users"/>
</rollback>
</changeSet>
Практический опыт:
- Работа с инкрементальными миграциями (ALTER, DML).
- Преднаполнение данных (тестовыми справочниками) с помощью тега
<loadData>. - Использование контекстов (context) и меток (labels) для условного выполнения изменений (например,
context: "test"илиlabels: "staging"). - Интеграция в Spring Boot через свойства
spring.liquibase.change-logиspring.liquibase.enabled.