Что такое 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 до этого тега.