Sobes.tech
Middle

Milyen tapasztalata van a Liquibase-szal?

sobes.tech MI

Válasz az MI-től

A Liquibase-szal kapcsolatos tapasztalatok a következők:

  • Adatbázis séma verziókezelése: changelog fájlok (XML, YAML, JSON) használata DDL és DML szkriptekhez.
  • Migrációk automatizálása: Liquibase integrálása CI/CD pipeline-okba a séma változtatások automatikus alkalmazásához kiadások során.
  • Különböző adatbázisok kezelése: Tapasztalat Liquibase használatában PostgreSQL, MySQL és Oracle adatbázisokkal.
  • Rollback-ek: rollback szkriptek létrehozása és tesztelése (rollback vagy tag).
  • Parancssori használat: migrációk végrehajtása, changelog fájlok generálása és státusz ellenőrzése.

Példa egy changelog fájl szerkezetére:

<!-- /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>

Példa egy changeset-re:

<!-- /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>

Parancssori használat:

# Minden elérhető változtatás alkalmazása
liquibase update

# Szkript generálása kézi alkalmazáshoz
liquibase updateSQL > update.sql

# Visszaállítás egy adott tag-ig
liquibase rollback <tag_name>

# Változások státuszának megjelenítése
liquibase status

Adattáblák és tesztadatok kezelése loadData-val.

A Liquibase tipikus alkalmazási forgatókönyvei:

  • Új verziók telepítése alkalmazásokhoz.
  • Hibák javítása az adatbázisban.
  • Tesztkörnyezetek létrehozása.

A Liquibase fő előnyei:

  • Az adatbázis séma verziókezelése.
  • Függetlenség a konkrét DBMS-től.
  • Változtatások visszavonásának lehetősége.
  • Könnyű integráció CI/CD folyamatokba.