6. Приложение 1. Настройка firewall (Iptables)

Утилита iptables представляет собой межсетевой экран для операционных систем Linux.

Настройка iptables производится в командной строке, с помощью правил iptables можно разрешать или блокировать прохождение трафика.

Для выполнения настройки межсетевого экрана необходимо создать конфигурационный файл iptables.conf в папке etc/:

/etc/iptables.conf

Далее, необходимо скопировать в файл следующие настройки:

*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
:FILTERS - [0:0]
:DOCKER-USER - [0:0]

-F INPUT
-F DOCKER-USER
-F FILTERS

-A INPUT -i lo -j ACCEPT
-A INPUT -p icmp --icmp-type any -j ACCEPT
-A INPUT -j FILTERS

-A DOCKER-USER -o docker0 -j FILTERS

-A FILTERS -m state --state ESTABLISHED,RELATED -j ACCEPT
-A FILTERS -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A FILTERS -m state --state NEW -m tcp -p tcp --dport 3000 -j ACCEPT
-A FILTERS -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
-A FILTERS -m state --state NEW -m tcp -p tcp --dport 9000 -j ACCEPT
-A FILTERS -j REJECT --reject-with icmp-host-prohibited

COMMIT
  1. Выполнить команду:

iptables-restore -n /etc/iptables.conf
  1. Создать файл:

/etc/systemd/system/iptables.service
  1. Сохранить в файл:

[Unit]
Description=Restore iptables firewall rules
Before=network-pre.target

