Több adatforrás lekérdezése a Fabric API for GraphQL-ben

A Fabric API graphQL-hez való egyik fő előnye, hogy több adatforrást – például lakehouse-t, raktárat és adatbázist – tesz elérhetővé egyetlen egységes API-végponton keresztül. Ez azt jelenti, hogy az alkalmazások egyetlen GraphQL-lekérdezésben különböző forrásokból tudnak adatokat lekérni, így nem szükséges külön csatlakozni több API-hoz vagy adatbázishoz.

Előfordulhat például, hogy az ügyféladatok az egyik raktárban, a leltáradatok pedig egy másik tóházban vannak. Két különálló API-hívás helyett mindkét forrást egyszerre kérdezheti le a GraphQL API-n keresztül, csökkentve a hálózati terhelést, és egyszerűsítheti az alkalmazás kódját.

A többforrásos lekérdezések működése

Ha több adatforrásra kiterjedő GraphQL-lekérdezést ad ki, az API automatikusan leküldi az egyes adatforrásokra irányuló kéréseket párhuzamosan, majd egyetlen válaszban egyesíti az eredményeket. Ez a megközelítés:

  • A körutazások csökkentése: Az alkalmazás több egymást követő hívás helyett egy kérést küld
  • Javítja a teljesítményt: A párhuzamos végrehajtás gyorsabb válaszidőt jelent
  • Egyszerűbb ügyfélkód: Egyetlen API-felülettel dolgozhat, függetlenül attól, hogy hol tárolják az adatokat

Fontos

A több forrásból történő lekérdezésekre a következő korlátozások vonatkoznak:

  • A különböző adatforrásokra kiterjedő típusok közötti kapcsolatok nem hozhatók létre. A kapcsolatok csak egyetlen adatforráson belül működnek.
  • Az egyes adatforrásokra irányuló egyedi kérések párhuzamosan, garantált sorrend nélkül futnak.
  • Az adatforrásra irányuló minden kérés független – nincs több forrásra kiterjedő tranzakció.

Példa lekérdezésre

Üzleti forgatókönyv: Tegyük fel, hogy olyan irányítópultot készít, amely egymás mellett jeleníti meg az ügyféladatokat és a termékleltár állapotát. Az ügyféladatok egy értékesítési raktárban (ContosoSales) találhatók, míg a termékleltár egy külön lakehouse -ban (ContosoInventory) van kezelve, amelyet az ellátási lánc rendszerei frissítenek. Többforrásos támogatás nélkül két külön API-hívást kell kezdeményeznie, két különböző kapcsolatot kell kezelnie, és az adatokat saját maga kell kombinálnia az alkalmazáskódban.

A GraphQL-hez készült Fabric API-val egyetlen lekérdezésben mindkét forrásból lekérheti az adatokat:

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

Ez az egyetlen kérés egyszerre kéri le az ügyfélrekordokat a ContosoSales adatforrásból és a készletelemekből a ContosoInventory adatforrásból, és egyetlen válaszba egyesíti őket. Az irányítópult két helyett egy API-hívással kapja meg az összes szükséges adatot.

A kérés kimenete a következő:

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

A válaszstruktúra tükrözi a lekérdezés struktúráját. data Az objektumon belül két legfelső szintű mező (customers és inventories) felel meg a két lekérdezésnek. Minden mező tartalmaz egy items tömböt a tényleges eredményekkel. Az customers elemekhez hasonló FirstNameLastNametulajdonságok tartoznak, míg az inventories elemekhez hasonló Nametulajdonságok találhatók – pontosan a lekérdezésben kért módon.

A lekérdezési nézet így néz ki a kérés végrehajtásakor:

Képernyőkép a szerkesztőképernyőről, amelyen két adatforráson átívelő lekérdezés látható.