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
Wie funktioniert GraphQL im Backend?
-
- User
- Beiträge: 439
- Registriert: Mittwoch 8. August 2018, 16:42
__backjack__: "Jemand der VB oder PHP kann, der also was Programmieren angeht irgendwo im negativen Bereich liegt (...)"
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.
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.
-
- User
- Beiträge: 439
- Registriert: Mittwoch 8. August 2018, 16:42
Danke dir.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.
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 (...)"
Es steigert Performance nur unter ganz bestimmten Bedingungen, die sind:
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.
- 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.
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.