INF1300 Introduksjon til databaser

Like dokumenter
INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

INF1300 Introduksjon til databaser

Obligatorisk oppgave nr. 3 i INF1300 høsten 2008

Transaksjonshåndtering og samtidighetskontroll

DBS20 - Introduksjon til transaksjonsprosessering og teori

DBMS Database Management System (repetisjon) Programmeringsgrensesnitt. Serialiserbarhet

Repetisjonsforelesning, SQL og utover

INF1300 Introduksjon til databaser

Øving 5: Transaksjonshåndtering, logging og normalisering

Systemfeil og logging

Systemfeil og logging

INF1300 Introduksjon til databaser

Systemfeil og logging

Relasjonsdatabasedesign

Dagens tema: Oppdateringsanomalier Normalformer

Relasjonsdatabasedesign

Transaksjonsmodell. Samtidighet (1) ACID-transaksjoner. Samtidighet (2) Systemkræsj (1) Kapittel 17, Coping With System Failure

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Databasesystemer, oversikt

Oppdateringsanomalier Normalformer

Systemfeil og logging

UNIVERSITETET. Relasjonsdatabasedesign

UNIVERSITETET I OSLO

Relasjonsdatabasedesign

DBS22 Databasegjenopprettingsteknikker

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Hvordan databasesystemene kan hjelpe RAM-produsentene

Samtidighetsfenomener og anomalier i eksekveringsplaner (kursorisk) INF3100 Ellen Munthe-Kaas 1

Samtidighetsfenomener og anomalier i eksekveringsplaner. INF Ellen Munthe-Kaas 1

Relasjonsdatabasedesign

Join. Intuitivt: Skjøte sammen to relasjoner. Intuitivt: 1. Beregn R S 2. Velg ut de tuplene som tilfredsstiller joinbetingelsen C

Oppdateringsanomalier. Normalformer. Institutt for informatikk INF

Andre sett obligatoriske oppgaver i INF3100 V2013

Isolasjon i postgres og mysql

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Systemfeil og logging

Løsningsskisse til Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

UNIVERSITETET I OSLO

Systemfeil og logging

Repetisjon av transaksjonshåndtering og samtidighetskontroll. Lana Vu

Transaksjoner. transaksjon. når starter/slutter 1 trans.?

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Systemfeil og logging

Transaksjonshåndtering og samtidighetskontroll

Introduksjon til fagfeltet

Transaksjonshåndtering Del 3

ndtering og samtidighetskontroll

Relasjonsdatabasedesign

INF1300 Introduksjon til databaser

Integritetsregler i SQL

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Presentasjon av doktorgradsprosjekt

Oppgave 1 Datamodellering 25 %

Transaksjonshåndtering Del 2

Transaksjonshåndtering Del 2

Hva har vi gjort? SQL og Databasedesign

Utvikling fra kjernen og ut

Eksamensoppgave i TDT4145 Datamodellering og databasesystemer

Andre sett obligatoriske oppgaver i INF3100 V2012

Historisk tidslinje. Resource Description Framework (RDF) Web Ontology Language (OWL) Object-Role Modeling (ORM) Entity Relationship Model (ER)

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Transaksjonshåndtering og samtidighetskontroll

Integritetsregler i SQL. Primærnøkler

Normalformer or Normalisering 1NF, 2NF, 3NF, BCNF

DBS18 - Strategier for Query-prosessering

En lett innføring i foreninger (JOINs) i SQL

Relasjonsalgebraen. Algebra

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Hva kjennetegner god relasjonsdatabasedesign? Eksempel: Grossistdatabase versjon 1

Det matematisk-naturvitenskapelige fakultet. Kontroller at oppgavesettet er komplett før du begynner å besvare det.

Repetisjon: Normalformer og SQL

INF5030. Håndtering av virksomhetskritiske data

UNIVERSITETET I OSLO SQL. Structured Query Language. (The intergalactic dataspeak) Institutt for Informatikk. INF Ragnar Normann 1

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

UNIVERSITETET I OSLO

5602 DATABASER Bokmål/nynorsk. 17 (inkludert denne forsiden) Eksamensresultatene blir offentliggjort på Studentweb.

Eksamensoppgåve i TDT4145 Datamodellering og databasesystemer

Transaksjonshåndtering Del 3

Relasjonsdatabasedesign

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ragnar Normann

D: Ingen trykte eller håndskrevne hjelpemiddel tillatt. Bestemt, enkel kalkulator tillatt.

Databaser. - Normalisering -

Andre sett obligatoriske oppgaver iinf3100v2011

INF1300 Introduksjon til databaser

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser

