Wie funktioniert GraphQL im Backend?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

Hi,

irgendwie verstehe ich nicht, was mit den queries aus dem Frontend dann im Backend passiert und wie die Daten aus der Datenbank ausgelesen werden, um genau nur die Daten an das Frontend zu leiten, welche gefragt wurden.

Hat da jemand Erfahrung?

Viele Grüße
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Hier findet man eine Liste von Libraries um GraphQL im Backend zu implementieren. Für Python verweist die auf Graphene. Dazu gibt es auch einiges an Dokumentation.

Grundsätzlich würde ich allerdings von GraphQL abraten, es sei den du du hast da wirklich einen sehr guten Grund für. Es ist damit wesentlich schwieriger dafür zu sorgen dass am Ende effiziente Datenbankenabfragen dabei herumkommen, was wichtig ist um brauchbare Performance zu garantieren.
naheliegend
User
Beiträge: 439
Registriert: Mittwoch 8. August 2018, 16:42

DasIch hat geschrieben: Sonntag 19. Juli 2020, 17:05 Hier findet man eine Liste von Libraries um GraphQL im Backend zu implementieren. Für Python verweist die auf Graphene. Dazu gibt es auch einiges an Dokumentation.

Grundsätzlich würde ich allerdings von GraphQL abraten, es sei den du du hast da wirklich einen sehr guten Grund für. Es ist damit wesentlich schwieriger dafür zu sorgen dass am Ende effiziente Datenbankenabfragen dabei herumkommen, was wichtig ist um brauchbare Performance zu garantieren.
Danke dir.

Warum rätst du davon ab? Ich dachte es ist gerade gut um die Performance zu steigern.
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Es steigert Performance nur unter ganz bestimmten Bedingungen, die sind:
  • Das Backend ist mindestens genauso schnell wie eine hypothetische äquivalente REST API.
  • Die Anzahl der Requests wird eliminiert (besonders relevant wenn man über 6 gleichzeitige kommt, den mehr macht ein Browser nicht parallel zu einem host, wobei man dies mit mehreren hosts umgehen kann)
  • Man kann das Datenvolumen reduzieren indem man overfetching (der Server antwortet mit mehr Daten als vom Client benötigt) eliminiert.
In einem kleinen Team wo du Kontrolle über Backend und Frontend (bzw. alle Clients) hast und du gut zwischen Backend und Frontend Teams koordinieren kannst, lässt sich auch eine REST API genau auf die Bedürfnisse des Frontends zuschneiden. Das wirst du wahrscheinlich auch tun ohne es groß zu planen. In der Situation hat dann GraphQL keine Vorteile.

GraphQL wird interessant wenn du dies nicht kannst. Das ist z.B. bei Facebook der Fall. Da hast du mehrere Teams die allein am Web Frontend beteiligt sind, selbst bei einer einzelnen Seite. Koordination ist dann nicht nur schwierig es ist auch etwas was man vermeiden will, da es das Potential hat zum Bottleneck zu werden. GraphQL ist da sehr interessant, das Backend muss nicht mehr so stark aufs Frontend eingehen. Du kannst Queries kombinieren, was praktisch ist wenn du mehrere Queries machen willst ohne zu wissen welche das genau sind weil die von Code von unterschiedlichen Teams kommen. GraphQL ist dafür komplexer aber dass ist dann auch egal, die Vorteile sind in dem Kontext so groß dass sich der zusätzlich Aufwand lohnt.

Die Sache ist allerdings du bist nicht Facebook. Du kommst mit dem zusätzlichen Aufwand wahrscheinlich nicht genauso gut klar. Auf der anderen Seite kannst du Dinge tun, die Facebook eben nicht machen kann. Wenn du Facebook kopierst, kannst du diesen Vorteil nicht ausnutzen.
Antworten