Sobes.tech
Middle

Liquibase ilə işləmə təcrübəniz nədir?

sobes.tech Süni İntellekt

AI-dan cavab

Liquibase ilə işləmə təcrübəsi aşağıdakıları əhatə edir:

  • Verilənlər bazası sxemlərinin versiya idarəetməsi: DDL və DML skriptləri üçün changelog fayllarının (XML, YAML, JSON) istifadəsi.
  • Miqrasiya proseslərinin avtomatlaşdırılması: Liquibase-in CI/CD pipeline-larına inteqrasiyası, buraxılışlar zamanı sxem dəyişikliklərinin avtomatik tətbiqi.
  • Fərqli verilənlər bazaları ilə işləmək: Liquibase ilə PostgreSQL, MySQL və Oracle-də təcrübə.
  • Rollback: Geri dönüş skriptlərinin yaradılması və sınaqdan keçirilməsi (rollback və ya tag).
  • Əmrlər satırı ilə işləmə: Miqrasiya əmrlərinin icrası, changelog fayllarının yaradılması və vəziyyətin yoxlanması.

changelog faylının quruluşuna nümunə:

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

changeset nümunəsi:

<!-- /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"/>
            </column>
            <column name="created_at" type="TIMESTAMP WITHOUT TIME ZONE" defaultValueComputed="CURRENT_TIMESTAMP"/>
        </createTable>
        <rollback>
            <dropTable tableName="users"/>
        </rollback>
    </changeSet>

</databaseChangeLog>

Əmrlər satırı ilə işləmə:

# Bütün dəyişiklikləri tətbiq et
liquibase update

# Əl ilə tətbiq üçün skript yarat
liquibase updateSQL > update.sql

# Müəyyən bir etikete geri dön
liquibase rollback <tag_name>

# Dəyişikliklərin vəziyyətini göstər
liquibase status

Referensiya cədvəlləri və test məlumatları ilə loadData istifadə olunur.

Liquibase-in tipik istifadə ssenariləri:

  • Yeni tətbiq versiyalarının yerləşdirilməsi.
  • Verilənlər bazasında səhvlərin düzəldilməsi.
  • Test mühitlərinin yaradılması.

Əsas üstünlükləri:

  • Verilənlər bazası sxemlərinin versiya nəzarəti.
  • Xüsusi SGBD-dən asılılığın olmaması.
  • Dəyişikliklərin geri alınması imkanı.
  • CI/CD pipeline-larına asan inteqrasiya.