Seite 1 von 1
Wie funktioniert GraphQL im Backend?
Verfasst: Sonntag 19. Juli 2020, 16:03
von naheliegend
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
Re: Wie funktioniert GraphQL im Backend?
Verfasst: Sonntag 19. Juli 2020, 17:05
von DasIch
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.
Re: Wie funktioniert GraphQL im Backend?
Verfasst: Sonntag 19. Juli 2020, 17:32
von naheliegend
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.
Re: Wie funktioniert GraphQL im Backend?
Verfasst: Montag 20. Juli 2020, 08:33
von DasIch
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.