Was ist GraphQL?

Seit 2015 bietet GraphQL eine Alternative zur Datenbanksprache SQL. Es ist also eine Datenabfrage- und Manipulationssprache, die Datenbankserver und entsprechende Abfragemöglichkeiten der Inhalte bereitstellt. Sie wurde entwickelt, da sie bei größeren Datenmengen wesentlich effizienter arbeitet als eine REST-Schnittstelle. Womit GraphQL sonst noch aufwartet und wer die Köpfe hinter dieser Geschichte sind, erfahren Sie hier.

Das Wichtigste in Kürze:

  • GraphQL wurde 2012 von Facebook entwickelt und anschließend im Jahr 2015 veröffentlicht.
  • Es handelt sich hierbei um Abfragesprache, Laufzeitumgebung und Typsystem in einem.
  • Bei großen Abfragemengen arbeitet GraphQL dabei wesentlich schneller als REST.
  • Die effiziente Sprache arbeitet mit sehr simplen Befehlen. GraphQL-Server sind zudem für eine Vielzahl von Sprachen verfügbar.
  • Auch Live-Abfragen sind bei GraphQL möglich.

GraphQL: Entwicklung und Performance

Die anfängliche Facebook-App wurde schnell sehr komplex. Um die benötigten Daten abzufragen, fiel die Entscheidung auf die sehr beliebte REST-API. Sie bietet eine einfache Abfragesprache: Mit kurzen GET-Anforderungen wird die Datenbank angesprochen und als JSON-Element zurückgegeben. Die App verarbeitet die Daten und zeigt anschließend das Ergebnis an. Die Datenmengen sind allerdings schnell gewachsen, sodass das Verhältnis von Abfragemenge und gelieferten Daten nicht mehr übereinstimmt.

Diese neue GraphQL Foundation kümmert sich seitdem um die Weiterentwicklung der Sprache. 

Was macht GraphQL effizienter als REST?

Mit der Weiterentwicklung des Internets und der fortschreitenden Vernetzung von Geräten, Programmen und Servern steigt auch die Anzahl der Schnittstellen. Diese sind dafür zuständig, um Daten geordnet von einem System in ein anderes zu transferieren. Eine Schnittstelle liefert also Daten, die auf bestimmte Art und Weise abgefragt werden müssen.

Hier hat sich REST als Standard hervorgetan. Durch einfache Abfragen stellt die Schnittstelle dann die Daten aus der Datenbank bereit. Hauptsächlich geht es hier um eine Maschine-zu-Maschine-Kommunikation, also Abfragen, die beispielsweise eine App an den Server stellt.

Mit der REST-API wird immer genau eine Abfrage an den Server geschickt. Diese wird beantwortet und der empfangene Datensatz aufbereitet. Das ist oft nicht weiter problematisch. Allerdings ist diese Methode auch nur für relativ geringe Datenmengen gedacht. Gerade im Fall von Facebook, wo die App sehr viele Anfragen an die Datenbank schickt, brachte das die Server an den Rand ihrer Möglichkeiten. Die Relation von Abfrageanzahl und erhaltener Informationen passte nicht mehr, weshalb GraphQL entwickelt wurde.

Mehr Performance durch GraphQL

Datenmengen werden in GraphQL und REST unterschiedlich empfangen und verarbeitet. In der folgenden Übersicht werden die Performance-Vorteile von GraphQL gegenüber REST erkennbar:

GraphQLREST
– Abfragen mit GraphQL holen nur die benötigten Datensätze ein.
– Die Aufarbeitung der Daten konzentriert sich auf ein Minimum, wodurch die Performance erhöht wird.
– Der Empfänger entscheidet, welche Daten erhalten werden.
– Bei jeder Anfrage werden vom Server große Datenmengen bereitgestellt.
– Pro Abfrage muss diese Datenmenge verarbeitet werden.
– Der Server entscheidet, welche Daten gesendet werden.

Sicherheit bei GraphQL

