Перейти к основному содержимому

Федерация данных

Платформа предоставляет возможность использовать данные не только из хранилища данных, структуру которого вы описываете при создании модели данных, но и из других хранилищ данных, поддерживающих GraphQL. Таким образом, Платформа реализует федерацию данных — программный процесс объединения данных из различных источников и преобразования данных в общую модель с целью единообразного доступа к данным.

В модель федерации данных могут быть включены данные следующих сервисов:

  • сервисы Платформы:

    • сервис доступа к хранилищу данных: обслуживает модели данных всех приложений, разработанных и развернутых в Платформе;
    • сервис аутентификации: содержит информацию о пользователях, созданных в Платформе;
    • сервис аудита: содержит информацию о событиях, зарегистрированных в Платформе;
  • внешние сервисы.

Например, в разрабатываемом приложении при включении в модель федерации данных сервиса аутентификации вы можете получить такие данные о пользователе, как фамилия и имя, адрес электронной почты, номер телефона.

Модель федерации данных описывается JSON-файлом с расширением mdfed. Следующий пример демонстрирует содержимое файла модели федерации данных:

{
"sdl": "extend type LuckyAttribu tes_TShirt { FileStructure: [System_file] @delegate(schema: \"s113978\", path: \"system_file().items\")}"
"description": "конфигурация сервиса Федерации для storagedata",
"services": [
{
"name": "storagedata",
"description": "main dataservice",
"enabled": true,
"serviceType": "System",
"url": "",
"version": "",
"headers": "",
"sdl": "",
"ignoreRootTypes": false
}
]
}

Для добавления данных какого-либо сервиса в модель федерации данных вам нужно настроить файл с расширением mdfed. Такой файл вам нужно создать в корневой папке системного проекта.

Вы настраиваете файл модели федерации данных в кодовом режиме специализированного редактора, ассоциированного с файлом с расширением mdfed. При настройке файла вы указываете значения следующих ключей:

  • sdl: декларирует связывание сущностей в GraphQL-схемах сервисов, включенных в федерацию данных, на языке Schema Definition Language (SDL). Более подробную информацию об объединении GraphQL-схем вы можете найти на веб-сайте ChilliCream Inc.

  • services: описывает сервисы, данные которых включаются в модель федерации данных.

    • serviceType: определяет тип сервиса. Этот ключ может иметь следующие значения:

      • System: используется для сервиса доступа к хранилищу данных;
      • Platform: используется для сервисов Платформы, кроме сервиса доступа к хранилищу данных;
      • External: используется для внешних сервисов.
    • name: определяет имя сервиса, данные которого включаются в модель федерации данных. Этот ключ может иметь следующие значения:

      • storagedata: используется для добавления данных сервиса доступа к хранилищу данных с одним узлом.
      • <имя пользовательского хранилища>: используется для распределенного варианта организации хранилища данных.
      • <имя сервиса Платформы согласно информации в Discovery>: используется при добавлении данных сервисов Платформы, кроме сервиса доступа к хранилищу данных. Например, для добавления в модель федерации данных сервиса аутентификации используется identity, поскольку под этим именем сервис регистрируется в сервисе обнаружения сервисов.
      • <имя внешнего сервиса>: используется при добавлении данных внешних сервисов и содержит имя сервиса, который будет доступен для запросов к сервису федерации данных. Указанное имя сервиса будет отображаться в GraphQL-схеме данных.
    • description: содержит произвольное описание сервиса.

    • enabled: устанавливает признак временного исключения сервиса из модели федерации данных при разработке или эксплуатации приложения, для которого настроена модель федерации данных. Может принимать значения false — сервис исключен или true — сервис используется. Для сервиса identity ключ enabled может иметь значение только true.

    • url: URL-адрес точки доступа GraphQL для внешних сервисов. Например, значение этого ключа может быть следующим: "https://countries.trevorblades.com/graphql".

    • headers: используется для передачи данных авторизации во внешний сервис. Например, значение этого ключа может быть следующим: "{"authorization":"apikey x-hlsdh8r31209yh0gadl"}".

    • ignoreRootTypes: устанавливает признак исключения типов данных, описываемых GraphQL-схемой включаемого в федерацию данных сервиса, из объединенной GraphQL-схемы. Для сервиса доступа к хранилищу данных значение ключа всегда имеет значение false. Для других сервисов значение этого ключа может быть false или true. При значении этого ключа true в ключе sdl должны быть описаны типы данных включаемого в федерацию данных сервиса, которые должны использоваться в объединенной GraphQL-схеме.