Informasjonssystemer, DBMSer og databaser

1. SQL datadefinisjon og manipulering

UNIVERSITETET. Relasjonsalgebra. INF Ragnhild Kobro Runde

INF212 - Databaseteori. Kursinnhold

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk INF Ellen Munthe-Kaas

Databaser. Relasjonsmodellen 2 Læreboka: Kap. 2 Relasjonsmodellen

UNIVERSITETET I OSLO RELASJONSALGEBRA. Regning med relasjoner. Institutt for Informatikk. INF Ellen Munthe-Kaas

Transkript:

UNIVERSITETET I OSLO INF1300 Introduksjon til databaser Dagens tema: SQL: Outer join Denormalisering og splitting Transaksjoner og ACID-reglene DBMSer en introduksjon til INF3100 INF1300 19.11.2007 Ragnar Normann 1

Hengetupler (repetisjon) Når vi joiner to tabeller, kaller vi et tuppel som ikke har noen match i den andre relasjonen, et hengetuppel Hengetupler blir ikke med i resultatet av en (vanlig) join, også kalt en inner join Hvis vi ønsker å gjøre en join hvor vi beholder hengetuplene fra en eller begge tabellene, bruker vi en outer join INF1300 19.11.2007 Ragnar Normann 2

Left outer join Syntaks for en left outer join er slik: SELECT svar-attributter FROM tabell-1 LEFT OUTER JOIN tabell-2 ON join-betingelse Resultatet blir en join av tabell-1 og tabell-2, pluss en linje for hvert hengetuppel i tabell-1 der alle svar-attributtene fra tabell-2 er NULL Eventuelle hengetupler fra tabell-2 blir ikke med i resultatet INF1300 19.11.2007 Ragnar Normann 3

Right outer join Syntaks for en right outer join er slik: SELECT svar-attributter FROM tabell-1 RIGHT OUTER JOIN tabell-2 ON join-betingelse Resultatet blir en join av tabell-1 og tabell-2, pluss en linje for hvert hengetuppel i tabell-2 der alle svar-attributtene fra tabell-1 er NULL Eventuelle hengetupler fra tabell-1 blir ikke med i resultatet INF1300 19.11.2007 Ragnar Normann 4

Full outer join Syntaks for en full outer join er slik: SELECT svar-attributter FROM tabell-1 FULL OUTER JOIN tabell-2 ON join-betingelse Resultatet blir en join av tabell-1 og tabell-2, pluss en linje for hvert hengetuppel i tabell-1 der alle svar-attributtene fra tabell-2 er NULL, og en linje for hvert hengetuppel i tabell-2 der alle svar-attributtene fra tabell-1 er NULL INF1300 19.11.2007 Ragnar Normann 5

Avvik fra optimal normalform Av hensyn til effektiviseringer eller forenklinger i applikasjonsprogrammene kan det enkelte ganger være hensiktsmessig å avvike fra den optimale normalformen vi får ved å gruppere ORM-UML-modellen Det er to måter å gjøre slike avvik på: Denormalisering Splitting av relasjoner INF1300 19.11.2007 Ragnar Normann 6

Denormalisering 1 Det å denormalisere det grupperte resultatet betyr å ta en join av to eller flere basisrelasjoner og la resultatet erstatte disse basisrelasjonene Denormalisering gir alltid oppdateringsanomalier Kontroll av oppdateringsanomaliene fører til prosedyrerestriksjoner, enten i applikasjonsprogrammene eller i triggerprogrammer Hensikten er å spare tid ved at svært hyppige joiner er utført på forhånd INF1300 19.11.2007 Ragnar Normann 7

Denormalisering 2 Et meget vanlig eksempel er lagring av adresser En BCNF-normalisering av adresser vil gi to tabeller En med gateadresse og postnummer En med postnummer og poststed En denormalisering erstatter disse med én tabell med gateadresse, postnummer og poststed Dette gir mulighet for å lagre samme postnummer med forskjellige poststeder INF1300 19.11.2007 Ragnar Normann 8

Splitting 1 Splitting vil si at vi etter grupperingen velger å fordele attributtene i en basisrelasjon på flere basisrelasjoner (nedenfor kalt delrelasjoner) Det stilles vanligvis tre krav til en splitting, hvorav de to første er absolutte: Alle attributter er med i minst en delrelasjon Primærnøkkelen er med i alle delrelasjonene Ingen attributter som ikke er med i primærnøkkelen, er med i mer enn en delrelasjon INF1300 19.11.2007 Ragnar Normann 9

