FROM CACHE - de_header

Kosten von Anragen der Admin GraphQL Admin API

Jan-S
Shopify Partner
6 0 0

Hallo zusammen,

Ich habe eine Frage zu den Kosten von Anragen der GraphQL Admin API.
Lange war es ja so, dass die kosten linear gestiegen sind mit der Anzahl der Angefragten Elemente.
10 Produkte anfragen: 2 + 10 = 12 Punkte
10 Produkte mit jeweils 10 Bildern anfragen: 2 + 10 + 10 * 10 = 102 Punkte

Dieses Pattern hat sich letztens geändert. Leider finde ich nirgendwo dokumentiert WIE es sich geändert hat.
10 Produkte anfragen: 2 + 10 = 7 Punkte
10 Produkte mit jeweils 10 Bildern anfragen: 30 Punkte

Ich habe jetzt einige Tests gefahren und bemerkt dass scheinbar irgendeine log Funktion genutzt wird.
Leider ist die exakte Formel nicht ersichtlich, wodurch sich eine Cost Estimation als sehr schwierig erweist.

Im Anhang finden sie eine CSV mit einigen Ergebnissen.

 

Es währe sehr nett wenn Sie Hier etwas Klarheit schaffen könnten, damit man wieder eine vernünftige Point Estimation machen könnte.

6 ANTWORTEN 6

Gabe
Shopify Staff
16681 2637 3912

Hey @Jan-S 

 

Danke  für die CSV Datei und sie enthält 3 Spalten: "Anzahl Produkte", "Anzahl Bilder pro Produkt" und "Kosten" sowie 4751 Zeilen mit Werten.

 

Um eine Cost Estimation Formel zu finden, die den Kostenverlauf basierend auf deinen Testergebnissen abbildet, habe ich jetzt unsere API Foren und Developer Doku durchgekämmt und du könntest vielleicht eine Regression mit Polynomialen durchführen, um zu versuchen, die Beziehung zwischen der Anzahl der Produkte, der Anzahl der Bilder pro Produkt und den resultierenden Kosten mathematisch zu erfassen. ​​

 

Du brauchst ggf. eine Modellgleichung zur Schätzung der Kosten mit einem mittleren quadratischen Fehler (MSE) von etwa 14.83 was vielleicht etwas von den tatsächlichen Kostenwerten abweicht, aber vielleicht ein Ausgangspunkt für die Kostenabschätzung ist.

 

Wie Shopify die Kosten für Anfragen über die GraphQL Admin API berechnet, hat sich anscheinend tatsächlich geändert und ist nun etwas komplexer, um die Serverbelastung im Schach zu halten. Anstatt eines einfachen linearen Modells basiert das neue Kostenmodell auf der Komplexität der Anfrage. Shopify verwendet jetzt ein System, das die Kosten basierend auf der angeforderten Datenmenge berechnet. Dieses System teilt den Anfragen eine Punktzahl zu, die sich an der erwarteten Serverbelastung orientiert.

 

Jede GraphQL-Anfrage hat unterschiedliche Kosten, die auf der statischen Analyse der Anfrage vor ihrer Ausführung basieren. Das bedeutet, dass verschiedene Typen von Abfragen unterschiedlich viele Punkte kosten:

  • Objekte kosten einen Punkt, da sie normalerweise eine einzelne Serveroperation darstellen.
  • Skalare Typen und Enums kosten null Punkte, da sie innerhalb von Objekten liegen, deren Kosten bereits berechnet wurden.
  • Verbindungen ("connections") kosten zwei Punkte plus die Anzahl der zurückgegebenen Objekte. Das bedeutet, dass die Kosten mit der Anzahl der angeforderten Objekte innerhalb einer Verbindung steigen.
  • Mutationen kosten generell zehn Punkte aufgrund der zusätzlichen Serverlast, die sie verursachen können.
  • Das von Shopify für die Admin REST API verwendete Rate-Limiting-System basiert auf dem sog. "Leaky Bucket"-Algorithmus.

Für detaillierte Informationen über die Funktionsweise und Beispiele zur Rate Limiting von Shopify's GraphQL APIs kannst du dich auf den Entwicklerblog von Shopify und die offizielle Doku der GraphQL Admin API beziehen​​​​.

 

Für Bulk-Operationen, die für die Verarbeitung großer Datenmengen ausgelegt sind, gibt es ebenfalls spezifische Richtlinien. Diese Operationen erlauben es, Daten asynchron in großen Mengen abzurufen, wobei Shopify die schwere Arbeit der Anfrageausführung übernimmt und dir eine URL zur Verfügung stellt, über die du alle Daten herunterladen kannst​​.

 

Leider gibt es keine explizite Erklärung zur Änderung der Kostenberechnung, die du beobachtet hast, oder eine einfache Formel für die neue Berechnungsmethode, die du beschrieben hast. 

 

Hoffe das hilft dir weiter! 😉

---
Habt ihr auch den Shop auf Ostern eingestellt das jetzt um die Ecke liegt? Warum nicht eine Ostereierjagd 🐣 in das Shop einbauen, um deinen Kunden etwas Gamification und Fun im Shop anzubieten? Gerne kann ich bei Interesse Tipps dazu geben!

Hast du weitere Fragen zum Shop? Gebe einfach ein Suchbegriff oben in der Suchleiste der Community Landingpage ein, denn das Thema haben wir sehr wahrscheinlich schon besprochen. Halte bitte Ausschau in deiner E-Mail auf Notifications zu Antworten auf deine Fragen in der Community.

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Jan-S
Shopify Partner
6 0 0

