DEV Community

Boring Programming
Boring Programming

Posted on

Почему yaml c liquibase

Пост не про то, что такое 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
Enter fullscreen mode Exit fullscreen mode

Не буду описывать версию для 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)
);
Enter fullscreen mode Exit fullscreen mode

Конечно же меньше букв чем в 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'
);
Enter fullscreen mode Exit fullscreen mode

Для наглядности, тот же 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
Enter fullscreen mode Exit fullscreen mode

Букв больше, но намного читабельней. В основном из-за того, что значения находятся рядом с названиями столбцов.

Также плюс к YAML, что он не так сильно привязан относительно БД. При определенных ограничениях, этот же yaml (json, xml) можно применить например к mongodb.

liquibase для визуальных конструкторов

Вообще считаю, если нужно будет сделать какой-то визуальный конструктор для структуры БД, ну и/или для данных, то liquibase достаточно подходящий продукт.

Top comments (1)

Collapse
 
tairs profile image
Info Comment hidden by post author - thread only accessible via permalink
Tair Sabirgaliev

Кто ты? И почему я подписан на твой канал в телеге?

Some comments have been hidden by the post's author - find out more