Databasteknik II
för D3 m fl
lördag 24 maj 2008 kl 08:00 - 12:00
Gäller som tentamen för:
DT3001 Datateknik C, Databasteknik II, provkod 0100
TDD119 Databaser, fortsättningskurs, provkod 0100
Hjälpmedel: | Miniräknare. |
Poängkrav: |
Maximal poäng är 38.
För betyget 3 krävs 19 poäng. |
Resultat och lösningar: | Meddelas via e-post eller på kursens hemsida, http://basen.oru.se/kurser/db2/2007-2008-p3/, senast lördag 14 juni 2008. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-73 47 013. |
Här är ett ER-diagram för databasen. Den innehåller patienter, läkare och läkarbesök:
Vi antar att databasen lagras med en vanlig, diskbaserad relationsdatabashanterare på en vanlig, modern dator, men med mycket disk. Så här blir det:
Tabellen Patienter
(1 miljard rader) |
| |||||||||||||||||||||||||
Tabellen Läkare
(1 miljon rader) |
| |||||||||||||||||||||||||
Tabellen Läkarbesök
(10 miljarder) |
|
a) utan något index (eller annan sökväg) på numret
b) med ett primärindex i form av ett B+-träd på numret
c) som en hashtabell, hashad på numret
Ange antagandena, och visa hur du räknat!
(Du behöver inte göra uträkningarna på nytt, utan utgå från svaren i uppgiften ovan och resonera om hur tiderna ändras.)
select Datum from "Läkare" as L, "Läkarbesök" as B where L.Lid = B."Läkare" and L.Stad = 'Bangalore';
a) (1p)
Skriv upp den systematiska (o-optimerade) översättningen av frågan, även kallad kanonisk form, som ett relationsalgebrauttryck.
b) (1p)
Rita upp samma relationsalgebrauttryck som ett träd.
c) (3p)
Visa hur en heuristisk frågeoptimerare, som inte tar hänsyn till datamängder eller lagringsstrukturer, optimerar den kanoniska formen från frågan ovan. Visa både vilka olika optimeringar som görs, och vad slutresultatet blir.
b) (1p) Och vad menas egentligen med en tidsdimension?
c) (2p) De flesta databashanteraren har inget inbyggt stöd för tidsdimensioner, men man kan representera tidsdimensionerna i en vanlig relationsdatabas genom att lägga till extra kolumner. Men vilka problem uppstår, som är svåra att hantera?
Den vanligaste metoden för att hindra samtidiga transaktioner från att störa varandras uppdateringar och läsningar är tvåfaslåsning. Visa med ett exempel hur tvåfaslåsning fungerar!
b) (2p)
Grundläggande tvåfaslåsning hanterar inte deadlock. Hur kan man hantera problemet med deadlock i en databashanterare som använder tvåfaslåsning?
c) (2p) Grundläggande tvåfaslåsning har problem om transaktioner kan avbrytas och rullas tillbaka. Visa vad som kan hända, och hur man kan lösa problemet genom att ändra algoritmen.
b) Vad använder man datalager till?
c) Varför har man datalager till det, i stället för att använda vanliga databaser?