Перевірка змін моделі даних перед інтеграцією в майстер-версію
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
.
-
-