Hab ne recht gute Approximation:

 

Connections werden mit festen kosten 2 bewertet.

Hinzu kommen Kosten für die Anzahl der Angefragten Elemente: f(x) = ABRUNDEN( MAX( 1; log( ANZAHL zur Basis 1,6487 ) ) )
Unterconnections werden dann noch mit dem Gewicht der Eltern multipliziert: f(Anzahl Eltern) * (2 + f(Anzahl Connection))

(Nice to know: 1,6487 entspricht e^0,5. Scheinbar steckt da irgendwo ein ln drin...)

 

Für das Abfragen von X Produkten mit Y Bildern berechnen sich die kosten dann also mit:
2 + f(X) + f(X) * (2 + f(Y))

 

In meinem Datenset bekomme ich damit einen Fehler von 0.

Jetzt ist aber die Frage ob die punkte für plus Kunden anderes gewertet wird als nicht plus Kunden?

 

Währe vlt ganz nett sowas in der Doku zu erwähnen um besser verstehen zu können wie viel die Anfragen kosten ohne erstmal eine Anfrage raus schicken zu müssen.. Oder wenn man die Anfrage ändert wider abschätzen zu müssen wie viel die jetzt wieder kostet...

Gabe
Shopify Staff
16681 2637 3912

@Jan-S 

 

Danke für die Angaben und das wird eigentlich in den verlinkten Ressourcen erklärt.

 

Die Kostenkalkulation für Anfragen an die Shopify GraphQL Admin API basiert auf einem modell, das sich von dem traditionellen anfragebasierten Modell unterscheidet. In diesem Modell werden Punkte auf Basis der Komplexität einer Anfrage zugeteilt, was bedeutet, dass jede GraphQL-Anfrage unterschiedliche Kosten verursachen kann.

 

So genau kenne ich mich damit nicht aus, aber von dem was ich lese, bekommen Einheiten wie Objekte, Skalare und Enums jeweils unterschiedliche Punktwerte zugeordnet, und Verbindungen (Connections) verursachen zusätzliche Kosten abhängig von der Anzahl der zurückgegebenen Objekte. Mutationen haben einen festgelegten Punktwert aufgrund ihrer potenziellen Seiteneffekte auf Datenbanken und Indizes​​.

 

Shopify nutzt auch zwei Methoden zur Verwaltung der API-Ratenbegrenzung: die anfragebasierte Begrenzung, die bei der REST Admin API verwendet wird, und die berechneten Abfragekosten, die bei der GraphQL API angewendet werden. Bei der GraphQL Admin API werden Anfragen auf Basis berechneter Abfragekosten limitiert, was bedeutet, dass die Kosten von Anfragen über die Zeit und nicht die Anzahl der Anfragen berücksichtigt werden müssen. Jede Kombination aus App und Store erhält eine Bucket Size und eine Wiederherstellungsrate, die auf der API und der Planstufe basiert. Indem einfachere, kostengünstigere Abfragen durchgeführt werden, kann die Durchsatzrate maximiert und im Laufe der Zeit mehr Abfragen durchgeführt werden​​.

 

Es gibt also keine spezifischen Informationen darüber, ob die Kostenberechnung für Plus-Kunden anders ist als für Nicht-Plus-Kunden, sprich, die Doku und Ressourcen bestätigen daher nicht, dass es unterschiedliche Kostensätze oder Kalkulationsmethoden für verschiedene Kundentypen gibt. Stattdessen konzentrieren sich die Informationen auf die allgemeinen Prinzipien der Kostenberechnung und Ratenbegrenzung, die für alle Shopify-Nutzer gelten​​.

 

Hoffe das hilft dir weiter! 😉

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog

Jan-S
Shopify Partner
6 0 0

Das ist eben nicht mehr der Fall. Ich habe extra eine lib geschrieben die die kosten berechnet hat für beliebige anfragen.
Letztes Jahr haben die Connections linear zu den kosten beigetragen.

Dies ist jetzt nicht mehr der fall, da sie nur noch einen Logarythmisches Gewicht haben.

Ich freue mich zwar dass anfragen dadurch "billiger" werden, dennoch währe es nett sowas zu dokumentieren.

Werde jetzt meine lib updaten.

Jan-S
Shopify Partner
6 0 0

Leider sind diese angaben nicht mehr aktuell... DAS ist ja der Grund warum ich Frage.

Gabe
Shopify Staff
16681 2637 3912

@Jan-S 

Ah, jetzt erkenne ich wer ihr seid! Ich pushe eure App sehr viel hier in der Community. 💪

 

Ok, das beste wäre das an unseren Support zu senden und die werden das an das Partner Entwickler Team weiterleiten können, wenn du es denen sagst. Das wäre der beste Weg. Poste es auch bitte in der Englischen Community hier denn da verweilen auch unsere Entwickler und werden das 👀...


Sende bitte eine E-Mail an unseren Support wie hier demonstriert von der E-Mail-Adresse, die du zur Anmeldung in deinem Shopify-Shop verwendest, und gib deine myshopify.com-URL da auch ein und dann können sie dir weiterhelfen.

Gabe | Social Care @ Shopify
 - War meine Antwort hilfreich? Klicke Like um es mich wissen zu lassen! 
 - Wurde deine Frage beantwortet? Markiere es als Akzeptierte Lösung 
 - Um mehr zu erfahren, besuche das Shopify Help Center oder den Shopify Blog