Da bei GraphQL der Empfänger und nicht der Server entscheidet, was er empfangen möchte, besteht eine größere Gefahr, zu viele Abfragen an den Server zu senden. Wenn Sie Daten über eine GraphQL-Schnittstelle zur Verfügung stellen möchten, könnte dies zu einem Problem werden.

Vor allem, wenn Sie offene APIs zur Verfügung stellen, ohne die Abfragen zu kontrollieren. In diesem Fall kann es passieren, dass eine zu große Anzahl an Abfragen den Server abstürzen lassen. Natürlich kann eine GraphQL-Schnittstelle auch performant und sicher gestaltet werden, allerdings gehört hier mehr Arbeit und Know-how dazu als bei REST-Schnittstellen. 

💡 Gut zu wissen: Arbeiten Sie mit Java, können Sie die durch den java-dataloader eine Bibliothek anlegen. Diese Bibliothek bündelt und optimiert Anfragen. Kommt eine Anfrage mehrfach vor, wird das bereits bekannte Ergebnis an den Empfänger gesendet, anstatt eine neue Datenbankabfrage zu starten.

Abfragen aus verschiedenen Programmiersprachen möglich

Da GraphQL schnell akzeptiert wurde, stehen für alle gängigen Programmiersprachen Bibliotheken zur Verfügung. So ist es möglich, in diesen Sprachen entsprechende Schnittstellen zu programmieren:

  • C#
  • Elixir
  • Java/JavaScript
  • Kotlin
  • Python

Eine vollständige Liste der Bibliotheken finden Sie hier

Hinweis: Für Unterstützung ist eine Entwicklungsumgebung wie GraphiQL ratsam. Das Online-Tool bietet Autovervollständigung und ein Web Frontend, mit dem Sie Abfragen entwickeln und testen können.

Effiziente und schnelle Entwicklung mit GraphQL

GraphQL ist klar und umfassend spezifiziert. Auch wenn Sie bisher keine Berührungspunkte mit der Datenbanksprache hatten, ist die Einarbeitung einfacher als bei REST. Das Schema an sich wird nur an einer Stelle erstellt und verwaltet, die Abfragen präzise definiert.

Natürlich müssen sich Entwickler immer noch selbst Gedanken darüber machen, welche Datensätze genau transportiert werden sollen. Mithilfe der GraphQL-Spezifikationen und Bibliotheken können Sie sich aber spielend leicht damit vertraut machen und schon bald performante und sichere Schnittstellen zur Verfügung stellen.

Nur noch bis 31. Januar 2020

Ihre Empfehlung ist uns 50 € wert

Empfehlen Sie die DomainFactory Ihren Freunden, Bekannten oder Kollegen und erhalten Sie 25 € Prämie für Sie und 25 € Prämie für den Geworbenen. Jede erfolgreiche Empfehlung zählt! Richten Sie gleich Ihr Prämienkonto ein

Ihre Empfehlung ist uns 50 € wert

Empfehlen Sie die DomainFactory Ihren Freunden, Bekannten oder Kollegen und erhalten Sie 25 € Prämie für Sie und 25 € Prämie für den Geworbenen. Jede erfolgreiche Empfehlung zählt! Richten Sie gleich Ihr Prämienkonto ein

Kunden werben Kunden

End of article

DomainFactory

Über den Autor

DomainFactory

Als Qualitätsanbieter überzeugen wir mit HighEnd-Technologie und umfassenden Serviceleistungen. Mit mehr als 1,3 Millionen verwalteten Domainnamen gehören wir zu den größten Webhosting-Unternehmen im deutschsprachigen Raum.

0 Kommentare

Bitte füllen Sie das Captcha aus : *

Reload Image

Die von Ihnen hier erhobenen Daten werden von der domainfactory GmbH zur Veröffentlichung Ihres Beitrags in diesem Blog verarbeitet. Weitere Informationen entnehmen Sie bitte folgendem Link: www.df.eu/datenschutz