Пост не про то, что такое liquibase и как с ним работать. В этом посту хочу написать про то, почему именно yaml для liquibase, а не sql, xml или json.
yaml vs xml, json, sql
Посмотрим на миграцию в yaml (create table) и написанных через json, xml, sql.
yaml version
databaseChangeLog:
- changeSet:
id: 001
comment: create users table
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: uuid
constraints:
primaryKey: true
- column:
name: organization_id
type: uuid
constraints:
nullable: false
- column:
name: name
type: varchar(255)
constraints:
nullable: false
- column:
name: email
type: varchar(255)
constraints:
nullable: false
Не буду описывать версию для xml, json. Версии один в один с yaml вариантом, только больше букв. Также замечу, что xml, json, yaml - они все машиночитаемы, но yaml из перечисленных более человекочитабелен.
Вариант для SQL будет выглядеть так:
create table users (
id uuid,
organization_id uuid not null,
name varchar(255) not null,
email varchar(255) not null
primary key(id)
);
Конечно же меньше букв чем в yaml варианте и читаемо.
А такой текст уже менее читаем
insert into users (
id,
organization_id,
name,
email
) values (
'7a4efabc-3456-4b0a-8e4b-ead7c5167e29',
'9d4b0d8b-6fdd-4703-a464-2eed61201c32',
'John Doe',
'me@example.com'
);
Для наглядности, тот же insert на yaml
- insert:
tableName: users
columns:
- column:
name: id
value: 7a4efabc-3456-4b0a-8e4b-ead7c5167e29
- column:
name: organization_id
value: 9d4b0d8b-6fdd-4703-a464-2eed61201c32
- column:
name: name
value: John Doe
- column:
name: email
value: me@example.com
Букв больше, но намного читабельней. В основном из-за того, что значения находятся рядом с названиями столбцов.
Также плюс к YAML, что он не так сильно привязан относительно БД. При определенных ограничениях, этот же yaml (json, xml) можно применить например к mongodb.
liquibase для визуальных конструкторов
Вообще считаю, если нужно будет сделать какой-то визуальный конструктор для структуры БД, ну и/или для данных, то liquibase достаточно подходящий продукт.
Top comments (1)
Кто ты? И почему я подписан на твой канал в телеге?
Some comments have been hidden by the post's author - find out more