Eksamen 2011 Flashcards
Hvilke typiske feilsituasjoner kan oppstå i et databasesystem og hvilke mekanismer er innført for å håndtere disse?
Typiske feilsituasjoner ved et system som er i kontinuerlig drift:
- Strømbrudd
- Disk kræsj
- Applikasjonsfeil (prosesser som stopper, køer som går fulle, etc.)
- Etc.
Mekanismer for å håndtere dette:
- Kommandoer for transaksjonshåndtering (rollback og commit)
- Innføring av loggføring av transaksjoner etter hvert som de blir utført for å kunne
rekonstruere systemet til tilstanden før feilen oppstod
- Recovery. Gjennomoppbygging av transaksjonsloggen (redo, undo)
Beskriv noen typiske problemer som kan oppstå i et databasesystem
som har flere samtidige brukere.
Typiske problemer:
- Når flere brukere har aksess til den samme databasen, kan de typisk ødelegge for hverandre dvs. det kan oppstå konflikter.
- Lesing ikke noe problem alle kan lese samtidig.
- Problemer ved skriving til databasen.
—-> Granularitet: finkornethet
——-> OK å skrive til ulike databaser?
——-> Ok å skrive til ulike tabeller?
——-> Ok å skrive til ulike poster?
——-> Ok å skrive til ulike felt?
——-> Bør nevne minst ett av de to typiske problemsituasjoner der man har mange samtidige.
transaksjoner med korte beskrivelser:
—-> Tapt oppdatering: En transaksjon overskriver en annen.
—-> Inkonsistent innhenting/analyse: Henter inn data som er under endring.
—-> Angret oppdatering: En transaksjon jobber på data som ikke er skrevet permanent til databasen.
Hva er en vranglås? Nevn eksempler på hvordan en vranglås kan
løses opp.
To typer lås:
—–> Delt lås ved lesing andre som skal lese kan komme inn
—–> Eksklusiv lås ved skriving, andre transaksjoner får ikke tilgang
- Ved vranglås har man en evig vent situasjon der transaksjon T1 venter på en lås transaksjon T2 har og omvendt. Systemet henger.
- Vis gjerne med eksempel med to transaksjoner som ender i en situasjon som beskrevet
over eller beskriv kort “The dining philosophers”.
Eksempler på hvordan en vranglås kan løses opp:
- Unngå vranglås
—–> Alle låser settes før transaksjon startes
—–> Nummerere alle ressurser og kreve at de innhentes i stigende rekkefølge
—–> Detektere vranglås og fjerne denne
- Kan gjøres ved algoritmer, kan tegne ressursallokeringsgraf og se om løkke
—–> Hvis vranglås, finn offer og ta rollback på denne transaksjonen
- «Strutse-algoritme» – tro at det ikke oppstår, ta ROLLBACK på en transaksjon hvis time-out krever tidsstempling
Hva er serialiserbare forløp?
Vil ha serialiserbarhet: Resultat uavhengig av rekkefølge på transaksjonene. Et forløp er en bestemt rekkefølge for hvordan alle deloperasjonene i et sett av samtidige transaksjoner utføres. Et sekvensielt forløp er en rekkefølge der hver enkelt transaksjon
utføres en etter en (dvs. alle deloperasjoner i hver transaksjon før neste påbegynnes). Dette er
ikke effektivt og man ønsker større grad av samtidighet, men opprettholde korrekthet i
utførelsen. Det betyr her som om de enkelte transaksjonene hadde blitt utført sekvensielt. Et serialiserbart forløp har samme effekt som et serialiserbart forløp.