Databaser, fortsättningskurs
för D3 m fl
lördag 24 mars 2007 kl 08:00 - 12:00 i L001
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 43.
För betyget 3 krävs 21 poäng. |
Resultat och lösningar: | Meddelas på kursens hemsida senast tisdag 3 april 2007. |
Visning: |
Tisdag 3 april 2007 kl 12:00-12:30 i mitt rum (T2220).
Efter visningen kan tentorna hämtas på expeditionen. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-7347013. |
a) (1p) ODBC
b) (1p) ESQL
c) (1p) ADO.NET
d) (2p) Vilka är de största skillnaderna mellan ODBC och ADO.NET?
a) datautvinning ("data mining")
b) datalager ("data warehouse")
c) dimensionsdatabas ("dimensional database")
d) faktatabell
e) dimensionstabell
En typisk sandstrand innehåller 10 biljoner sandkorn, dvs 1013 stycken, som vi lagrar i tabellen med hjälp av 10 biljoner insert-kommandon i SQL. (Databasen lagras på en riktigt, riktigt stor disk.) Det finns till att börja med inga index.create table sandkorn (id integer, x float, y float, z float, vikt float);
a) Ungefär hur lång tid tar det att köra följande fråga? Gör rimliga antaganden om olika saker, och ange dessa antaganden. Förklara också hur du räknat.
select * from sandkorn where id = 1000000;
b) Vi skapar ett index:
Det index som skapas är ett sekundärindex i form av ett B+-träd. Ungefär hur lång tid tar det nu att köra frågan från a-uppgiften? Gör även här rimliga antaganden om olika saker, och ange dessa antaganden. Förklara också hur du räknat.create index sid on sandkorn(id);
A
|
AP
|
P
|
Angus arbetar på Apollo-projektet och Manhattan-projektet, Bruce arbetar på Manhattan-projektet, och så vidare. Det finns tusentals projekt och många tusen personer.
Vi vill vilka av de personer som (ibland) arbetar i Gnesta som tjänar mer än 30000 kronor, och ställer följande SQL-fråga:
select Anr, Anamn from A, AP, P where A.Anr = AP.A and AP.P = P.Pnr and A.Lön > 30000 and P.Adress = 'Gnesta';
a) (2p) Visa den systematiska översättningen till relationsalgebra, även kallad "kanonisk form", av SQL-frågan.
b) (1p) Vi antar att databashanteraren arbetar internt med relationsalgebra. Förklara skillnaden mellan att köra relationsalgebran med materialiserade mellanresultat och med strömmade mellanresultat ("pipe-lining").
c) (2p) Skulle den kanoniska formen vara ett bra sätt att köra frågan? Motivera svaret, såväl för en körning med materialiserade mellanresultat som med strömmade mellanresultat.
d) (1p) Vad innebär frågeoptimering i databaser?
e) (1p) Vad innebär heuristisk optimering?
f) (5p) Visa hur en heuristisk optimerare kan optimera den kanoniska formen från deluppgift a. Visa både vilka olika optimeringar som görs, och vad slutresultatet blir.
g) (1p) Vad innebär kostnadsbaserad optimering, och hur skiljer sig den från heuristisk optimering?
h) (2p) Vilka fördelar och nackdelar finns med kostnadsbaserad optimering, jämfört med heuristisk optimering?