Splitting 2 Hvis det tredje kravet på forrige lysark er oppfylt, gir ikke splitting noen oppdateringsanomalier Splitting medfører alltid en økning i antall leseog skriveoperasjoner Det er to hovedgrunner til splitting: Sikkerhetshensyn Økt effektivitet som et resultat av mindre behov for bufferplass (Splitting sparer ikke diskplass) INF1300 19.11.2007 Ragnar Normann 10

Splitting pga sikkerhetshensyn Splitting kan være nyttig i behandlingen av sensitive data Ta som eksempel pasientdata i helsevesenet: Navn, fødselsdato o.l. kan ligge i én relasjon som er allment tilgjengelig Diagnose og prøveresultater kan ligge i en annen relasjon med begrenset tilgjengelighet DBMSer har vanligvis adgangskontroll på tabeller, men ikke på enkeltattributter INF1300 19.11.2007 Ragnar Normann 11

Splitting pga effektivitet Splitting kan være formålstjenlig hvis den opprinnelige relasjonen har noen (store) attributter som er NULL i mange forekomster Dette kan bety mye for behovet for bufferplass, og dermed for mengden av disk-i/o Databaseadministratoren kan på en måte innføre «falske» underbegreper ved hjelp av slik splitting (Underbegreper oppstår når noen forekomster ikke kan ha verdi i et attributt, splitting skiller ut de forekomstene som akkurat nå har en verdi) INF1300 19.11.2007 Ragnar Normann 12

Håndtering av BLOBer Den vanligste bruken av Binary large objects (BLOBer) er lagring av multimediadata (lyd, bilder og video) Selv om SQL tillater å ha BLOB som domene for et attributt, er det dumt å lagre et BLOB som del av en forekomst (det krever for mye bufferplass) I stedet lar vi attributtverdien være en peker inn i et separat diskområde hvor BLOBene lagres Dette kan minne om splitting, men regnes ikke som det INF1300 19.11.2007 Ragnar Normann 13

En-/flerbruker DBMSer En-/multiprosessorer Et DBMS er et enbrukersystem hvis det bare tillater én bruker av gangen Et DBMS er et flerbrukersystem hvis flere brukere kan anvende systemet på samme tid I våre dager er det nærmest utenkelig at et DBMS er et enbrukersystem En enprosessors datamaskin kan understøtte et flerbrukersystems DBMS ved at parallelle eksekveringer flettes (engelsk: interleaving) En multiprosessor tillater ekte parallell prosessering av eksekveringer INF1300 19.11.2007 Ragnar Normann 14

Transaksjoner En transaksjon (databasetransaksjon) er et logisk stykke arbeid utført mot en database Transaksjoner må overholde integritetsreglene: Hvis databasen er i en lovlig tilstand før en transaksjon starter, så skal databasen være i en lovlig tilstand når transaksjonen avslutter En transaksjon skal oppfattes av omverdenen som en udelelig enhet INF1300 19.11.2007 Ragnar Normann 15

Lese- og skrivetransaksjoner En lesetransaksjon er en transaksjon som leser fra databasen, men ikke foretar endringer i den En skrivetransaksjon er en transaksjon som foretar endringer i databasen Lesetransaksjoner kan altså bare lese data fra databasen, mens skrivetransaksjoner både kan lese og modifisere dataene INF1300 19.11.2007 Ragnar Normann 16

Abort og commit Når en transaksjon skal avslutte, er det to måter det kan skje på: Transaksjonen klarte ikke (eller fikk ikke lov til) å utføre alle sine lese- og skriveoperasjoner Den må da avbrytes, og vi sier at den gjør abort (eller at den aborterer eller aborteres) Transaksjonen fikk gjort alt den skulle og vil gjøre sine endringer tilgjengelig for andre Den bekrefter da at den avslutter vellykket Vi bruker det engeske ordet commit for dette INF1300 19.11.2007 Ragnar Normann 17

ACID-egenskapene 1 ACID-egenskapene er fire krav til håndtering av transaksjoner som alle DBMSer må følge Ordet ACID består av forbokstavene på de engelske betegnelsen på disse kravene: Atomicity Consistency preservation Isolation Durability/permanency INF1300 19.11.2007 Ragnar Normann 18

ACID-egenskapene 2 Atomicity En transaksjon er en atomær prosesseringsenhet; den utføres enten i sin helhet (commit) eller ikke i det hele tatt (abort) Consistency preservation En korrekt eksekvering av en transaksjon må ta databasen fra én konsistent tilstand til en annen (Dette er en viktig del av definisjonen av en transaksjon og er strengt tatt et unødvendig krav, men all databaselitteratur har det med) INF1300 19.11.2007 Ragnar Normann 19

