Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Одним из ключевых преимуществ API Fabric для GraphQL является возможность предоставления нескольких источников данных, таких как lakehouses, хранилища и базы данных, через одну единую конечную точку API. Это означает, что приложения могут получать данные из разных источников в одном запросе GraphQL, устраняя необходимость подключения к нескольким API или базам данных отдельно.
Например, у вас могут быть данные клиента в одном хранилище и данные инвентаризации в другом лейкхаусе. Вместо двух отдельных вызовов API можно одновременно запрашивать оба источника через API GraphQL, уменьшая нагрузку на сеть и упрощая код приложения.
Как работают запросы с несколькими источниками
При выполнении запроса GraphQL, охватывающего несколько источников данных, API автоматически распределяет отдельные запросы к каждому источнику данных параллельно, а затем объединяет результаты в один ответ. Такой подход:
- Уменьшает круглые пути: приложение выполняет один запрос вместо нескольких последовательных вызовов
- Повышение производительности: параллельное выполнение означает более быстрое общее время отклика
- Упрощает код клиента: вы работаете с одним интерфейсом API независимо от того, где хранятся данные.
Это важно
Запросы с несколькими источниками имеют следующие ограничения:
- Нельзя создавать связи между типами, охватывающими различные источники данных. Связи работают только в одном источнике данных.
- Отдельные запросы к каждому источнику данных выполняются параллельно без гарантированного заказа.
- Каждый запрос к источнику данных является независимым — отсутствует транзакция, охватывающая несколько источников.
Пример запроса
Бизнес-сценарий: представьте, что вы создаете панель мониторинга, которая отображает сведения о клиентах и состоянии инвентаризации продуктов параллельно. Данные клиента находятся в складе продаж (ContosoSales), в то время как инвентаризация продуктов управляется в отдельном озерохранилище (ContosoInventory), которое обновляется системами цепочки поставок. Без поддержки с несколькими источниками необходимо выполнить два отдельных вызова API, управлять двумя разными подключениями и объединять данные в коде приложения.
С помощью API Fabric для GraphQL можно получить данные из обоих источников в одном запросе:
query {
customers (first: 1) {
items {
FirstName
LastName
}
}
inventories (first: 1) {
items {
Name
}
}
}
Этот отдельный запрос получает записи клиентов из источника данных ContosoSales и элементов инвентаризации из источника данных ContosoInventory параллельно, объединяя их в один ответ. Панель мониторинга получает все необходимые данные с одним вызовом API вместо двух.
Выходные данные для запроса:
{
"data": {
"customers": {
"items": [
{
"FirstName": "Orlando",
"LastName": "Gee"
}
]
},
"inventories": {
"items": [
{
"Name": "AWC Logo Cap"
}
]
}
}
}
Структура ответа отражает структуру запроса.
data Внутри объекта есть два поля верхнего уровня (customersиinventories) соответствующие двум выполненным запросам. Каждое items поле содержит массив с фактическими результатами. Элементы customers имеют такие свойства, как FirstName и LastName, а элементы inventories имеют свойства, такие как Name — точно как запрошено в запросе.
Вот как выглядит представление запроса при выполнении этого запроса: