Gymterview
junior

Что такое tag и tagDatabase?

Tag — это именованная метка, которая ставится на определённое состояние БД и используется как контрольная точка для отката.

Аналогия из жизни: тег — это как закладка в книге. Если что-то пошло не так после нескольких страниц, вы возвращаетесь к закладке, а не перечитываете с начала.

Установка тега через командную строку

Пример
liquibase tag release-1.0

Эта команда добавляет запись в столбец TAG последнего выполненного changeset в таблице DATABASECHANGELOG.

Установка тега через changeset

Пример
<changeSet id="tag-release-1.0" author="release-manager">
    <tagDatabase tag="release-1.0"/>
</changeSet>

Откат до тега

Пример
liquibase rollback release-1.0

Liquibase откатит все changeset-ы, применённые после указанного тега, в обратном порядке.

Типичная схема использования тегов
<!-- Тег перед релизом -->
<changeSet id="tag-1.0" author="release">
    <tagDatabase tag="release-1.0"/>
</changeSet>

<!-- Миграции релиза 1.1 -->
<changeSet id="add-status-to-users" author="dev">
    <addColumn tableName="users">
        <column name="status" type="VARCHAR(20)" defaultValue="ACTIVE"/>
    </addColumn>
</changeSet>

<!-- Тег после релиза -->
<changeSet id="tag-1.1" author="release">
    <tagDatabase tag="release-1.1"/>
</changeSet>

Теги особенно важны в банковских проектах, где откат до известного стабильного состояния должен быть возможен в любой момент.

На собеседовании: интервьюер может спросить, как быстро откатить релиз. Правильный ответ — использовать теги: ставим тег перед релизом, при проблемах делаем rollback до этого тега.