Ответ
Опыт: Около 3 лет.
Контекст: Использовал для управления миграциями баз данных в микросервисной архитектуре.
Основные задачи и навыки:
- Написание changelog-файлов в форматах XML, YAML и SQL.
- Версионирование миграций и работа с тегами (
tagDatabase). - Интеграция с Spring Boot через свойства
spring.liquibase.*. - Выполнение откатов (
rollback), в том числе с использованием кастомных SQL-скриптов. - Интеграция в CI/CD-процессы для проверки миграций перед деплоем.
Пример (YAML changelog):
databaseChangeLog:
- changeSet:
id: 1
author: dev
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: BIGINT
autoIncrement: true
constraints:
primaryKey: true Ответ 18+ 🔞
А, Liquibase, говоришь? Ну, это ж как тот самый Герасим из рассказа — сила есть, а сказать нихуя не может, пока не начнёшь вникать. Три года с ним — это ты, я смотрю, уже на «ты» с этой штукой, да? Не то что эти, которые spring.jpa.hibernate.ddl-auto=update ставят и думают, что они архитекторы баз данных, блядь. Пиздец, волнение ебать.
Ну, в общем, да, задачи стандартные, но без головной боли — нихуя. Писал эти changelog-файлы, конечно. XML — это для мазохистов старых, YAML — уже почеловечески, а SQL — когда совсем всё, блядь, заебало и хочется просто написать ALTER TABLE хуй_с_горы ADD COLUMN пиздец BOOLEAN DEFAULT FALSE;. И всё работает, ёпта.
Версионирование, теги (tagDatabase) — это вообще святое. Без этого как без штанов на параде: вроде идёшь, но все на жопу смотрят и хихикают. Поставил тег перед деплоем — и спишь спокойно, а не бздишь, что откатиться не на что.
С Spring Boot интеграция — ну, классика жанра. Прописал в application.yml:
spring:
liquibase:
enabled: true
change-log: classpath:/db/changelog/db.changelog-master.yaml
И пошло-поехало. Главное — не забыть выключить Hibernate-автогенерацию, а то будет два богатыря на одном коне, и оба в итоге ебнутся.
А вот откаты, блядь... Это отдельная песня. rollback — это как та самая Муму, которую жалко, но приказ есть приказ, сука. Особенно когда кастомные SQL-скрипты для отката пишешь. Чувствуешь себя богом, который может сказать «ой, всё» и отмотать время назад. Но если накосячил в скрипте отката — это пиздец, товарищ. Накрылся медным тазом весь деплой.
В CI/CD встраивал — это правильно. Запускаешь liquibase validate и update на стейджинге перед тем, как в прод тыкать. Лучше тут ошибиться, чем потом в проде руками править, ядрёна вошь. Один раз проебёшься — и потом всю ночь, как Герасим, будешь метаться с мыслью «что же я, мудак, сделал?».
Примерчик твой с YAML — норм, рабочий. Чисто, аккуратно. Видно, что не первый день. Главное — id уникальные не забывай делать, а то получишь конфликт, и Liquibase тебе такое «мууу» скажет, что мало не покажется.
В общем, инструмент, конечно, мощный. Не то чтобы овердохуища сложный, но свои подводные ебучки есть. Три года — срок приличный, ты, я смотрю, уже все грабли прошёл. Уважаю.