Общее описание ^^^^^^^^^^^^^^ :term:`BLOB-адаптер`, программный модуль Витрины данных, предназначен для получения доступа из Витрины данных к BLOB-объектам ведомства. BLOB-объект - это специальный тип двоичных данных, предназначенный для хранения бинарных файлов: изображений, скан-копий документов, текстовых файлов и т.д. :term:`BLOB-адаптер` предоставляет возможность настроить доступ к BLOB-объектам расположенным в :term:`Хранилище BLOB-объектов`. .. note:: Хранилище BLOB-объектов располагается на стороне ведомства и не является частью Витрины данных. BLOB-адаптер предназначен для следующих задач: - настройка доступа в :term:`Хранилище BLOB-объектов`; - предоставление регламентированного доступа к BLOB-объектам; - получение и отправка запросов на получение BLOB-объектов; - чтение BLOB-объектов; - сохранение BLOB-объектов на FTP-сервере (через СМЭВ3-адаптер). Взаимодействие с BLOB-объектами возможно через запросы из :term:`СМЭВ` (через СМЭВ3-адаптер) или :term:`ПОДД` (через PODD-адаптер). Доступ к считыванию BLOB-объектов производится методом GET по протоколу HTTP/HTTPS (указывается в конфигурации, параметр ``host``) . Формат обмена электронными сообщениями через :term:`BLOB-адаптер` описан в разделе :ref:`blob-specification`. Общая схема взаимодействия через BLOB-адаптер ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. _schema_blob: .. figure:: /project_dtm/modules/blob-adapter/doc/uml/schema_blob.png :align: center :alt: Общая схема взаимодействия через BLOB-адаптер Общая схема взаимодействия через BLOB-адаптер .. _blob_podd_adapter: Взаимодействие через ПОДД-адаптер ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Схема взаимодействия через ПОДД-адаптер ####################################### Общая схема получения BLOB-объектов через :term:`ПОДД-адаптер` выглядит следующим образом: .. _schema_blob_podd: .. figure:: /project_dtm/modules/blob-adapter/doc/uml/schema_blob_podd.png :align: center :alt: Взаимодействие BLOB-адаптера через ПОДД-адаптер Взаимодействие BLOB-адаптера через ПОДД-адаптер Процесс обработки запроса на получение BLOB-объекта (ПОДД-адаптер) ################################################################## 1. В :term:`ПОДД` поступает запрос на получение данных из Витрины. 2. :term:`ПОДД` отправляет запрос через :term:`ПОДД-адаптер` в Витрину. 3. Витрина данных обрабатывает запрос. 4. PODD-адаптер считывает данные полученные от Витрины и отправляет ответ в Kafka, на стороне ПОДД. В случае, если в теле запроса содержится ссылка на BLOB-объект (например, изображение) Kafka, на стороне :term:`ПОДД` , отправляет запрос в BLOB-адаптер на получение этого BLOB-объекта. BLOB-адаптер, считывает ссылку на BLOB-объект и обращается в Хранилище BLOB-объектов на стороне ведомства. После получения BLOB-объекта, возвращает его в ПОДД. .. _connect_blob_smev: Взаимодействие через СМЭВ3-адаптер ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Схема взаимодействия через СМЭВ3-адаптер ######################################## .. _schema_blob_smev: .. figure:: /project_dtm/modules/blob-adapter/doc/uml/schema_blob_smev.png :align: center :alt: Взаимодействие BLOB-адаптера через СМЭВ Взаимодействие BLOB-адаптера через СМЭВ Процесс обработки запроса на получение BLOB-объекта (через СМЭВ3-адаптер) ######################################################################### 1. Из внешней ИС в СМЭВ поступает запрос на получение данных из Витрины. 2. СМЭВ3-адаптер получает запрос и отправляет его в Витрину. 3. Витрина обращается к БД, подготавливает ответ на запрос. Если в запросе есть ссылка на BLOB-объект, BLOB-адаптер обращается к Хранилищу BLOB-объектов, копирует BLOB-объект, выкладывает его на FTP-сервер СМЭВ и отправляет ссылку на BLOB-объект в Витрину. 4. После того как BLOB-объект загружен на FTP-сервер СМЭВ, Витрина отправляет ответ на запрос в СМЭВ, в котором содержится ссылка на BLOB-объект (сохраненный на FTP-сервере). 5. После получения ответа внешняя ИС может обратиться по ссылке и скачать BLOB-объект с FTP-сервера СМЭВ. Требования к серверу BLOB-адаптера ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. Cледующие файлы не должны контролироваться системой управления конфигурации (при ее наличии), поскольку они должны быть доступны процессу установки для создания и модификации: - ``/etc/hosts`` - ``/etc/selinux/config`` - ``/etc/sysctl.conf`` - файлы директории ``/usr/lib/systemd/system/`` - ``/etc/sysconfig/iptables\*`` - ``/etc/firewalld/\*`` - ``/etc/docker/\*`` 2. Снаружи сервер должен быть доступен по следующим портам: - 22 (SSH). Требования к Хранилищу BLOB-объектов ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :term:`Хранилище BLOB-объектов` должно поддерживать регламентированный витриной интерфейс доступа к BLOB-объектам по запросу (см. раздел :ref:`blob-specification` ). Для корректной работы с Хранилищем BLOB-объектов, необходимо выполнить следующие условия: - Предоставить доступ: - к таблицам с метаданными по документам, хранилища ведомства; - к ссылкам на BLOB-объекты (изображения, архивы, pdf-файлы и т.д.) в хранилище ведомства, соответствующие метаданным. - Предоставить связь между ссылками и метаданными, если они разнесены по разным хранилищам. .. note:: Все обновления ссылок на документы происходят только через ETL, т.е. от Поставщика данных (ведомства) к Витрине. Обновление самих BLOB через витрину, с последующей проливкой в ведомства, не предусмотрено. Требования к предоставляемому интерфейсу Хранилища BLOB-объектов (API-интерфейс REST) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ В данном разделе описана спецификация API-интерфейс **REST** с методом ``GET``, который поддерживается Витриной для получения тела BLOB-объекта из Хранилища BLOB-объектов. С помощью API-интерфейса **REST** можно отправлять запрос на получение BLOB-объектов. Считывание BLOB-объекта производится по протоколу HTTP (допустимо HTTPS, указывается в конфигурации файла ``application.yml``, параметр ``host`` (см. раздел :ref:`blob_adapter_config` )). **REST API-** реализованный соответственно данной спецификации должен предоставляться Хранилищем BLOB-объектов для возможности успешного взаимодействия с Витриной.