Dela via


Fråga flera datakällor i Fabric API för GraphQL

En av de viktigaste fördelarna med Fabric API för GraphQL är möjligheten att exponera flera datakällor, till exempel lakehouses, lager och databaser, via en enda enhetlig API-slutpunkt. Det innebär att dina program kan hämta data från olika källor i en enda GraphQL-fråga, vilket eliminerar behovet av att ansluta till flera API:er eller databaser separat.

Du kan till exempel ha kunddata i ett lager och inventeringsdata i ett annat lakehouse. I stället för att göra två separata API-anrop kan du fråga båda källorna samtidigt via graphQL-API:et, vilket minskar nätverkskostnaderna och förenklar programkoden.

Så här fungerar frågor med flera källor

När du utfärdar en GraphQL-fråga som sträcker sig över flera datakällor, fläktar API:et automatiskt ut enskilda begäranden till varje datakälla parallellt och kombinerar sedan resultatet till ett enda svar. Den här metoden:

  • Minskar tur och retur: Ditt program gör en begäran i stället för flera sekventiella anrop
  • Förbättrar prestanda: Parallell körning innebär snabbare övergripande svarstider
  • Förenklar klientkoden: Du arbetar med ett enda API-gränssnitt oavsett var data lagras

Viktigt!

Frågor med flera källor har följande begränsningar:

  • Du kan inte skapa relationer mellan typer som sträcker sig över olika datakällor. Relationer fungerar bara inom en enda datakälla.
  • Enskilda begäranden till varje datakälla körs parallellt utan garanterad ordning.
  • Varje begäran till en datakälla är oberoende – det finns ingen transaktion som sträcker sig över flera källor.

Frågeexempel

Affärsscenario: Anta att du skapar en instrumentpanel som visar kundinformation och produktinventeringsstatus sida vid sida. Dina kunddata finns i ett försäljningslager (ContosoSales), medan produktinventeringen hanteras i ett separat lakehouse (ContosoInventory) som uppdateras av dina leveranskedjesystem. Utan stöd för flera källor skulle du behöva göra två separata API-anrop, hantera två olika anslutningar och kombinera data själv i programkoden.

Med Fabric API för GraphQL kan du hämta data från båda källorna i en enda fråga:

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

Den här enskilda begäran hämtar kundposter från ContosoSales-datakällan och inventeringsobjekten från ContosoInventory-datakällan parallellt och kombinerar dem till ett svar. Instrumentpanelen hämtar alla data som behövs med ett API-anrop i stället för två.

Utdata för begäran är:

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

Svarsstrukturen speglar frågestrukturen. data Inuti objektet har du två fält på den översta nivån (customers och inventories) som motsvarar de två frågor som du har gjort. Varje fält innehåller en items matris med det faktiska resultatet. Objekten customers har egenskaper som FirstName och LastName, medan objekten inventories har egenskaper som Name– exakt som efterfrågas i frågan.

Så här ser frågevyn ut när du kör den här begäran:

Skärmbild av redigeringsskärmen som visar en fråga som sträcker sig över två datakällor.