Teilen über


Abfragen mehrerer Datenquellen in der Fabric-API für GraphQL

Einer der wichtigsten Vorteile der Fabric-API für GraphQL ist die Möglichkeit, mehrere Datenquellen wie Lakehouses, Warehouses und Datenbanken über einen einzigen einheitlichen API-Endpunkt verfügbar zu machen. Dies bedeutet, dass Ihre Anwendungen Daten aus verschiedenen Quellen in einer einzelnen GraphQL-Abfrage abrufen können, sodass keine Verbindung mit mehreren APIs oder Datenbanken getrennt hergestellt werden muss.

Beispielsweise können Sie Kundendaten in einem Lager und Bestandsdaten in einem anderen Seehaus haben. Anstatt zwei separate API-Aufrufe auszuführen, können Sie beide Quellen gleichzeitig über Ihre GraphQL-API abfragen, den Netzwerkaufwand reduzieren und den Anwendungscode vereinfachen.

Funktionsweise von Abfragen mit mehreren Quellen

Wenn Sie eine GraphQL-Abfrage ausgeben, die sich über mehrere Datenquellen erstreckt, fächert die API automatisch einzelne Anforderungen an jede Datenquelle parallel aus und kombiniert dann die Ergebnisse in einer einzigen Antwort. Dieser Ansatz:

  • Reduziert Roundtrips: Ihre Anwendung führt eine Anforderung anstelle mehrerer sequenzieller Aufrufe durch.
  • Verbessert die Leistung: Parallele Ausführung bedeutet schnellere Gesamtantwortzeiten
  • Vereinfacht Clientcode: Sie arbeiten mit einer einzelnen API-Schnittstelle, unabhängig davon, wo Daten gespeichert werden

Von Bedeutung

Mehrere Quellabfragen haben die folgenden Einschränkungen:

  • Sie können keine Beziehungen zwischen Typen erstellen, die verschiedene Datenquellen umfassen. Beziehungen funktionieren nur innerhalb einer einzelnen Datenquelle.
  • Einzelne Anforderungen an jede Datenquelle werden parallel ohne garantierte Reihenfolge ausgeführt.
  • Jede Anforderung an eine Datenquelle ist unabhängig – es gibt keine Transaktion, die mehrere Quellen umfasst.

Abfragebeispiel

Geschäftsszenario: Stellen Sie sich vor, Sie erstellen ein Dashboard, das Kundeninformationen und den Produktbestandsstatus nebeneinander anzeigt. Ihre Kundendaten befinden sich in einem Vertriebslager (ContosoSales), während Ihr Produktbestand in einem separaten Lakehouse (ContosoInventory) verwaltet wird, das von Ihren Lieferkettensystemen aktualisiert wird. Ohne Unterstützung für mehrere Quellen müssen Sie zwei separate API-Aufrufe durchführen, zwei verschiedene Verbindungen verwalten und die Daten selbst in Ihrem Anwendungscode kombinieren.

Mit der Fabric-API für GraphQL können Sie Daten aus beiden Quellen in einer einzigen Abfrage abrufen:

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

Diese einzelne Anforderung ruft Kundendatensätze aus der ContosoSales-Datenquelle und Bestandselemente aus der ContosoInventory-Datenquelle parallel ab und kombiniert sie in einer Antwort. Ihr Dashboard ruft alle benötigten Daten mit einem API-Aufruf anstelle von zwei ab.

Die Ausgabe für die Anfrage ist:

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

Die Antwortstruktur spiegelt die Abfragestruktur wieder. Innerhalb des data Objekts verfügen Sie über zwei Felder der obersten Ebene (customers und inventories) entsprechend den beiden von Ihnen vorgenommenen Abfragen. Jedes Feld enthält ein items Array mit den tatsächlichen Ergebnissen. Die customers Elemente haben Eigenschaften wie FirstName und LastName, während die inventories Elemente Eigenschaften wie Name- genau wie in der Abfrage angefordert haben.

So sieht die Abfrageansicht aus, wenn Sie diese Anforderung ausführen:

Screenshot des Editorbildschirms mit einer Abfrage, die zwei Datenquellen umfasst.