Sobes.tech
Назад к вопросам
Middle
9

Столкнулись ли вы с Liquibase?

Компании, где спрашивали
ИннотехИннотех

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

Ожидают услышать, что есть практический опыт работы с Liquibase или хотя бы понимание, зачем он нужен в инфраструктуре. Важно показать, что инструмент помогает версионировать изменения схемы БД и безопасно доставлять их в разные окружения. Хорошо, если есть опыт использования changelog, rollback и интеграции с CI/CD.

Определение:

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

Пример использования:

Например, в ML-проекте нужно добавить таблицу для хранения метаданных экспериментов и потом расширить её новым полем. Эти изменения описываются в changelog и автоматически применяются при деплое в dev, staging и prod.

<databaseChangeLog>
    <changeSet id="1" author="dev">
        <createTable tableName="experiments">
            <column name="id" type="bigint">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="name" type="varchar(255)"/>
            <column name="created_at" type="timestamp"/>
        </createTable>
    </changeSet>

    <changeSet id="2" author="dev">
        <addColumn tableName="experiments">
            <column name="status" type="varchar(50)"/>
        </addColumn>
    </changeSet>
</databaseChangeLog>

Пояснение кода:

Код показывает два изменения схемы. Сначала создаётся таблица experiments с первичным ключом и полями для имени и времени создания. Затем к этой таблице добавляется новое поле status. Liquibase отслеживает, какие changeSet уже были применены, поэтому повторный запуск не дублирует изменения.

Ключевые моменты:

  • Liquibase решает задачу управляемых и воспроизводимых миграций БД.
  • Изменения хранятся в changelog и применяются по порядку.
  • Инструмент полезен для командной разработки и CI/CD, чтобы схемы не расходились между окружениями.
  • Поддерживает откат изменений, но на практике rollback нужно проектировать и проверять заранее.
  • В ML/DE-проектах особенно полезен для таблиц с фичами, метаданными экспериментов, логами и аудитом.