Перевірка змін моделі даних перед інтеграцією в майстер-версію

1. Загальний опис

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

2. Налаштування та перегляд змін

  1. Створіть версію-кандидат в адміністративному порталі.

    review db changes before merge 1

    review db changes before merge 2

  2. Створіть нову таблицю. Для цього:

    1. Перейдіть до розділу Таблиці та відкрийте Файл опису структури.

      review db changes before merge 3

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

      review db changes before merge 4

      Приклад 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>
    Детальніше про створення таблиць див. у розділі Керування таблицями.
  3. Створіть Search Conditions. Зміни виконайте через інтерфейс Gerrit:

    1. В адміністративному порталі перейдіть на Огляд версії.

    2. У правому верхньому куті натисніть іконку та перейдіть до реєстрового сервісу Gerrit.

      review db changes before merge 5

    3. Натисніть Edit, щоб увімкнути режим редагування.

      review db changes before merge 6

    4. Натисніть Add/Open/Upload. Далі створіть або відкрийте наявний файл із search conditions у директорії data-model.

      review db changes before merge 7

    5. Додайте файл для search condition.

      review db changes before merge 8
      Зображення 1. Приклад створення файлу для критерію пошуку
    6. Додайте search condition у файл.

      review db changes before merge 9

      Приклад 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>
  4. Виконайте первинне завантаження даних до реєстру — initial data load. Це також можна зробити в інтерфейсі Gerrit. Для цього:

    1. Створіть CSV-файл із потрібними даними.

      review db changes before merge 10

      review db changes before merge 11

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

      review db changes before merge 12

      Приклад 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).
  5. Додайте створені файли з вашими наборами змін до головного — main-liquibase.xml. Це можна зробити за допомогою тегу <include> та атрибута file.
    Збережіть натисканням кнопки Save.

    review db changes before merge 13

  6. Опублікуйте зміни натисканням кнопки Publish Edit.

    review db changes before merge 14

  7. Перевірте стан розгортання тимчасової бази даних реєстру:

    1. Після публікації запуститься Jenkins-пайплайн із назвою MASTER-Code-review-registry-regulations.

    2. Слідкуйте за виконанням збірки за посиланням, яке з’явиться внизу сторінки в Gerrit.

      review db changes before merge 15

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

      review db changes before merge 16

  8. Перегляньте зміни у тимчасовій базі даних за допомогою інструмента pgAdmin:

    1. Відкрийте Openshift > Projects > Ваш реєстр.

    2. Перейдіть до Networking > Routes та у пошуку знайдіть роут сервісу pgadmin.

      review db changes before merge 17

      Де знайти логін та пароль для pgadmin?

      Логін та пароль для pgadmin можна знайти у секції Workloads > Secrets, у секреті під назвою pgadmin-secret.

      review db changes before merge 18

    3. В інтерфейсі pgAdmin знайдіть розділ Servers та введіть пароль для системного користувача application_role, щоб встановити з’єднання із реєстровим БД-сервером.

      review db changes before merge 19

      Де знайти пароль для з’єднання із реєстровим БД-сервером?

      Пароль для з’єднання із реєстровим БД-сервером Registry для користувача application_role можна знайти у секції Workloads > Secrets, у секреті під назвою citus-roles-secrets. Скопіюйте пароль у полі appRolePass.

      review db changes before merge 20

      review db changes before merge 21

  9. Визначте тимчасову БД та перегляньте зміни:

    1. Визначте тимчасову базу даних, яка зберігає ваші зміни. Це можна зробити за номером версії-кандидата в URL адміністративного порталу. Наприклад, 601.

      review db changes before merge 22

    2. Відкрийте pgAdmin та знайдіть тимчасову БД. Вона буде доступна за шляхом:
      Servers > Registry > Databases > registry_dev_<номер-версії-кандидата>. Наприклад, registry_dev_601.

      review db changes before merge 23

      • Створені таблиці можна переглянути за шляхом: Schemas > registry > Tables.

        review db changes before merge 24

      • Створені search conditions можна переглянути за шляхом: Schemas > registry > Views.

        review db changes before merge 25

        Критерії пошуку у базі даних є таблицями-представленнями (VIEW), що призначені виключно для читання даних. Конвенція назв для search conditions на рівнях моделі даних та БД збігається, за єдиним винятком — у БД до назви кожного критерію пошуку додається суфікс _v.

        Наприклад, якщо ви створили search condition із назвою get_parent_by_name, то у базі даних ця назва трансформується у get_parent_by_name_v.

© 2023 Платформа Реєстрів.