Condividi tramite


Eseguire query su più origini dati nell'API Fabric per GraphQL

Uno dei vantaggi principali dell'API di infrastruttura per GraphQL è la possibilità di esporre più origini dati, ad esempio lakehouse, warehouse e database, tramite un singolo endpoint API unificato. Ciò significa che le applicazioni possono recuperare dati da origini diverse in una singola query GraphQL, eliminando la necessità di connettersi a più API o database separatamente.

Ad esempio, potrebbero essere presenti dati dei clienti in un data warehouse e dati di inventario in un altro data lakehouse. Anziché effettuare due chiamate API separate, è possibile eseguire query su entrambe le origini contemporaneamente tramite l'API GraphQL, riducendo il sovraccarico di rete e semplificando il codice dell'applicazione.

Funzionamento delle query multi-origine

Quando si esegue una query GraphQL che si estende su più origini dati, l'API distribuisce automaticamente le singole richieste a ogni origine dati in parallelo, per poi combinare i risultati in una singola risposta. Questo approccio:

  • Riduce i round trip: l'applicazione effettua una richiesta anziché più chiamate sequenziali
  • Migliora le prestazioni: l'esecuzione parallela comporta tempi di risposta complessivi più rapidi
  • Semplifica il codice client: si usa una singola interfaccia API indipendentemente dalla posizione in cui vengono archiviati i dati

Importante

Le query con più origini presentano le limitazioni seguenti:

  • Non è possibile creare relazioni tra tipi che si estendono su origini dati diverse. Le relazioni funzionano solo all'interno di una singola origine dati.
  • Le singole richieste a ogni origine dati vengono eseguite in parallelo senza un ordine garantito.
  • Ogni richiesta a un'origine dati è indipendente. Non esiste alcuna transazione che si estende su più origini.

Esempio di query

Scenario aziendale: si supponga di creare un dashboard che visualizzi le informazioni sui clienti e lo stato dell'inventario dei prodotti affiancati. I dati dei clienti si trovano in un magazzino di vendita (ContosoSales), mentre l'inventario dei prodotti viene gestito in un lakehouse separato (ContosoInventory) aggiornato dai sistemi della supply chain. Senza il supporto multisorgente, dovresti effettuare due chiamate API separate, gestire due connessioni diverse e combinare i dati nel tuo codice dell'applicazione.

Con l'API Fabric per GraphQL è possibile recuperare i dati da entrambe le origini in una singola query:

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

Questa singola richiesta recupera i record dei clienti dall'origine dati ContosoSales e dagli elementi di inventario dall'origine dati ContosoInventory in parallelo, combinandoli in una sola risposta. Il dashboard ottiene tutti i dati necessari con una chiamata API anziché due.

L'output per la richiesta è:

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

La struttura di risposta rispecchia la struttura di query. All'interno dell'oggetto data sono presenti due campi di primo livello (customers e inventories) corrispondenti alle due query effettuate. Ogni campo contiene una items matrice con i risultati effettivi. Gli customers elementi hanno proprietà come FirstName e LastName, mentre gli inventories elementi hanno proprietà come Name, esattamente come richiesto nella query.

Questo è l'aspetto della visualizzazione query quando si esegue questa richiesta:

Screenshot della schermata dell'editor che mostra una query che si estende su due origini dati.