ACID-egenskapene - 3 Isolation Eventuelle oppdateringer en transaksjon gjør, skal ikke gjøres synlige for andre transaksjoner før transaksjonen er committed (samtidige transaksjoner skal ikke vite om hverandre) Durability/permanency Hvis en transaksjon oppdaterer databasen, og oppdateringene er committed, må ikke senere oppståtte feil kunne gjøre at oppdateringene går tapt (oppdateringene skal være varige) INF1300 19.11.2007 Ragnar Normann 20

Hva kan gå galt? Vi skal nå se på tre eksempler på oppdateringsanomalier, det vil si eksekveringer som bryter mot ACID-reglene og derfor ikke kan tillates De engelske betegnelsene på eksemplene er: 1. Lost update 2. Dirty read 3. Incorrect summary INF1300 19.11.2007 Ragnar Normann 21

Eks. 1: Tap av oppdatering tidsaksen T1 read_item(x); X:=X-N; write_item(x); read_item(y); Y:=Y+N; write_item(y); T2 read_item(x); X:=X+M; write_item(x); INF1300 19.11.2007 Ragnar Normann 22

Eks. 2: Midlertidig oppdatering tidsaksen T1 read_item(x); X:=X-N; write_item(x); read_item(y); en feil oppstår T2 read_item(x); X:=X+M; write_item(x); INF1300 19.11.2007 Ragnar Normann 23

Eks. 3: Feil summasjon tidsaksen T1 read_item(x); X:=X-N; write_item(x); read_item(y); Y:=Y+N; write_item(y); T2 sum:=0; read_item(a); sum:=sum+a; read_item(x); sum:=sum+x; read_item(y); sum:=sum+y; INF1300 19.11.2007 Ragnar Normann 24

Databaselogger En databaselogg er en fil hvor alle oppdateringer av databasen lagres Når en transaksjon skriver en variabel x, skrives en post i loggen som består av gammel og ny verdi av x, og hvilken transaksjon som gjorde oppdateringen Når en transaksjon gjør commit eller abort, skrives dette i loggen Når man tar backup av databasen, begynner man på en ny logg og kaster den gamle INF1300 19.11.2007 Ragnar Normann 25

Sikring av ACID Atomicity: En transaksjon er en atomær prosesseringsenhet Databasesystemets gjenopprettelsesmetode (engelsk: recovery method) har ansvaret for å sikre A ved at den omgjør eventuelle endringer en mislykket transaksjon T har rukket å påføre databasen Det gjøres ved å lese loggen og skrive tilbake de gamle verdiene av data som T har endret INF1300 19.11.2007 Ragnar Normann 26

Sikring av ACID Consistency preservation: Transaksjoner bringer databasen fra én konsistent tilstand til en annen C sikres delvis av databasehåndteringssystemet ved at dette garanterer at visse typer integritetsregler ikke blir brutt Dersom DBMSen ikke kan håndtere en regel, må databaseprogrammereren ta ansvaret for at konsistens bevares INF1300 19.11.2007 Ragnar Normann 27

Sikring av ACID Isolation: Oppdateringer skal ikke være synlige for andre før transaksjonen er committed Samtidighetskontrollen (engelsk: concurrency control method) har ansvaret for å sikre I Det finnes mange metoder for å gjøre dette, og I er den av ACID-egenskapene som er vanskeligst (og dermed mest interessant) å håndheve INF1300 19.11.2007 Ragnar Normann 28

Sikring av ACID Durability/permanency: Oppdateringer som er committed, er varige Databasesystemets gjenopprettelsesmetode har ansvaret for å sikre D Etter et systemkræsj leses loggen, og data som er skrevet av committede transaksjoner gjenopprettes i databasen INF1300 19.11.2007 Ragnar Normann 29

Transisjonsdiagram for eksekveringen av en transaksjon read, write begin transaction aktiv end transaction delvis committed commit committed abort abort mislykket avsluttet INF1300 19.11.2007 Ragnar Normann 30

Oversikt over DBMS-oppgaver Tolking av SQL-kode og oversettelse til relasjonsalgebra Optimalisering av algebrauttrykk til best mulige eksekveringsplaner Utføring av eksekveringsplaner Buffer- og diskhåndtering Transaksjonshåndtering og samtidighetskontroll Logging og gjenoppretting etter feil og aborter Administrasjon av brukere og deres rettigheter INF1300 19.11.2007 Ragnar Normann 31

SLUTT PÅ PENSUM Neste kurs heter INF3100 Det handler om hvordan et DBMS løser sine oppgaver INF1300 19.11.2007 Ragnar Normann 32