1. Назначение СМЭВ QL сервера
1.1. О системе
СМЭВ QL сервер - это компонент взаимодействия с витриной данных, который реализует её типовое API согласно внутренней спецификации СМЭВ QL. Основным назначением СМЭВ QL сервера является обработка REST-запросов на получение данных от Потребителей и формирование оптимальных (простых) SQL-запросов к витрине для получения запрашиваемых данных.
Для Потребителя взаимодействие со СМЭВ QL сервера равнозначно виду информационного обмена - Обмен с использованием регламентированных запросов типа «Rest-сервис».
Основной принцип работы СМЭВ QL сервера заключается в следующем:
СМЭВ QL принимает на вход REST-запрос, который содержит перечень запрашиваемых ресурсов, условий выбора данных, требуемые атрибуты ответа и пр. После чего определяет данные каких объектов и из каких источников необходимо извлечь. При этом определение источников происходит на основании заранее описанных моделей данных, которые хранятся на сервере в файлах вида
model.yaml(что извлекать) иsource.yaml(откуда извлекать).Далее формирует, в определенной последовательности (на основании плана выполнения запросов), столько SQL-запросов к источникам данных, сколько ресурсов было запрошено в исходном запросе от клиента. При этом запросы могут выполняться как последовательно, в случае если в запросе ресурсы имеют вложенность (иерархию) или параллельно, если ресурсы указаны на одном уровне. Это позволяет значительно упростить sql-выражения и уменьшить сложность запроса к БД.
Обрабатывает результаты выполнения SQL-запросов по мере их поступления от источников.
Затем формирует и передает комплексный ответ клиенту.
Рисунок - 1.2 Схема СМЭВ QL Сервера
1.2. Цели СМЭВ QL сервера
Целями создания СМЭВ QL сервера являются:
Повышение скорости предоставления ответов от витрины данных Поставщика по сравнению с типовым видом взаимодействия Агент-Витрина.
Защита витрины данных Поставщика от неоптимальных запросов.
Сокращение объёма ответов.
Сокращение количества передаваемых запросов от Потребителей.
Повышение скорости развития услуг ЕПГУ.
1.3. Задачи СМЭВ QL сервера
Основные задачи СМЭВ QL сервера:
Формирование API и модели данных витрины .
Приём REST-запросов от Потребителей через Агент СМЭВ4.
Формирование простых SQL-запросов к витрине.
Формирование распределенных запросов к нескольким витринам.
Формирование и передача ответа Потребителю.
Проверка и формирование цифровых подписей ответов.
Описание и исполнение при вызове модели машины состояний.
Нотификация подписчиков при изменении данных витрины.
Предоставление внешним клиентам OpenAPI для управления.
1.4. Место СМЭВ QL сервера в ИТ-ландшафте
СМЭВ QL сервер взаимодействует со следующими компонентами ПОДД:
Агент СМЭВ4.
Сервис исполнения запросов ядра витрины данных.
Сервер криптографии (Notarius).
Сервис формирования документов.
Рисунок - 1.3 Схема взаимодействия СМЭВ QL Сервера с компонентами ПОДД
1.5. Язык и синтаксис
1.5.1. Моделирование
Для моделирования документного слоя данных в спецификации выбран язык разметки YAML.
1.5.2. Запросы и ответы
Для написания запросов, а также в качестве сериализатора ответов, спецификация определяет использование JSON.
1.6. Типизация
Фактические типы данных наследуют типы данных JSON (включая NULL):
string;
number;
object;
array;
boolean;
null.
1.6.1. Типы данных в модели и приведение типов
В описании модели допускается указание фактического типа данных атрибута ресурса вторым элементом массива type. Указание является опциональным, по умолчанию подразумевается неограниченный STRING.
Пример из описания модели:
fields:
id:
name: Идентификатор записи
type:
- number
- SHORT
length: 20
nullable: not NULL
key: PRIMARY
В качестве второго уточняющего типа следует применять типы НСУД:
STRING;
DOUBLE;
FLOAT;
BOOLEAN;
BYTE (не поддерживается на витрине);
BINARY;
BIG_DECIMAL (не поддерживается на витрине);
LONG;
INTEGER;
SHORT;
DATE;
TIME;
TIMESTAMP.
1.7. Моделирование данных
Модели данных описываются в формате YAML в папке проекта models согласно спецификации СМЭВ QL.
Структура базовой модели приведена в Базовая модель данных.
Структура базовой модели приведена в Модель данных.
Примечание
Заливка данных через через модуль RESt-Uploader и DATA-Uploader не предусматривают параллельную заливку в датамарты вместе с другими инструментами. Параллельная заливка данных в те же датамарты вручную или средствами ETL приведет к конфликту в работе с дельтами и к ошибкам соответственно.
1.8. Метрики
Для обеспечения возможности сбора информации о работе СМЭВ QL Сервера реализован набор метрик, обеспечивающий формирование показателей:
время исполнения входящих запросов;
количество успешных / не успешных выполнений входящих запросов;
время исполнения исходящих запросов или обращений к СПО;
количество успешных / не успешных выполнений исходящих запросов или обращений к СПО.