Endre søk
RefereraExporteraLink to record
Permanent link

Direct link
Referera
Referensformat
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Annet format
Fler format
Språk
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Annet språk
Fler språk
Utmatningsformat
  • html
  • text
  • asciidoc
  • rtf
Prestanda i ett GraphQL-API: Ett experiment med databaser och verktyg för hantering av N+1-problemet
Blekinge Tekniska Högskola, Fakulteten för datavetenskaper, Institutionen för datavetenskap.
Blekinge Tekniska Högskola, Fakulteten för datavetenskaper, Institutionen för datavetenskap.
2024 (svensk)Independent thesis Basic level (university diploma), 10 poäng / 15 hpOppgave
Abstract [en]

Efficient performance is pivotal for digital service and product retention, necessitating consideration and design throughout system development. Central to this is the API, orchestrating communication between client and server within a system. GraphQL, created in 2012, revolutionized this interaction by enabling precise data requests. However, less sophisticated implementations of GraphQL often encounter the N+1 problem, where a query requiring N additional database queries is executed, leading to performance inefficiencies. With increasing data interconnectedness, query complexity and the choice of database management system (DBMS) become critical factors. This study investigates whether a GraphQL API performs better with Neo4j, a graph database, or MariaDB, a relational database, and evaluates how various N+1 problem solving tools influence API performance. The study conducted experiments with six API configurations, each subjected to five queries of varying complexity. One configuration utilized Neo4j, while the remaining five used MariaDB. Among the latter, three configurations integrated N+1 problem solving tools. The study shows that, when query complexity and data interconnectedness is low, response times from a GraphQL API using MariaDB, without solving the N+1-problem, are shorter than the response times of an API using Neo4j. It also demonstrates the efficacy of Neo4j when data becomes more interconnected. Furthermore, the study concludes that addressing the N+1 problem is crucial, and that different tools offer varying levels of performance in solving it. Tools that do manage to solve this issue commonly show a significant improvement in response times when interconnected data is requested.

Abstract [sv]

Effektiv prestanda är avgörande för att behålla användare av digitala tjänster och produkter, och måste tas i beaktande när ett system utvecklas. Centralt i sammanhanget är API:et, som koordinerar kommunikationen mellan klient och server inomett system. GraphQL, som skapades 2012, revolutionerade denna interaktion genomatt möjliggöra exakta dataförfrågningar. Mindre genomtänkta implementationer avGraphQL stöter ofta på N+1-problemet, där en förfrågan som kräver N ytterligare databasförfrågningar utförs, vilket leder till sämre prestanda. Med starkare kopplingar mellan data blir komplexiteten i förfrågningar och valet av databas avgörande faktorer. Denna studie syftar till att utforska om ett GraphQL-API presterar bättre medNeo4j, en grafdatabas, eller MariaDB, en relationsdatabas, och utvärderar hur olika verktyg, som löser N+1-problemet, påverkar API-prestandan. Studien genomförde experiment med sex API-konfigurationer, var och en testad med fem förfrågningar av varierande komplexitet. En konfiguration använde Neo4j, medan övriga fem använde MariaDB. Tre av dessa fem konfigurationer implementerade verktyg för att lösa N+1-problemet. Studien visar att, vid enklare frågor utan kopplad data, kan ett GraphQL-API, som använder MariaDB utan att lösa N+1-problemet, ge mycket kortare svarstider än ett API med Neo4j. Neo4j visar däremot sin effektivitet när data med kopplingar efterfrågas. Vidare visade experimenten på vikten av att lösa N+1-problemet. Verktygen lyckades lösa problemet olika väl, men gemensamt för de verktyg som klarar av att lösa det är att de förbättrar svarstiderna avsevärt så fort kopplad data efterfrågas.

sted, utgiver, år, opplag, sider
2024. , s. 33
Emneord [en]
GraphQL, N+1, Neo4j, MariaDB
Emneord [sv]
GraphQL, N+1, Neo4j, MariaDB
HSV kategori
Identifikatorer
URN: urn:nbn:se:bth-26270OAI: oai:DiVA.org:bth-26270DiVA, id: diva2:1880719
Fag / kurs
PA1438 Självständigt arbete Webbprogrammering
Utdanningsprogram
PAGWG Webbprogrammering
Veileder
Examiner
Tilgjengelig fra: 2024-07-02 Laget: 2024-07-01 Sist oppdatert: 2025-09-30bibliografisk kontrollert

Open Access i DiVA

fulltext(1312 kB)92 nedlastinger
Filinformasjon
Fil FULLTEXT01.pdfFilstørrelse 1312 kBChecksum SHA-512
8c9791a299086adada9bcc60ae843b7d8956d90db68ae020913c74f57c39a609a7b7e400edcee45a457cfe5b4e4056d6dbb0639d0afd650bac4087127b599db3
Type fulltextMimetype application/pdf

Av organisasjonen

Søk utenfor DiVA

GoogleGoogle Scholar
Totalt: 94 nedlastinger
Antall nedlastinger er summen av alle nedlastinger av alle fulltekster. Det kan for eksempel være tidligere versjoner som er ikke lenger tilgjengelige

urn-nbn

Altmetric

urn-nbn
Totalt: 358 treff
RefereraExporteraLink to record
Permanent link

Direct link
Referera
Referensformat
  • apa
  • ieee
  • modern-language-association-8th-edition
  • vancouver
  • Annet format
Fler format
Språk
  • de-DE
  • en-GB
  • en-US
  • fi-FI
  • nn-NO
  • nn-NB
  • sv-SE
  • Annet språk
Fler språk
Utmatningsformat
  • html
  • text
  • asciidoc
  • rtf