Skip to content
Snippets Groups Projects
Commit 28cf9b2e authored by Marcel Huber's avatar Marcel Huber
Browse files

Merge branch 'postgraphile' into 'master'

Update README.md

See merge request m1huber/Dbs2Uebungen!127
parents f61a3c9b 783dcd4e
No related branches found
No related tags found
No related merge requests found
......@@ -19,7 +19,7 @@
für die Implementations-spezifischen Query-Filter
- Die bereitgestellten Instanzen (vgl. unten) werden regelmässig und
automatisch alle zwei Stunden zurückgesetzt und zwar um 00, 02, 04,
06, 08, 10, 12, 14, 16, 18, 20, 22)!
06, 08, 10, 12, 14, 16, 18, 20, 22!
- Wenn eine der 21 Instanzen nicht funktionieren sollte, bitte eine
andere (freie) Instanz nehmen.
......@@ -130,25 +130,20 @@
query alleAngestelltenMitInLuzern {
allAngestellters(filter: {
and: [{
salaer: {
greaterThan: "5000"
}
salaer: {greaterThan: "5000"}
}, {
salaer: {
lessThan: "8000"
}
salaer: {lessThan: "8000"}
}],
wohnort: {
equalTo: "Luzern"
}
}, orderBy: SALAER_ASC) {
wohnort: {equalTo: "Luzern"}
}, orderBy: SALAER_ASC)
{
nodes {
name
salaer
}
}
}
````
```
SOLUTION -->
5. Name und Telefonnummer der Angestellten mit einer Telefonnummer.
......@@ -243,21 +238,23 @@
- Nachteile:
<!-- SOLUTION
- Viele Roundtrips notwendig um Daten abzufragen
- Resultatobjekte enthalten immer alle Felder
- Viele Roundtrips notwendig um Daten abzufragen (N+1-Problem)
- Resultat enthält z.T. unnötigerweise alle Objekte und de Objekte enthalten immer alle Felder
SOLUTION -->
***GraphQL:***
- Vorteile:
<!-- SOLUTION
- Einfach an Abfragebedürfnis anpassbar
- Sämtliche benötigten Daten werden in einem "Roundtrip" geliefert.
- Die vom Client definierte Datenstruktur ist deklarativ und typisiert.
- Der Client ist vom Server entkoppelt; der Client definiert die verlangten Daten und nicht der Server.
SOLUTION -->
- Nachteile:
<!-- SOLUTION
- Abfragesprache nicht normiert, Grundelemente meist gleich
- Erweiterungen wie bspw. Filters Backend spezifisch
- Abfragesprache ist nur teilweise normiert, Grundelemente meist gleich
- Erweiterungen wie bspw. Filters sind Backend-spezifisch
SOLUTION -->
2. Nennen Sie je ein Beispiel für einen typischen Anwendungsfall von
SQL, RESTful, GraphQL
......@@ -265,25 +262,23 @@
***SQL:***
<!-- SOLUTION
Generelle Abfragesprache, beliebige Applikation mit
normalisierten Daten, z.B. Nutzerverwaltung von Firma.
Generelle Abfragesprache, beliebige Applikation mit normalisierten
Daten, z.B. Nutzerverwaltung von Firma.
SOLUTION -->
***RESTful:***
<!-- SOLUTION
Aplikation mit wenigen "Klassen", welche oft mit allen
Inhalten ausgeliefert wird, zB Twitter.
REST ist kein Standard, ist eher statisch, keine expliziten
Joins aber auch viel einfacher.
Aplikation mit wenigen "Klassen", welche oft mit allen Inhalten
ausgeliefert wird, zB Twitter. REST ist kein Standard, ist eher
statisch, keine expliziten Joins aber auch viel einfacher.
SOLUTION -->
***GraphQL:***
<!-- SOLUTION
Webapplikation mit Joins/diversen verknüpften Daten,
von welchen man meist nicht alle Felder braucht, zB Frontend für
Nutzerverwaltung von Firma.
GraphQL ist web-orientiert, dynamisch (Standard lässt
Webapplikation mit Joins/diversen verknüpften Daten, von welchen man
meist nicht alle Felder braucht, zB Frontend für Nutzerverwaltung
von Firma. GraphQL ist web-orientiert, dynamisch (Standard lässt
absichtlich vieles Offen), ist einfach zu verwenden. Graphen als
Denkmodell für Daten.
SOLUTION -->
......
......@@ -19,7 +19,7 @@
für die Implementations-spezifischen Query-Filter
- Die bereitgestellten Instanzen (vgl. unten) werden regelmässig und
automatisch alle zwei Stunden zurückgesetzt und zwar um 00, 02, 04,
06, 08, 10, 12, 14, 16, 18, 20, 22)!
06, 08, 10, 12, 14, 16, 18, 20, 22!
- Wenn eine der 21 Instanzen nicht funktionieren sollte, bitte eine
andere (freie) Instanz nehmen.
......@@ -126,18 +126,13 @@
query alleAngestelltenMitInLuzern {
allAngestellters(filter: {
and: [{
salaer: {
greaterThan: "5000"
}
salaer: {greaterThan: "5000"}
}, {
salaer: {
lessThan: "8000"
}
salaer: {lessThan: "8000"}
}],
wohnort: {
equalTo: "Luzern"
}
}, orderBy: SALAER_ASC) {
wohnort: {equalTo: "Luzern"}
}, orderBy: SALAER_ASC)
{
nodes {
name
salaer
......@@ -224,15 +219,17 @@
- Weit verbreitet
- APIs strukturell gleich und daher einfach zu benutzen
- Nachteile:
- Viele Roundtrips notwendig um Daten abzufragen
- Resultatobjekte enthalten immer alle Felder
- Viele Roundtrips notwendig um Daten abzufragen (N+1-Problem)
- Resultat enthält z.T. unnötigerweise alle Objekte und de Objekte enthalten immer alle Felder
***GraphQL:***
- Vorteile:
- Einfach an Abfragebedürfnis anpassbar
- Sämtliche benötigten Daten werden in einem "Roundtrip" geliefert.
- Die vom Client definierte Datenstruktur ist deklarativ und typisiert.
- Der Client ist vom Server entkoppelt; der Client definiert die verlangten Daten und nicht der Server.
- Nachteile:
- Abfragesprache nicht normiert, Grundelemente meist gleich
- Erweiterungen wie bspw. Filters Backend spezifisch
- Abfragesprache ist nur teilweise normiert, Grundelemente meist gleich
- Erweiterungen wie bspw. Filters sind Backend-spezifisch
2. Nennen Sie je ein Beispiel für einen typischen Anwendungsfall von
SQL, RESTful, GraphQL
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment