Перевірка змін моделі даних перед інтеграцією в майстер-версію
1. Загальний опис
Ця сторінка пропонує докладний підхід до перевірки змін моделі даних перед інтеграцією в майстер-версію. Тут ви знайдете кроки для створення таблиць, налаштування критеріїв пошуку (Search conditions), впровадження первинного завантаження даних (initial data load) та способи перегляду цих змін у тимчасовій базі даних за допомогою pgAdmin.
2. Налаштування та перегляд змін
-
Створіть версію-кандидат в адміністративному порталі.


-
Створіть нову таблицю. Для цього:
-
Перейдіть до розділу Таблиці та відкрийте Файл опису структури.

-
Додайте необхідний Changeset, що створює таблицю.

Приклад XML-схеми
<changeSet id="11111" author="ab"> <comment>CREATE TABLE parent</comment> <createTable tableName="parent" ext:historyFlag="true"> <column name="id" type="UUID" defaultValueComputed="uuid_generate_v4()"> <constraints nullable="false" primaryKey="true" primaryKeyName="pk_parent_id"/> </column> <column name="parent_full_name" type="VARCHAR(255)" remarks = "Батьківське ім'я"></column> <column name="phone_number" type="VARCHAR(255)" remarks = "Номер мобільного"></column> </createTable> </changeSet>
Детальніше про створення таблиць див. у розділі Керування таблицями. -
-
Створіть Search Conditions. Зміни виконайте через інтерфейс Gerrit:
-
В адміністративному порталі перейдіть на Огляд версії.
-
У правому верхньому куті натисніть іконку
⋮та перейдіть до реєстрового сервісу Gerrit.
-
Натисніть
Edit, щоб увімкнути режим редагування.
-
Натисніть
Add/Open/Upload. Далі створіть або відкрийте наявний файл із search conditions у директорії data-model.
-
Додайте файл для search condition.
Зображення 1. Приклад створення файлу для критерію пошуку -
Додайте search condition у файл.

Приклад XML-схеми
<?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://artifactory.control-plane-nexus/nexus/repository/extensions/com/epam/digital/data/platform/dbchangelog/4.5/dbchangelog-4.5.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://artifactory.control-plane-nexus/nexus/repository/extensions/com/epam/digital/data/platform/liquibase-ext-schema/latest/liquibase-ext-schema-latest.xsd"> <changeSet author="ab" id="11112"> <ext:createSearchCondition name="get_parent_by_name" limit="100"> <ext:table name="parent"> <ext:column name="phone_number"/> <ext:column name="parent_full_name" searchType="startsWith"/> </ext:table> </ext:createSearchCondition> </changeSet> </databaseChangeLog>
-
-
Виконайте первинне завантаження даних до реєстру — initial data load. Це також можна зробити в інтерфейсі Gerrit. Для цього:
-
Створіть CSV-файл із потрібними даними.


Детальніше про формат файлу для первинного завантаження див. у розділі Вимоги до файлів для завантаження до БД. -
Додайте changeset, який завантажує CSV-дані до БД.

Приклад XML-схеми
<?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://artifactory.control-plane-nexus/nexus/repository/extensions/com/epam/digital/data/platform/dbchangelog/4.5/dbchangelog-4.5.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://artifactory.control-plane-nexus/nexus/repository/extensions/com/epam/digital/data/platform/liquibase-ext-schema/latest/liquibase-ext-schema-latest.xsd"> <property name="dataLoadPath" value="/tmp/data-load/"/> <changeSet id="11113" author="ab"> <sql dbms="postgresql" endDelimiter=";" splitStatements="true" stripComments="true"> CALL p_load_table_from_csv('parent','${dataLoadPath}/parents.csv', array['parent_full_name','phone_number']); </sql> </changeSet> </databaseChangeLog>Детальніше про initial load ви можете переглянути на сторінці Первинне завантаження даних реєстру (initial load).
-
-
Додайте створені файли з вашими наборами змін до головного — main-liquibase.xml. Це можна зробити за допомогою тегу
<include>та атрибутаfile.
Збережіть натисканням кнопкиSave.
-
Опублікуйте зміни натисканням кнопки
Publish Edit.
-
Перевірте стан розгортання тимчасової бази даних реєстру:
-
Після публікації запуститься Jenkins-пайплайн із назвою MASTER-Code-review-registry-regulations.
-
Слідкуйте за виконанням збірки за посиланням, яке з’явиться внизу сторінки в Gerrit.

Пайплайн, що пройшов успішно, вказує на застосування змін у тимчасовій базі даних.

-
-
Перегляньте зміни у тимчасовій базі даних за допомогою інструмента pgAdmin:
-
Відкрийте Openshift > Projects > Ваш реєстр.
-
Перейдіть до Networking > Routes та у пошуку знайдіть роут сервісу
pgadmin.
Де знайти логін та пароль для pgadmin?
Логін та пароль для
pgadminможна знайти у секції Workloads > Secrets, у секреті під назвою pgadmin-secret.
-
В інтерфейсі pgAdmin знайдіть розділ Servers та введіть пароль для системного користувача
application_role, щоб встановити з’єднання із реєстровим БД-сервером.
Де знайти пароль для з’єднання із реєстровим БД-сервером?
Пароль для з’єднання із реєстровим БД-сервером
Registryдля користувачаapplication_roleможна знайти у секції Workloads > Secrets, у секреті під назвою citus-roles-secrets. Скопіюйте пароль у полі appRolePass.

-
-
Визначте тимчасову БД та перегляньте зміни:
-
Визначте тимчасову базу даних, яка зберігає ваші зміни. Це можна зробити за номером версії-кандидата в URL адміністративного порталу. Наприклад,
601.
-
Відкрийте pgAdmin та знайдіть тимчасову БД. Вона буде доступна за шляхом:
Servers > Registry > Databases >registry_dev_<номер-версії-кандидата>. Наприклад,registry_dev_601.
-
Створені таблиці можна переглянути за шляхом: Schemas >
registry> Tables.
-
Створені search conditions можна переглянути за шляхом: Schemas >
registry> Views.
Критерії пошуку у базі даних є таблицями-представленнями (
VIEW), що призначені виключно для читання даних. Конвенція назв для search conditions на рівнях моделі даних та БД збігається, за єдиним винятком — у БД до назви кожного критерію пошуку додається суфікс_v.Наприклад, якщо ви створили search condition із назвою
get_parent_by_name, то у базі даних ця назва трансформується уget_parent_by_name_v.
-
-