Sobes.tech
Middle

Aké máte skúsenosti s Liquibase?

sobes.tech AI

Odpoveď od AI

Skúsenosti s Liquibase zahŕňajú:

  • Správa verzií schém databáz: Použitie súborov changelog (XML, YAML, JSON) pre skripty DDL a DML.
  • Automatizácia migrácií: Integrácia Liquibase do CI/CD pipeline-ov na automatické použitie zmien schémy pri vydaniach.
  • Práca s rôznymi databázami: Skúsenosti s Liquibase s PostgreSQL, MySQL a Oracle.
  • Rollbacky: Vytváranie a testovanie rollback skriptov (rollback alebo tag).
  • Použitie príkazového riadku: Vykonávanie migrácií, generovanie changelog súborov a kontrola stavu.

Príklad štruktúry changelog súboru:

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

Príklad 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>

Použitie príkazového riadku:

# Aplikovať všetky dostupné zmeny
liquibase update

# Generovať skript pre manuálne použitie
liquibase updateSQL > update.sql

# Vrátiť do určitého tagu
liquibase rollback <tag_name>

# Zobraziť stav zmien
liquibase status

Práca s tabuľkami a testovacími dátami cez loadData.

Typické scenáre použitia Liquibase:

  • Nasadenie nových verzií aplikácií.
  • Oprava chýb v databáze.
  • Vytváranie testovacích prostredí.

Hlavné výhody Liquibase:

  • Kontrola verzií schémy databázy.
  • Nezávislosť od konkrétneho SGBD.
  • Možnosť vrátenia zmien.
  • Jednoduchá integrácia do CI/CD.