Что такое changelog, changeset, author и id?
Changelog, changeset, author и id — четыре базовых понятия Liquibase, образующие иерархию миграций.
Changelog — корневой файл (или набор файлов), в котором описаны все изменения БД. Это «журнал» миграций. Changelog может включать другие changelog-файлы через include или includeAll.
Changeset — минимальная единица изменения БД. Каждый changeset содержит одно или несколько изменений, которые применяются как единое целое (в рамках одной транзакции, если СУБД поддерживает DDL-транзакции).
Author — строка, идентифицирующая автора changeset. Обычно указывается имя разработчика или его логин.
Id — уникальный идентификатор changeset в рамках данного changelog-файла. Вместе с author и именем файла образует уникальный ключ changeset.
Уникальность changeset определяется тройкой: id + author + путь к файлу changelog.
Пример в XML
<changeSet id="1" author="ivanov">
<createTable tableName="users">
<column name="id" type="BIGINT" autoIncrement="true">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="username" type="VARCHAR(255)">
<constraints nullable="false" unique="true"/>
</column>
</createTable>
</changeSet>
Пример в YAML
databaseChangeLog:
- changeSet:
id: 1
author: ivanov
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: BIGINT
autoIncrement: true
constraints:
primaryKey: true
nullable: false
- column:
name: username
type: VARCHAR(255)
constraints:
nullable: false
unique: true
На собеседовании: ключевой момент — назвать тройку уникальности (id + author + filename). Частая ошибка — думать, что id уникален глобально, тогда как он уникален только в контексте автора и файла.