Назначение СМЭВ QL сервера ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ О системе ########### СМЭВ QL сервер - это компонент взаимодействия с витриной данных, который реализует её типовое API согласно внутренней спецификации СМЭВ QL. Основным назначением СМЭВ QL сервера является обработка REST-запросов на получение данных от Потребителей и формирование оптимальных (простых) sql-запросов к витрине для получения запрашиваемых данных. Для Потребителя взаимодействие со СМЭВ QL сервера равнозначно виду информационного обмена - Обмен с использованием регламентированных запросов типа «Rest-сервис» (см. Обмен с использованием запросов к REST-сервису ИС Ответчика). Основной принцип работы СМЭВ QL сервера заключается в следующем: 1. СМЭВ QL принимает на вход REST-запрос, который содержит перечень запрашиваемых ресурсов, условий выбора данных, требуемые атрибуты ответа и пр. После чего определяет данные каких объектов и из каких источников необходимо извлечь. При этом определение источников происходит на основании заранее описанных моделей данных, которые хранятся на сервере в файлах вида model.yaml (что извлекать) и source.yaml (откуда извлекать). 2. Формирует, в определенной последовательности (на основании плана выполнения запросов), столько SQL-запросов к источникам данных, сколько объектов было запрошено в исходном запросе от клиента. Это позволяет значительно упростить sql-выражения и вычислительную сложность алгоритма витрины данных. 3. Получает и последовательно обрабатывает результаты выполнения sql-запросов. 4. Затем формирует и передает комплексный ответ клиенту. .. _system_smev_ql: .. figure:: img/system_smev_ql.png :align: center :alt: Схема СМЭВ QL Сервера Схема СМЭВ QL Сервера Цели СМЭВ QL сервера ##################### Целями создания СМЭВ QL сервер являются: 1. Повышение скорости предоставления ответов от витрины данных Поставщика по сравнению с типовым видом взаимодействия Агент-Витрина. 2. Защита витрины данных Поставщика от неоптимальных запросов. 3. Сокращение объёма ответов. 4. Сокращение количества передаваемых запросов от Потребителей. 5. Повышение скорости развития услуг ЕПГУ. Задачи СМЭВ QL сервера ############################# Основные задачи СМЭВ QL сервера: 1. Формирование API и модели данных витрины. 2. Приём REST-запросов от Потребителей через Агент СМЭВ4. 3. Формирование простых SQL-запросов к витрине. 4. Формирование распределенных запросов к нескольким витринам. 5. Формирование и передача ответа Потребителю. 6. Описание и исполнение при вызове модели машины состояний. 7. Нотификация подписчиков при изменении данных витрины. 8. Предоставление внешним клиентам OpenAPI для управления. Место СМЭВ QL сервера в ИТ-ландшафте ##################################### СМЭВ QL сервер взаимодействует со следующими компонентами ПОДД: 1. Агент СМЭВ4. 2. Сервис исполнения запросов (prostore). 3. Сервер криптографии (Notarius). 4. Сервис формирования документов .. _landscape: .. figure:: img/landscape.png :align: center :alt: Схема взаимодействия СМЭВ QL Сервера с компонентами ПОДД Схема взаимодействия СМЭВ QL Сервера с компонентами ПОДД Язык и синтаксис ################# Моделирование """"""""""""""""" Для моделирования документного слоя данных в спецификации выбран язык разметки ``YAML``. Запросы и ответы """"""""""""""""""" Для написания запросов, а также в качестве сериализатора ответов, спецификация определяет использование ``JSON``. Типизация ########### Фактические типы данных наследуют типы данных ``JSON`` (включая NULL): - string; - number; - object; - array; - boolean; - null. Типы данных в модели и приведение типов """"""""""""""""""""""""""""""""""""""""" В описании модели допускается указание фактического типа данных атрибута ресурса **вторым элементом массива type**. Указание является опциональным, по умолчанию подразумевается неограниченный **STRING**. Пример из описания модели: .. code-block:: yaml 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. Моделирование данных ####################### Модели данных описываются в формате ``YAML`` в папке проекта ``models`` согласно спецификации СМЭВ QL. Структура базовой модели приведена в :ref:`basic_data_model`. Структура базовой модели приведена в :ref:`data_model`. .. note:: Заливка данных через через модуль RESt-Uploader и DATA-Uploader не предусматривают параллельную заливку в датамарты вместе с другими инструментами. Параллельная заливка данных в те же датамарты вручную или средствами ETL приведет к конфликту в работе с дельтами и к ошибкам соответственно. Метрики ############# Для обеспечения возможности сбора информации о работе СМЭВ QL Сервера реализован набор метрик, обеспечивающий формирование показателей: - время исполнения входящих запросов; - количество успешных / не успешных выполнений входящих запросов; - время исполнения исходящих запросов или обращений к СПО; - количество успешных / не успешных выполнений исходящих запросов или обращений к СПО. `Пример по подключению журналирования. `_ `Пример по подключению мониторинга. `_