[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore -n /etc/iptables.conf

[Install]
WantedBy=multi-user.target
  1. Включить iptables, для этого выполнить команду:

sudo systemctl enable --now iptables

или выполнить следующие две команды:

sudo systemctl enable iptables
sudo systemctl start iptables

После обновления правил в файле /etc/iptables.conf, выполнить следующую команду:

sudo systemctl restart iptables

7. Приложение 2. Просмотр выполнения загрузки данных в программу

В данном приложении описан порядок проверки загрузки данных в программу, а также необходимые настройки для подключения к базе данных программы.

7.1. Настройка подключения к базе данных

Для подключения к базе данных программы необходимо выполнить следующие действия:

  • получить у системного программиста учетные записи для доступа к базе данных (название БД, логин и пароль пользователя БД);

  • установить и настроить программу DBeaver (менеджер баз данных);

  • установить и настроить JDBC-драйвер для работы с базой данных программы;

  • выполнить проверку подключения к базе данных.

7.1.1. Установка программы DBeaver

DBeaver — это бесплатное программное обеспечение с открытым исходным кодом для управления базами данных (БД). Для взаимодействия с реляционными БД в программе используется программный интерфейс JDBC (через JDBC-драйвер).

С помощью программы DBeaver оператор может выполнить следующие действия:

  • настроить доступ и подключится к БД;

  • проверить работоспособность БД.

Для установки DBeaver скачайте дистрибутив программы с официального сайта https://dbeaver.io/download/.

Внимание

Необходимо выбрать дистрибутив программы для операционной системы, которая установлена на вашем компьютере.

7.1.1.1. Установка DBeaver для ОС Linux

(В данном разделе описан процесс установки DBeaver, в операционную систему Linux Ubuntu, версия 20.04).

  1. В строке поиска Ubuntu Software введите название программы DBeaver (см. Рисунок - 7.1).

Поиск DBeaver

Рисунок - 7.1 Поиск DBeaver

  1. В предложенном списке (см.рис. выше) выберите программу DBeaver.

  2. Запустите установку программы, для этого нажмите кнопку «Install» (см. Рисунок - 7.2).

Установка DBeaver

Рисунок - 7.2 Установка DBeaver

  1. Дождитесь окончания процесса копирования файлов (см. Рисунок - 7.3).

Процесс копирования файлов программы

Рисунок - 7.3 Процесс копирования файлов программы

  1. После завершения копирования файлов на экране монитора отобразится окно с сообщением об успешной установке программы (см. Рисунок - 7.4).

Завершение установки программы

Рисунок - 7.4 Завершение установки программы

7.1.1.2. Установка DBeaver для ОС Windows

  1. Запустите установочный файл от имени администратора (см. Рисунок - 7.5).

Запуск установочного файла от имени администратора

Рисунок - 7.5 Запуск установочного файла от имени администратора

  1. В открывшемся окне (см. Рисунок - 7.6) выберите язык установки.

Выбор языка установки

Рисунок - 7.6 Выбор языка установки

  1. В окне «Мастер установки DBeaver Community» нажмите кнопку «Далее» (см. Рисунок - 7.7).

Окно «Мастер установки DBeaver Community»

Рисунок - 7.7 Окно «Мастер установки DBeaver Community»

  1. В открывшемся окне «Лицензионное соглашение» нажмите кнопку «Принимаю» (см. Рисунок - 7.8).

Лицензионное соглашение

Рисунок - 7.8 Лицензионное соглашение

  1. В окне «Выбор пользователя» выберите пользователей компьютера, которым будет доступна программа и нажмите кнопку «Далее» (см. Рисунок - 7.9).

Выбор пользователя

Рисунок - 7.9 Выбор пользователя

  1. В окне «Компоненты устанавливаемой программы» выберите компоненты программы, которые требуется установить (см. Рисунок - 7.10) и нажмите кнопку «Далее».

Выбор компонентов программы для установки

Рисунок - 7.10 Выбор компонентов программы для установки

  1. В открывшемся окне «Выбор папки установки» вы можете выбрать папку установки или оставить путь к папке установки по умолчанию. Чтобы изменить папку установки нажмите кнопку «Обзор» и выберите требуемую папку. Для продолжения установки нажмите кнопку «Далее» (см. Рисунок - 7.11).

Выбор папки установки

Рисунок - 7.11 Выбор папки установки

  1. В окне «Папка в меню «Пуск» выберите папку, в которую будет помещен ярлык программы или установите маркер в поле «Не создавать ярлыки», в этом случае ярлык программы не будет создан (см. Рисунок - 7.12). Нажмите кнопку «Установить» для продолжения процесса установки.

Выбор папки в меню «Пуск»

Рисунок - 7.12 Выбор папки в меню «Пуск»

  1. В окне «Копирование файлов» будет отображен процесс копирования установочных файлов программы (см. Рисунок - 7.13).

Копирование файлов программы

Рисунок - 7.13 Копирование файлов программы

  1. Дождитесь окончания процесса копирования файлов. После завершения процесса установки на экране монитора отобразится окно «Завершение работы мастера установки» (см. Рисунок - 7.14). Нажмите кнопку «Готово».

Завершение работы мастера установки

Рисунок - 7.14 Завершение работы мастера установки

7.1.2. Установка и настройка JDBC-драйвера

Для дальнейшей работы c программой оператору необходимо настроить подключение к базам данных программы. Для этого необходимо установить и настроить JDBC-драйвер.

Дистрибутив с актуальной версией JDBC-драйвер находится в установочном пакете с программой.

7.1.2.1. Установка и настройка JDBC-драйвера для ОС Windows

Чтобы установить JDBC-драйвер и настроить подключение к базам данных в программе Dbeaver, работающей под операционной системой Windows, выполните следующие действия:

  1. Откройте программу Dbeaver.

  2. В главном меню программы выберите «Базы данных» и нажмите пункт «Управление драйверами» (см. Рисунок - 7.15).

Управление драйверами

Рисунок - 7.15 Управление драйверами

  1. В открывшемся окне «Менеджер драйверов» нажмите кнопку «Новый» (см. Рисунок - 7.16).

Окно «Менеджер драйверов»

Рисунок - 7.16 Окно «Менеджер драйверов»

  1. В открывшемся окне «Создать драйвер» (см. Рисунок - 7.17) заполните следующую информацию:

  • Имя драйвера: DtmDriver;

  • Имя класса: ru.datamart.prostore.jdbc.Driver;

  • Шаблон URL: jdbc:prostore://{host}:{port}.

Окно «Создать драйвер»

Рисунок - 7.17 Окно «Создать драйвер»

  1. Установите маркер в поле «Без авторизации» и «Пустой пароль».

  2. Перейдите на вкладку «Библиотека» (см. Рисунок - 7.18), нажмите кнопку «Добавить файл» и укажите путь к jar-файлу JDBC-драйвера.

Вкладка «Библиотека»

Рисунок - 7.18 Вкладка «Библиотека»

  1. Нажмите кнопку Ок.

  2. Проверьте, что драйвер был добавлен в программу. Для этого откройте окно «Менеджер драйверов» (База данных > Управление драйверами) и в поисковой строке введите название драйвера – DtmDriver (см. Рисунок - 7.19).

Поиск DtmDriver в Менеджере драйверов

Рисунок - 7.19 Поиск DtmDriver в Менеджере драйверов

7.1.2.2. Подключение к базе данных

Для подключения к базам данных через JDBC-драйвер, выполните следующие действия:

  1. Откройте Dbeaver.

  2. В главном меню программы выберите пункт База данных > Новое соединение.

  3. В окне «Создать соединение» в поисковой строке введите dtmdriver (см. Рисунок - 7.20).

Установка нового соединения с базой данных

Рисунок - 7.20 Установка нового соединения с базой данных

  1. Выберите DtmDriver и нажмите кнопку «Далее».

В окне «Настройка соединения» (см. Рисунок - 7.21) заполните следующие поля:

  • Хост - DNS-name или IP адрес сервера базы данных. Например, 172.16.0.17.

  • Порт - порт для сервера базы данных, например, 9090.

В результате выполненных действий, в поле «JDBC URL» будет отображено следующее значение jdbc:prostore://172.16.0.17:9090 (см. рис. ниже).

Настройка соединения

Рисунок - 7.21 Настройка соединения

  1. Нажмите кнопку «Тест соединения» для проверки подключения.

В случае успешного подключение отобразится сообщение о корректном подключении (см. Рисунок - 7.22).

Сообщение об успешном подключении к БД

Рисунок - 7.22 Сообщение об успешном подключении к БД

  1. Закройте окно проверки соединения, для этого нажмите кнопку «ОК».

  2. В окне «Настройка базового соединения» нажмите кнопку «Готово».

7.1.2.3. Установка и настройка драйвера JDBC-драйвер для ОС Linux

В данном разделе описан процесс установки драйвера в Dbeaver, работающий под управлением операционной системы Linux Ubuntu, версия 20.04.

Чтобы установить драйвер и настроить подключение к базам данных, выполните следующие действия:

  1. Откройте программу Dbeaver.

  2. В главном меню программы выберите «Database» и нажмите пункт «Driver Manager» (см. Рисунок - 7.23).

Управление драйверами

Рисунок - 7.23 Управление драйверами

  1. В открывшемся окне «Driver Manager» нажмите кнопку «New» (см. Рисунок - 7.24).

Окно «Driver Manager»

Рисунок - 7.24 Окно «Driver Manager»

  1. В открывшемся окне «Create new driver» (см. Рисунок - 7.25) заполните следующую информацию:

  • Driver Name: DtmDriver;

  • Class Name: ru.datamart.prostore.jdbc.Driver;

  • URL Template: jdbc:prostore://{host}:{port}.

Окно «Create new driver»

Рисунок - 7.25 Окно «Create new driver»

  1. Установите маркер в поле «No authentication» и «Allow Empty Password».

  2. Во вкладке «Libraries» укажите путь к jar-файлу с JDBC-драйвер.

  3. Нажмите кнопку «Ок».

  4. Проверьте, что драйвер был добавлен в программу. Для этого в окне «Driver Manager» в поисковой строке введите название драйвера – DtmDriver (см. Рисунок - 7.26).

Окно «Поиск DtmDriver в Driver Manager»

Рисунок - 7.26 Окно «Поиск DtmDriver в Driver Manager»

7.1.2.4. Подключение к базе данных

Для подключения к базам данных через JDBC-драйвер, выполните следующие действия:

  1. Откройте программу Dbeaver.

  2. В главном меню программы выберите пункт Database > Connect to a Database.

  3. В окне «Connect to a Database» в поисковой строке введите dtmdriver (см. Рисунок - 7.27).

Поиск DtmDriver при создании нового подключения

Рисунок - 7.27 Окно Поиск DtmDriver при создании нового подключения

  1. Выберите DtmDriver (см. Рисунок - 7.28).

Установка нового соединения с базой данных

Рисунок - 7.28 Установка нового соединения с базой данных

  1. В окне «Connection Settings» (см. Рисунок - 7.29) заполните следующие поля:

  • Хост - DNS-name или IP адрес сервера базы данных. Например, 172.16.0.17.

  • Порт - порт для сервера базы данных, например, 9090.

Настройка базового подключения

Рисунок - 7.29 Настройка базового подключения

  1. Нажмите кнопку «Connection test» для проверки подключения.

  2. В случае успешного подключение отобразится сообщение об успешном подключении (см. Рисунок - 7.30).

Сообщение об успешном подключении к БД

Рисунок - 7.30 Сообщение об успешном подключении к БД

  1. Нажмите кнопку «Ok».

7.1.3. Проверка загрузки данных в БД

Данная проверка описывает возможность загрузки данных и проверку того, что данные были загружены. Для проверки загрузки данных выполните следующие действия:

  • создайте в программе тестовую базу данных test_upload_data с тремя таблицами: Passenger, Ticket и Trip;

  • проверьте, что записи в таблицах отсутствуют;

  • загрузите через CSV-uploader в таблицы Ticket и Trip тестовые данные;

  • проверьте, что данные в таблицы Ticket и Trip были загружены, а в таблице Passenger записи отсутствуют.

Примечание

Проверку загрузки данных следует проводить на тестовом стенде.

Примечание

В случае использования VPN следует проверить его настройки и подключение.

7.1.4. Создание тестовой БД

  1. Откройте программу Dbeaver, установите подключение к БД программы и проверьте, что логическая БД test_upload_data отсутствует, для этого выполните следующий sql-запрос:

SELECT *
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name = UPPER('test_upload_data');
  1. Убедитесь, что БД отсутствует (см. Рисунок - 7.31).

Проверка БД *test_upload_data*: База данных отсутствует

Рисунок - 7.31 Проверка БД test_upload_data: База данных отсутствует

  1. Подготовьте XML-файл (MetadataRequest_test_upload_data.xml) со следующим содержанием:

<?xml version='1.0' encoding='utf-8'?>
<ns:PODDMetadataRequest
        xmlns:ns="urn://x-artefacts-podd-gosuslugi-local/metadata/datamart/2/1.6.0"
        xmlns:ns1="urn://x-artefacts-podd-gosuslugi-local/metadata/types/1.4.0">
    <ns:requestId>00000000-0000-0000-0000-000000000001</ns:requestId>
    <ns:metadata>
        <ns1:datamart>
            <ns1:id>1806436d-437a-400d-b32e-aa15c1a2d4bc</ns1:id>
            <ns1:mnemonic>test_upload_data</ns1:mnemonic>
            <ns1:description>test_upload_data</ns1:description>
            <ns1:tenantId>c52f062e-af97-4a44-a33f-d1a94024d0cf</ns1:tenantId>
            <ns1:version>
                <ns1:major>1</ns1:major>
                <ns1:minor>0</ns1:minor>
            </ns1:version>
            <ns1:supportedFrom>2021-01-01T00:00:00</ns1:supportedFrom>
            <ns1:datamartClass>
                <ns1:id>4c4ff97b-938b-4db6-9f4d-ae21046e4d20</ns1:id>
                <ns1:mnemonic>Passenger</ns1:mnemonic>
                <ns1:description>Passenger</ns1:description>
                <ns1:classAttribute>
                    <ns1:id>6fe29bdb-7db1-405a-a05c-b49c541c92bd</ns1:id>
                    <ns1:mnemonic>Code</ns1:mnemonic>
                    <ns1:description>Code</ns1:description>
                    <ns1:type>LONG</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>e590e7b3-b611-4891-bbd1-a5e256105e73</ns1:id>
                    <ns1:mnemonic>Id</ns1:mnemonic>
                    <ns1:description>Id</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>c97a8102-6ad0-4dbd-934d-c82b83a4d83f </ns1:id>
                    <ns1:mnemonic>FirstName</ns1:mnemonic>
                    <ns1:description>FirstName</ns1:description>
                    <ns1:type>STRING</ns1:type>
     <ns1:length>36</ns1:length>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>d2312bfb-7ec0-4c95-9026-0f6dea48c5d9</ns1:id>
                    <ns1:mnemonic>MiddleName</ns1:mnemonic>
                    <ns1:description>MiddleName</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>7b63db89-bd0e-4c92-8bc0-e609175937b9</ns1:id>
                    <ns1:mnemonic>LastName</ns1:mnemonic>
                    <ns1:description>LastName</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>8f3e7f95-f66b-4d4a-b2eb-55a3e6134c3e</ns1:id>
                    <ns1:mnemonic>Birthday</ns1:mnemonic>
                    <ns1:description>Birthday</ns1:description>
                    <ns1:type>DATE</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>e3658240-b405-4838-99af-d32cd063c463</ns1:id>
                    <ns1:mnemonic>Passport</ns1:mnemonic>
                    <ns1:description>Passport</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:primaryKey>
                    <ns1:id>6fe29bdb-7db1-405a-a05c-b49c541c92bd</ns1:id>
                    <ns1:mnemonic>Code</ns1:mnemonic>
                    <ns1:description>Code</ns1:description>
                    <ns1:type>
                        <ns1:id>00000000-0000-0000-0000-000000000001</ns1:id>
                        <ns1:value>LONG</ns1:value>
                    </ns1:type>
                </ns1:primaryKey>
            </ns1:datamartClass>
            <ns1:datamartClass>
                <ns1:id>cafe41db-3878-4796-ba60-cbd54f042c63</ns1:id>
                <ns1:mnemonic>Ticket</ns1:mnemonic>
                <ns1:description>Ticket</ns1:description>
                <ns1:classAttribute>
                    <ns1:id>bc90563b-168a-4faa-9394-7b7390dd0d92</ns1:id>
                    <ns1:mnemonic>Id</ns1:mnemonic>
                    <ns1:description>Id</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>ac93618f-752b-44d5-a77c-23a3c9eb069b</ns1:id>
                    <ns1:mnemonic>PassengerId</ns1:mnemonic>
                    <ns1:description>PassengerId</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>51355519-2d59-426e-b199-9589930acaaa</ns1:id>
                    <ns1:mnemonic>TripId</ns1:mnemonic>
                    <ns1:description>TripId</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>fe92c245-929e-4684-b9c9-22bda6939c09</ns1:id>
                    <ns1:mnemonic>Number</ns1:mnemonic>
                    <ns1:description>Number</ns1:description>
                    <ns1:type>LONG</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>4a32ded4-c970-4874-b0b1-2e3eed8b6483</ns1:id>
                    <ns1:mnemonic>ByCard</ns1:mnemonic>
                    <ns1:description>ByCard</ns1:description>
                    <ns1:type>BOOLEAN</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>35f59c80-fcc3-483c-9cd3-dc3afb606d66</ns1:id>
                    <ns1:mnemonic>Price</ns1:mnemonic>
                    <ns1:description>Price</ns1:description>
                    <ns1:type>DOUBLE</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>8b46ff55-6853-458c-851d-6e1666da918b</ns1:id>
                    <ns1:mnemonic>Sold</ns1:mnemonic>
                    <ns1:description>Sold</ns1:description>
                    <ns1:type>TIMESTAMP</ns1:type>
                </ns1:classAttribute>
                <ns1:primaryKey>
                    <ns1:id>fe92c245-929e-4684-b9c9-22bda6939c09</ns1:id>
                    <ns1:mnemonic>Number</ns1:mnemonic>
                    <ns1:description>Number</ns1:description>
                    <ns1:type>
                        <ns1:id>00000000-0000-0000-0000-000000000001</ns1:id>
                        <ns1:value>LONG</ns1:value>
                    </ns1:type>
                </ns1:primaryKey>
            </ns1:datamartClass>
            <ns1:datamartClass>
                <ns1:id>76268090-60ee-4960-8268-1b91f4186e87</ns1:id>
                <ns1:mnemonic>Trip</ns1:mnemonic>
                <ns1:description>Trip</ns1:description>
                <ns1:classAttribute>
                    <ns1:id>bd173e24-ea7e-4869-9d43-9f57f5b0a82f</ns1:id>
                    <ns1:mnemonic>Id</ns1:mnemonic>
                    <ns1:description>Id</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>1ed32816-8bdb-4d35-9f66-8c08df13ad28</ns1:id>
                    <ns1:mnemonic>Number</ns1:mnemonic>
                    <ns1:description>Number</ns1:description>
                    <ns1:type>INTEGER</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>78f587fa-b53e-4912-b631-0c4a249d20b6</ns1:id>
                    <ns1:mnemonic>Duration</ns1:mnemonic>
                    <ns1:description>Duration</ns1:description>
                    <ns1:type>STRING</ns1:type>
                </ns1:classAttribute>
                <ns1:classAttribute>
                    <ns1:id>1750c564-20a7-4e07-988a-b382227123e4</ns1:id>
                    <ns1:mnemonic>Length</ns1:mnemonic>
                    <ns1:description>Length</ns1:description>
                    <ns1:type>FLOAT</ns1:type>
                </ns1:classAttribute>
                <ns1:primaryKey>
                    <ns1:id>1ed32816-8bdb-4d35-9f66-8c08df13ad28</ns1:id>
                    <ns1:mnemonic>Number</ns1:mnemonic>
                    <ns1:description>Number</ns1:description>
                    <ns1:type>
                        <ns1:id>00000000-0000-0000-0000-000000000002</ns1:id>
                        <ns1:value>INTEGER</ns1:value>
                    </ns1:type>
                </ns1:primaryKey>
            </ns1:datamartClass>
        </ns1:datamart>
    </ns:metadata>
</ns:PODDMetadataRequest>
  1. Откройте веб-интерфейс CSV-uploader.

  2. Во вкладке «Загрузка структуры», в поле выбора файла «XML» для загрузки в Витрину выберите XML-файл (MetadataRequest_test_upload_data.xml) созданный в п.2.

  3. Нажмите кнопку «Загрузить» (см. Рисунок - 7.32).

Загрузка XML-файла со структурой витрины

Рисунок - 7.32 Загрузка XML-файла со структурой витрины

  1. В случае успешной загрузки, отобразится сообщение: «Структура витрины успешно создана» (см. Рисунок - 7.33).

Сообщение «Структура витрины успешно создана»

Рисунок - 7.33 Сообщение «Структура витрины успешно создана»

  1. Откройте программу Dbeaver, установите подключение к БД программы и проверьте, что логическая БД test_upload_data создана, для этого выполните запрос:

SELECT *
FROM INFORMATION_SCHEMA.schemata
WHERE schema_name = UPPER('test_upload_data');

SQL-запрос вернул одну строку, в которой поле «SCHEMA_NAME» имеет значение TEST_UPLOAD_DATA (см. Рисунок - 7.34).

Проверка БД *test_upload_data*: База данных создана

Рисунок - 7.34 Проверка БД test_upload_data: База данных создана

  1. Убедитесь, что в созданной БД существуют таблицы: Passenger, Ticket и Trip. Для этого выполните запрос к БД:

SELECT *
FROM INFORMATION_SCHEMA.tables
WHERE table_schema = UPPER('test_upload_data');

SQL-запрос вернул записи о созданных логических таблицах (см. Рисунок - 7.35).

Проверка таблиц БД

Рисунок - 7.35 Проверка таблиц БД

  1. Проверьте количество записей в таблицах: Passenger, Ticket и Trip. Для этого выполните запрос к БД:

SELECT COUNT(*) FROM test_upload_data.passenger;
SELECT COUNT(*) FROM test_upload_data.ticket;
SELECT COUNT(*) FROM test_upload_data.trip;

SQL-запрос вернул нулевое значении (см. Рисунок - 7.36). Это значит, что записи в таблицах отсутствуют.

Проверка таблиц БД

Рисунок - 7.36 Проверка таблиц БД

7.1.5. Загрузка данных

  1. Скачайте CSV-файлы (tickets.csv, trips.csv).

  2. Откройте веб-интерфейс CSV-uploader и перейдите на вкладку «Загрузка».

  3. Выберите режим «Вставка».

  4. Установите переключатель в режим «Автоматическое определение таблицы».

  5. В поле «CSV» выберите CSV-файлы (tickets.csv и trips.csv) для загрузки в БД (см. Рисунок - 7.37).

Загрузка данных из CSV-файла

Рисунок - 7.37 Загрузка данных из CSV-файла

  1. Отобразится сообщение: «Отправка запроса на загрузку…»» (см. Рисунок - 7.38).

Отправка запроса на загрузку

Рисунок - 7.38 Отправка запроса на загрузку

В случае успешной загрузки файла отобразится сообщение: «Операция выполнена успешно» (см. Рисунок - 7.39).

Сообщение «Операция выполнена успешно»

Рисунок - 7.39 Сообщение «Операция выполнена успешно»

  1. Выполните проверку загрузки данных. Для этого последовательно выполните следующие запросы к БД:

Проверка таблицы passenger

SELECT COUNT(*) FROM test_upload_data.passenger;

SQL-запрос вернул нулевое значении т.к загрузки данных в эту таблицу не было (см. Рисунок - 7.40).

Проверка таблицы *passenger*

Рисунок - 7.40 Проверка таблицы passenger

Проверка таблицы ticket

SELECT COUNT(*) FROM test_upload_data.ticket;

SQL-запрос вернул значение 5000 (см. Рисунок - 7.41).

Проверка таблицы *ticket*

Рисунок - 7.41 Проверка таблицы ticket

Проверка таблицы trip

SELECT COUNT(*) FROM test_upload_data.trip;

SQL-запрос вернул значение 500 (см. Рисунок - 7.42).

Проверка таблицы *trip*

Рисунок - 7.42 Проверка таблицы trip

С дополнительной информацией по работе с программой Dbeaver (настройка, выполнение запросов, просмотр таблиц и т.д.) можно ознакомиться на официальном сайте разработчика программы https://dbeaver.io/.

8. Приложение 3. Рекомендации по конфигурированию инфраструктуры Компонента «Витрина данных»

8.1. Рекомендованные параметры технических средств

Для получения показателей производительности проведено нагрузочное тестирование Компонента «Витрина данных» конфигурации Стандарт и Лайт, при максимальном количестве выполняемых запросов в секунду на уровне 250 RPS.

Таблица 8.1 Показатели производительности

Конфигурация

Значение RPS

Характеристики

Стандарт

250

Таблица 8.2

Лайт

250

Таблица 8.3

Ниже приведены рекомендованные характеристики для каждой из конфигурации.

Рекомендованные требования к серверному оборудованию конфигурации Стандарт приведены в Таблица 8.2.

Таблица 8.2 Требования к серверному оборудованию конфигурации Стандарт

Сервер

Назначение

CPU

RAM, ГБ

HDD

Количество

Prostore

Сервис исполнения запросов

4

8

50

1

BLOB- адаптер

Получение доступа из Витрины данных

4

16

50

2

Сервис формирования документов

Обеспечение возможности формирования документов, в формате XML и PDF, на основе предварительно подготовленных pebble-шаблонов, с возможностью добавления к сформированным документам электронной подписи

2

8

50

2

СМЭВ QL Сервер

Язык запросов данных Системы межведомственного электронного взаимодействия

4

8

50

1

СМЭВ3-адаптер

Информационное взаимодействие через единый электронный сервис единой системы межведомственного электронного взаимодействия

4

8

50

1

Стандартный загрузчик

Управление данными (загрузка и / или удаление) в Витрине данных

4

8

50

1

CSV-Uploader

Загрузка CSV-файлов на Витрину данных

4

8

50

1

Data-Uploader

Обеспечение обработки очереди файлов

4

8

50

1

REST-Uploader

Асинхронная загрузка данных из сторонних источников

4

8

50

1

Counter-provider

Генерация уникального номера файлов в сервисе формирования документов

2

4

50

1

ETL

Модуль загрузки/ удаления данных

4

8

50

1

Check-адаптер

контроля качества данных, размещённых в Компоненте «Витрина данных»

4

8

20

1

Мониторинг и администрирование (установка опциональна)

Grafana

32

32

1000

3

Prometheus

Graylog

МongoDB

Elasticsearch (master)

Elasticsearch (data)

Filebeat

Node Exporter

Рекомендованные требования к серверному оборудованию конфигурации Лайт приведены в Таблица 8.3.

Таблица 8.3 Требования к серверному оборудованию

Требования

Минимальные

Рекомендуемые

Процессор (CPU)

4 ядра

24 ядра

Оперативная память (RAM)

16 Гб

128 Гб

Жесткий диск (HDD)

100 Гб

500 Гб

8.2. Рекомендованные параметры программных средств

Рекомендованные требования к программному обеспечению приведены в Таблица 8.4.

Таблица 8.4 Рекомендуемый состав программных средств конфигурации Стандарт

Название

Описание

Версия

Операционная система (выбор опционален)

РЕД ОС

АЛЬТ Сервер 8 СП

Astra Linux 1.7 (уровень защищенности «Воронеж»)

7.2

8

1.7

Docker

Программное обеспечение для автоматизации развёртывания и управления приложениями

20.10.2

Java SE 17

Среда разработки для создания приложений с использованием языка программирования Java

17.0.7

Рекомендованные требования к программному обеспечению приведены в Таблица 8.5.

Таблица 8.5 Рекомендуемый состав программных средств конфигурации лайт

Название

Описание

Версия

Операционная система (выбор опционален)

РЕД ОС

АЛЬТ Сервер 8 СП

Astra Linux 1.7 (уровень защищенности «Воронеж»)

7.2

8

1.7

Docker

Программное обеспечение для автоматизации развёртывания и управления приложениями

20.10.2

8.3. Показатели производительности при использовании рекомендуемых операционных систем

Тестирование проведено на запросах LLR, за исполнение которых отвечает модуль исполнения запросов podd-adapter-query, отправляющий запросы в ядро витрины Prostore для получения выборки данных.

Тестовая модель данных составляет 1,5 млн. уникальных записей в таблице vehicleregdata.

Ключи генерируемых данных используют диапазон от 1 до 1,5 млн., объём одной записи равен 100 байт.

Пример запроса:

select vrd.reestrid, vrd.vehicleguid, vrd.vehiclevin, vrd.vehiclevin2, vrd.vehiclechassisnum, vrd.vehiclebodynum, vrd.vehicleregnoname, vrd.operationregdocissuer, vrd.vehicleptsissuer, vrd.vehicleproducername, vrd.operationregdoc, vrd.vehicleptstypename, vrd.holderaddressregionname, vrd.holderaddressstreet, vrd.holderaddressmundistrict  from gibdd_db.vehicleregdata vrd where vrd.vehiclevin = \'${vin}\' OR vrd.vehiclevin2 = \'${vin}\' OR (vrd.vehiclechassisnum = \'${vin}\' OR vrd.vehiclebodynum = \'${vin}\') AND vrd.reestriscurrent = \'1\' limit 1

В качестве генератора нагрузки для модуля исполнения запросов, используемого в режиме LLR, задействуется группа продюсеров, которая отправляет запросы на получение одной записи по ключу в топик query.rq.

Фильтруемое значение для запросов выбирается случайным образом из предварительно сгенерированного набора данных.

Из топика query.rq модуль адаптера забирает запрос и отправляет его в ядро витрины для получения ответа, который затем помещается в топик query.rs.

Затем группа потоков потребителя производит чтение ответов, полученных от адаптера, позволяя зафиксировать время, затраченное на получение данных - от отправки запроса в топик query.rq до получения ответа в топике query.rs.

8.3.1. Профиль нагрузки испытаний

Профиль нагрузки был выбран следующим образом (см. Рисунок - 8.1):

  • Общее время работы сценария 20 минут;

  • Первые 10 минут общее количество выполняемых запросов в секунду растёт от 10 до 250 RPS;

  • Следующие 10 минут теста общее количество выполняемых запросов в секунду остаётся неизменным и поддерживается на уровне 250 RPS.

Профиль нагрузки

Рисунок - 8.1 Профиль нагрузки

8.3.2. Результаты тестирования конфигурации Стандарт

С указанным профилем нагрузки было выполнено 227567 запросов LLR по ключу, (см. Рисунок - 8.2).

Результаты нагрузки

Рисунок - 8.2 Результаты нагрузки

Работа нагрузки охарактеризована как стабильная, RPS соответствуют ожидаемым (см. Рисунок - 8.3).

В процессе выполнения нагрузки ошибок не возникло.

Результаты нагрузки

Рисунок - 8.3 Результаты нагрузки

Утилизация ресурсов модуля исполнения запросов

Рисунок - 8.4 Утилизация ресурсов модуля исполнения запросов

Утилизация ресурсов модуля исполнения запросов

Рисунок - 8.5 Утилизация ресурсов Prostore

Рекомендуемые технические параметры Компонента «Витрина данных» конфигурации Стандарт, приведенные в Таблица 8.2 подтверждены нагрузочными испытаниями, среднее время выполнения запросов, а также уровень утилизации системных ресурсов сопоставимы с результатами, полученными на заявленных операционных системах.

8.3.3. Результаты тестирования конфигурации Лайт

С указанным профилем нагрузки было выполнено 227841 запросов LLR по ключу, (см. Рисунок - 8.6).

Результаты нагрузки

Рисунок - 8.6 Результаты нагрузки

Работа нагрузки охарактеризована как стабильная, RPS соответствуют ожидаемым (см. Рисунок - 8.7).

В процессе выполнения нагрузки ошибок не возникло.

Результаты нагрузки

Рисунок - 8.7 Результаты нагрузки

Общий сводный график утилизации системных ресурсов

Рисунок - 8.8 Общий сводный график утилизации системных ресурсов

Рекомендуемые технические параметры Компонента «Витрина данных» конфигурации Лайт, приведенные в Таблица 8.3 подтверждены нагрузочными испытаниями, среднее время выполнения запросов, а также уровень утилизации системных ресурсов соответствуют ожидаемым результатам.