Sobes.tech
Middle

Kokia jūsų patirtis dirbant su Liquibase?

sobes.tech AI

Atsakymas iš AI

Patirtis dirbant su Liquibase apima:

  • Duomenų bazės schemų versijų valdymas: Naudojant changelog failus (XML, YAML, JSON) DDL ir DML scenarijams.
  • Migracijų automatizavimas: Liquibase integracija į CI/CD pipelines, siekiant automatiškai taikyti schemos pakeitimus leidimų metu.
  • Darbas su įvairiomis duomenų bazėmis: Patirtis naudojant Liquibase su PostgreSQL, MySQL ir Oracle.
  • Rollback'ai: Sukurti ir išbandyti rollback scenarijus (rollback arba tag).
  • Naudojant komandų eilutę: migracijų vykdymas, changelog failų generavimas ir būsenos tikrinimas.

Pavyzdinė changelog failo struktūra:

<!-- /changelog.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd">

    <include file="changeset/create_users_table.xml" relativeToChangelogFile="true"/>
    <include file="changeset/add_index_to_users_table.xml" relativeToChangelogFile="true"/>

</databaseChangeLog>

Pavyzdinis changeset:

<!-- /changeset/create_users_table.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
         http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-4.0.xsd">

    <changeSet id="create-users-table" author="devops-engineer">
        <createTable tableName="users">
            <column name="id" type="INT">
                <constraints primaryKey="true" nullable="false"/>
            </column>
            <column name="username" type="VARCHAR(50)">
                <constraints nullable="false" unique="true"/>
            </column>
            <column name="created_at" type="TIMESTAMP WITHOUT TIME ZONE" defaultValueComputed="CURRENT_TIMESTAMP"/>
        </createTable>
        <rollback>
            <dropTable tableName="users"/>
        </rollback>
    </changeSet>

</databaseChangeLog>

Naudojant komandų eilutę:

# Taikyti visas pakeitimus
liquibase update

# Sugeneruoti scenarijų rankiniam taikymui
liquibase updateSQL > update.sql

# Grįžti iki tam tikro žymės
liquibase rollback <tag_name>

# Rodyti pakeitimų būseną
liquibase status

Darbas su lentelėmis ir bandymų duomenimis naudojant loadData.

Tipiniai Liquibase taikymo scenarijai:

  • Naujų programų versijų diegimas.
  • Klaidų taisymas duomenų bazėje.
  • Bandymų aplinkų kūrimas.

Pagrindiniai Liquibase privalumai:

  • Duomenų bazės schemos versijų kontrolė.
  • Nepriklausomybė nuo konkrečios SGBD.
  • Pakeitimų atšaukimo galimybė.
  • Lengva integracija į CI/CD.