Sök:

Rekursiv SQL

Prestanda och begränsningar i Postgresql

Rekursion inom SQL är ett relativt nytt begrepp som introducerades i standarden SQL:1999 eftersom man insåg att det fanns ett behov av att skriva mer kraftfulla frågor i SQL. De flesta som arbetar inom eller har kunskap om IT känner i stor utsträckning till SQL. Trots detta ansåg författarna av denna rapport att kunskapen inom området för rekursion var tämligen begränsad. I rapporten undersökts hur kraftfull rekursion inom SQL är genom att rekursionstyper först identifieras och sedan implementerats i SQL-satser vilka körts och prestanda mäts på körningarna. Detta gjordes med Postgresql, databasen vilken rapporten i stort fokuserar på. Huruvida samma möjligheter eller begränsningar existerar i andra implementationer av SQL undersöks inte i denna rapport.Undersökningen visar att endast linjär rekursion är möjligt att använda i Postgreqsls implementation, precis som det står definierat i SQL:1999. Detta i sig är en stor begränsning då icke-linjära rekursionsfrågor ej är möjliga att ställa. Undersökningen visar dessutom att det som kallas rekursion inom både Postgresql och SQL:1999 inte egentligen är riktig rekursion i den bemärkelse som programmerare normalt använder, utan är mer likt iteration som i t.ex. en while-loop. Prestandan i Postgresql visar sig vara mycket god på de mycket stora testfall som rapporten behandlar. Rapporten går även igenom vissa sätt att komma runt detta problem med, som exempelvis dynamisk programmering. Rapporten utvärderar även olika sätt att förhindra evig körning av rekursiva frågor, som t.ex. då en oändlig loop förhindrar att frågan termineras.

Författare

Peter Caprioli Fabian Ström

Lärosäte och institution

KTH/Skolan för datavetenskap och kommunikation (CSC)

Nivå:

"Kandidatuppsats". Självständigt arbete (examensarbete ) om minst 15 högskolepoäng utfört för att erhålla kandidatexamen.

Läs mer..