Udostępnij przez


Wykonywanie zapytań dotyczących wielu źródeł danych w interfejsie API sieci szkieletowej dla języka GraphQL

Jedną z kluczowych zalet interfejsu Fabric API dla języka GraphQL jest możliwość uwidacznienia wielu źródeł danych — takich jak lakehouses, magazyny i bazy danych — za pośrednictwem jednego ujednoliconego punktu końcowego interfejsu API. Oznacza to, że aplikacje mogą pobierać dane z różnych źródeł w jednym zapytaniu GraphQL, eliminując konieczność łączenia się z wieloma interfejsami API lub bazami danych oddzielnie.

Na przykład dane klientów mogą być w jednym magazynie, a dane zapasów w innym lakehouse. Zamiast wykonywać dwa oddzielne wywołania interfejsu API, można wykonywać zapytania dotyczące obu źródeł jednocześnie za pośrednictwem interfejsu API GraphQL, zmniejszając obciążenie sieci i upraszczając kod aplikacji.

Jak działają zapytania wieloźródłowe

W przypadku wysyłania zapytania GraphQL obejmującego wiele źródeł danych interfejs API automatycznie wysyła pojedyncze żądania do każdego źródła danych równolegle, a następnie łączy wyniki w jedną odpowiedź. Takie podejście:

  • Zmniejsza liczbę rund: Aplikacja wysyła jedno żądanie zamiast wielu wywołań sekwencyjnych
  • Poprawia wydajność: Wykonywanie równoległe oznacza szybsze ogólne czasy odpowiedzi
  • Upraszcza kod klienta: pracujesz z jednym interfejsem API niezależnie od tego, gdzie są przechowywane dane

Ważne

Zapytania wieloźródłowe mają następujące ograniczenia:

  • Nie można tworzyć relacji między typami obejmującymi różne źródła danych. Relacje działają tylko w jednym źródle danych.
  • Pojedyncze żądania do każdego źródła danych są wykonywane równolegle bez gwarantowanej kolejności.
  • Każde żądanie do źródła danych jest niezależne — nie ma transakcji obejmujących wiele źródeł.

Przykład zapytania

Scenariusz biznesowy: Załóżmy, że tworzysz pulpit nawigacyjny, który wyświetla informacje o kliencie i stan zapasów produktów obok siebie. Dane klientów są przechowywane w magazynie sprzedaży (ContosoSales), podczas gdy zapasy produktów są zarządzane w oddzielnym magazynie lakehouse (ContosoInventory), który jest aktualizowany przez systemy łańcucha dostaw. Bez obsługi wielu źródeł należy wykonać dwa oddzielne wywołania interfejsu API, zarządzać dwoma różnymi połączeniami i łączyć dane samodzielnie w kodzie aplikacji.

Za pomocą Fabric API dla języka GraphQL można pobrać dane z obu źródeł w jednym zapytaniu:

query {
  customers (first: 1) {
    items {
      FirstName
      LastName
    }
  }
  inventories (first: 1) {
    items {
      Name
    }
  }
}

To pojedyncze żądanie pobiera rekordy klientów ze źródła danych ContosoSales i elementów zapasów ze źródła danych ContosoInventory równolegle, łącząc je w jedną odpowiedź. Pulpit nawigacyjny pobiera wszystkie potrzebne dane z jednym wywołaniem interfejsu API zamiast dwóch.

Dane wyjściowe żądania to:

{
  "data": {
    "customers": {
      "items": [
        {
          "FirstName": "Orlando",
          "LastName": "Gee"
        }
      ]
    },
    "inventories": {
      "items": [
        {
          "Name": "AWC Logo Cap"
        }
      ]
    }
  }
}

Struktura odpowiedzi odzwierciedla strukturę zapytania. data Wewnątrz obiektu znajdują się dwa pola najwyższego poziomu (customersi inventories) odpowiadające dwóm wykonanym zapytaniom. Każde pole zawiera tablicę items z rzeczywistymi wynikami. customers Elementy mają właściwości takie jak FirstName i LastName, a inventories elementy mają właściwości takie jak Name— dokładnie tak, jak żądano w zapytaniu.

W ten sposób widok zapytania wygląda podczas wykonywania tego żądania:

Zrzut ekranu edytora przedstawiający zapytanie obejmujące dwa źródła danych.