63
Videregående databasetemaer Tom Heine Nätt

Videregående databasetemaer

  • Upload
    brick

  • View
    79

  • Download
    5

Embed Size (px)

DESCRIPTION

Videregående databasetemaer. Tom Heine Nätt. Plan. Databasedrifting Sikkerhet Databases oppbygning Distribuerte databasesystemer Eksempel: Google Applikasjonsutvikling mot databaser Triggere /Lagrede prosedyrer XML-databaser Mellomvare Datavarehus SQL2/3 Deduktive databaser - PowerPoint PPT Presentation

Citation preview

Page 1: Videregående  databasetemaer

Videregående databasetemaer

Tom Heine Nätt

Page 2: Videregående  databasetemaer

Plan

• Databasedrifting• Sikkerhet

• Databases oppbygning• Distribuerte databasesystemer

• Eksempel: Google• Applikasjonsutvikling mot databaser

• Triggere /Lagrede prosedyrer• XML-databaser• Mellomvare• Datavarehus• SQL2/3• Deduktive databaser• Kurset "Databaseadministrasjon og –systemer" -> DAS

Page 3: Videregående  databasetemaer

Databaseadministrasjon

Page 4: Videregående  databasetemaer

Databaseadministrasjon• Flere jobber:

• Opprette DB• Opprette brukere• Sette rettigheter• Sette indekser• Osv.

• Inneholder også databasedrifting• Backup• Logging• Osv.

Page 5: Videregående  databasetemaer

Brukeradministrasjon

• 2 aspekter!• Hvem skal få koble til, hvordan og hvor

fra?• Autentisering

• Hva skal de få gjøre?• Privilegier

Page 6: Videregående  databasetemaer

Rettigheter

• En bruker identifieres med brukernavn og host• F.eks tomhnatt@localhost,

[email protected], tomhnatt@’%’, tomhnatt@’%.hiof.no’

• SQLServer (mf.) har også andre Authentication Modes• Windows Login / Active directory , Kerberos osv.

• Vi kan styre rettigheter på• Bruker

• Mye ekstra ( antall spørringer i timen etc)• DB • Tabell• Kolonne

Page 7: Videregående  databasetemaer

Backup• Ikke bare ved systemkræsj:

• Finne endringer i data• Flytte databaser• Ta vare på data over tid (nye regnskapsår)

• I hovedsak 2(3) måter:• Full• Inkrementell• Diffrensiell

Page 8: Videregående  databasetemaer

Backup - Problemer• Viktig å ha et backupscheme (plan)

• Backuprotasjon• Å ta backup av systemer som er kontinuerlig i bruk…

• Transaksjoner• Låsing

• DBMS fikser som oftest dette selv…• Om natta/lunsjen osv..

• Rettigheter på backupen?• Hvor skal vi plassere backupen?

• Tabell i DB• Fil på maskin• Andre medier

• Plassproblem

Page 9: Videregående  databasetemaer

Logging• Hvilken hensikt er det å utføre logging:

• Oppdage feil• Oppdage ”angrep”• Bevis for hvem som har gjort hva• Historikk• Bruksmønster• Rollback

• Pass godt på loggfilene!• Inneholder i tilegg til data også hvem og når!

Page 10: Videregående  databasetemaer

Sikkerhet

Page 11: Videregående  databasetemaer

Hvorfor sikkerhet rundt data?• Bedriftens største verdi?

• Data(base)sikkerhet er ITbransjens største utfordring…• Lett å stjele

• Uten spor• Utenifra • Utpressingsmiddel• Hackers inntekstkilde

• FÅ har nok forståelse for å se risikoen• ”Vi har jo innlogging”

• Data er sikrest når ingen bruker/får tak i dem.• Balansegang

• Viktig å ikke bli paranoid, men…

Page 12: Videregående  databasetemaer

Trussler

• Hva vil vi unngå? • Interruption (avbrytning)• Interception (avlyttning)• Modification (endring)• Fabrication (fabrikering)

• Hva er verst?• Husk at alt er ikke ondsinnet..• Klassifiseres i:

• Aktive og passive angrep

Page 13: Videregående  databasetemaer

Sikkerhet i mange forbindelser• Lagring av data• Backup• Innlogging• Rettigheter• Logging• DBMS• Nettet• Applikasjoner (Brukerprogrammer)• Fysiske omgivelser

• Svakeste leddet…

Page 14: Videregående  databasetemaer

En databases oppbygning

Page 15: Videregående  databasetemaer

EN DBMS er ikke én ting

• Består av mange komponenter• Kan ha tilleggsmoduler• Mange elementer går igjen hos ulike

DBMSer

Page 16: Videregående  databasetemaer

Forenklet oppbygning1. Query processor

2. Authorization control

3. Integrity checker

4. Query optimizer

5. Transaction manager6. Scheduler

7. Recovery manager

8. Buffer manager9. File manager

1. Sjekker at spørring er OK

2. Sjekker at bruker har rettigheter

3. Sjekker at det er trygt å utføre spørringen

4. Gjør spørringen raskere/bedre

5. Setter inn delene av spørringen i en sammenheng

6. Når kan vi få lov til å utføre spørringen? Når passer det best å kjøre ?

7. Hvordan skal vi kunne ”undoe” spørringen

8. Hva skal skrives til fil?9. Skrive til fil

Page 17: Videregående  databasetemaer

Hvordan lagre på filer?

• Åpner aldri hele fila• Arbeider med pages (el .blocks)

• (Utdrag av fila)

• Ofte mange filer• I enkelte typer DB har man rådata på en

dedikert disk• Det herlige med en DB er at vi vanligvis

slipper tenke på dette

Page 18: Videregående  databasetemaer

Distribuerte databasesystemer

Page 19: Videregående  databasetemaer

Distribuerte databasesystemer• Skiller mellom

• Distributed DBMS (DDBMS)• DBMS (og Data) - ulike lokasjoner –flere separate DBer

• Ofte også med ulike deler av data/overlapp• Distributed Processing DBMS

• Flere DBMS’er jobber mot samme DB• Parallel DBMS

• Èn DBMS som kjører over flere maskiner • Når:

• Data blir for mye for en maskin• Belastningen blir for mye for en maskin • Spre risiko ved systemkræsj • Spre databasen til ulike lokasjoner• ++

• To typer systemer:• Homogene• Heterogene

• Hardware• DMBS (produkt/versjon)• Mer feilsikkert, men vanskeligere å administrere

Page 20: Videregående  databasetemaer

Fordeler og ulemper DDBMS• Fordeler:

• Samler flere DBer (også integrasjon)• Tilgjengelighet• Stabilitet• Ytelse• Økonomi ( billigere med flere billige maskiner)• Modulær vekst

• Ulemper:• Kompleksitet • Transaksjonskontroll (data ikke oppdatert samtidig alle steder)• Kostnad (drifting, systemer)• Integritet vanskeligere• Ingen standarder• Krever flere administratorer (sikkerhet)• Mer datatrafikk på nettverket ( sikkerhet)• Treig trafikk på nettet

Page 21: Videregående  databasetemaer

Fragmentering av data

• Hvordan skal vi skille en DB til DDB?• Opplagt å skille tabeller, men en tabell kan

også være for stor• 2 hovedtyper:

• Horisontal deling (rader)• Vertikal deling (attributter)

• Med/uten redundans

Page 22: Videregående  databasetemaer

Google

• 10 milliarder websider indeksert (10 kb i gjennomsnitt)

• 1000 forespørsler hvert sekund• 2000 PC i et cluster• 30 clustere• 1 petabyte i hvert cluster (1 petabyte = 1 million MB)• Bygget på standardmaskiner du får kjøpt i butikken• 2 maskiner feiler hver dag.. Likevel ingen systemfeil

siden Feb. 2000 (1 time)

http://www.zdnet.com.au/insight/software/soa/The-magic-that-makes-Google-tick/0,139023769,139168647,00.htm

Page 23: Videregående  databasetemaer

Applikasjonsutvikling mot databaser

Page 24: Videregående  databasetemaer

Applikasjonsutvikling

• Utnytt mest mulig av databasens tjenester• Autentisering• Rettigheter• Backup• Osv.

• I tilegg fikser DB for oss:• Samtidighet• Dataprosessering• Osv.

Page 25: Videregående  databasetemaer

Kobling database<->applikasjon

• 4 metoder• Direkte• Modul• Flerlagsmodell• Instance-håndterer

• Målet er å være mest mulig DB uavhengig• Her sliter DBMSene med å følge SQL-

standard..

Page 26: Videregående  databasetemaer

Direkte – metode 1

Vi skriver kode i applikasjon beregnet på vårt bruk av DBMS

Page 27: Videregående  databasetemaer

Modul – metode 2

DBMS-Spesifikt

Vi benytter en ferdig spesifikk DBMS modul i vår kode

Page 28: Videregående  databasetemaer

Flerlagsmodell – metode 3

GenerellDB

DBMS-Spesifikt

Vi benytter en generell DBMS modul i vår kode som selv kobler seg til en DBMS-spesifikk modul

Page 29: Videregående  databasetemaer

Flerlagsmodell med instance-håndterer –metode 4

GenereltDB

DBMS-Spesifikt

Instance-håndterer

Vi benytter en generell modul i vår applikasjon som kobler seg til en tjenestetilbyder

Page 30: Videregående  databasetemaer

Sikkerhet

• Vær ytterst forsiktig med å ha brukerinfo i kildekoden• Andre autentiseringskilder• Innlogging• Sertifikater• Tjenesteserver

• La mest mulig av prosesseringen foregå i DBMS.• Innebygde funksjoner• SQL-prosessering (hent ut minst mulig data…)

• Utfør aldri DB-administrative oppgaver direkte fra appl.• Skjul mest mulig spor av db i feilmeldinger og resultater• Egen bruker med rettigheter!

Page 31: Videregående  databasetemaer

SQL-Injection

• Dersom data fra en tekstboks benyttes direkte i en SQL-setning, kan vi skrive "spesielle" data i tekstboksen…

SELECT kolonne FROM tabell WHERE kolonne2=' ';

Turid

'; DELETE FROM tabell WHERE kolonne2 != '

Page 32: Videregående  databasetemaer

SQL-Injection

• Beste triks er å escape spesielle tegn. Da spesielt: '• Helst alle disse: \x00, \n, \r, \, ', " og \x1a

SELECT * FROM user WHERE username=’ ' AND password=' ';

test

' OR ''='

brukernavn

brukernavn’;--

Page 33: Videregående  databasetemaer

Utnytt serveren

• La serveren gjøre jobben• SQL-spørringer => kompliserte• men: ikke overbelast serveren...

• Spør en gang• Hent mest mulig data av gangen• Hent kun de dataene man trenger

• Unngå unødvendige DB-kall• Løkker som går lenger enn nødvendig• Unødvendige funksjoner/tester som kjøres• Ting man alt kunne funnet ut i fra logikk• Feilsjekk før data sendes til DB• Osv.

Page 34: Videregående  databasetemaer

Triggere og Prosedyrer - Definisjoner• Triggere

• Programkode som automatisk blir kjør ved visse hendelser i databasen

• Eks. Sende velkomstmail hver gang en ny kunde blir lagt inn.

• Prosedyrer• Programkode (egenlagde funksjoner) som

vi selv kan eksekvere i databasen• Sjekke databasen for uønskede kunder

Page 35: Videregående  databasetemaer

Eksempler på triggere

• Sjekk av inndata• Gyldige verdier

• Sjekke oppdateringer av data• F.eks at man ikke kan bli ansatt om man er under 16 år

• Sjekker (/flere hendelser) før sletting• Øker ytelse

• F.eks: vedlikeholde en sum-verdi

• Mer kompliserte integritetssjekker• Alarmer…

• Sende mail om verdi blir høyere enn..

Page 36: Videregående  databasetemaer

Funksjoner og prosedyrer

• Noen DBMS skiller disse, andre ikke…• Viktigste Forskjellen:

• Prosedyrer kjøres vanligvis med Call/Exec og utfører en jobb ( SQL, print, mail, osv…)

• Kan tenkes på som metoder med void i Java

• Funksjoner returnerer en verdi, og brukes vanligvis i en SELECT setning

• Kan tenkes på som metoder med returnverdi i Java

Page 37: Videregående  databasetemaer

Eksempel på funksjoner og prosedyrer• Matematiske formler

• F.eks Areal• "Datasjekker"

• Fjerne alle gamle kunder• Vanlige operasjoner

• Send mail til ansatte med bursdag• "Smartere" innsetting

• En prosedyre som legger data i mange tabeller• Automatisere DBMS-administrative oppgaver

• Alt er jo SQL…• F.eks opprette brukere

Page 38: Videregående  databasetemaer

Funksjonseksempel - MySQL

• CREATE FUNCTION arealRektangel (s1 float, s2 float) RETURNS float RETURN s1*s2;

• SELECT arealRektangel(lengde, bredde) FROM Rektangel;

Page 39: Videregående  databasetemaer

XML-databaser

Page 40: Videregående  databasetemaer

Hva er XML?• eXtensible Markup Language• En standard måte å strukturere ulike typer data

• Alternativ til CSV og andre hjemmesnekra ting...

• Åpent format• Himla enkelt:

• Tagger/Noder• Attributter

• Mest kjente XML-versjon er (antageligvis) XHTML• Stadig mer data blir tilgjengelig på ulike XML-formater

Page 41: Videregående  databasetemaer

Eksempeldokument 1

<bilregister><bil regnr=”AA-23232”>

<merke>Toyota</merke><modell>Avensis</modell>

</bil><bil regnr=”DE-32312”>

<merke>Toyota</merke><modell>Rav4</modell>

</bil>

</bilregister>

Page 42: Videregående  databasetemaer

Fordeler med XML

• Utrolig enkelt• Maskiner jobber lett med XML• Ferdige verktøy, takket være felles struktur

• DOM• XSL• XPATH• XQUERY• XUpdate• XLink• Osv..

• Kan editeres i alt fra Notepad til rene XML verktøy• Kan modellere mere strukturerte ting enn flatfiler/dbtabeller

Page 43: Videregående  databasetemaer

XML og Databaser• Flere nivåer:

• Relasjonsdatabaser som kan prod. XML• Relasjonsdatabaser som lagrer som XML (Storage Engine)• Relasjonsdatabaser som inneholder XML• XML-dokumenter som database• Native XML databaser

• To store forskjeller (som kompliserer MYE):• Hierarkisk struktur• To måter å angi data (attributt og tagg)

• Er XML en DB?• DB: JA(Her vil noen/mange også si nei...)• DBMS: (Tja)Nei..., men det finnes XML-DBMS'er

• Finnes verktøy som får XML til å opptre som en DBMS

Page 44: Videregående  databasetemaer

Mellomvare

Tom Heine tegner og forklarer på tavla…

Page 45: Videregående  databasetemaer

SQL3 og extensions

Page 46: Videregående  databasetemaer

Nye ting fra SQL2

• Merk mange SQL2-DBMSer har noe dette, men det ble definert i SQL3…

• Regulærutrykk matching• Rekursive spørringer• Triggere• Støtte for kontrollflyt statements• Brukerdefinerte datatyper• Noe objektorienterte ting• med mer.

Page 47: Videregående  databasetemaer

Hvorfor har SQL3 ikke tatt av?

• Fortsatt "nytt"• "det vi har funker jo"

• Det meste kan også gjøres i SQL2, men på en mer "tungvindt måte"

• Mellomvare• Få DBMS'er støtter det…

• mye DB spesifikt• Var det et behov?

Page 48: Videregående  databasetemaer

Extensions

• Hva er extensions (plugin/datablader)?• Utvidelser av databasens funksjonalitet

• Kart• Multimedia

• Hvorfor extensions• Funksjonalitet som "må" ligge i db pga:

• Overføringsstid…• Sikkerhet (kanskje bare svaret brukeren har rettigheter

på)• DB er ram på prosessering• Kan selge ting som "pakke"• Alle de andre fordelene med å ha foretningslogikken i DB

Page 49: Videregående  databasetemaer

Datavarehus

Page 50: Videregående  databasetemaer

Datavarehus• Datavarehus

• Hva er et datavarehus?• Tar vare på data fra mange databaser• Ofte i aggregerte former• Historikk

• Hva benyttes det til• Ikke daglig drift• Finne mønstre

• Datamining• Finne svar på "leder spørsmål"

• Hva er spesielt• Hvordan data lagres

• Denormalisering• Ofte f.eks en "Kube" med tid som akse• Ofte distribuert (enorme datamengder)

• Vi vet ikke hva databasen skal benyttes til…

Page 51: Videregående  databasetemaer

Datamining og Deduktive databaser

Page 52: Videregående  databasetemaer

Hva er datamining?

• "sorting through large amounts of data and picking out relevant information "

• "man leter etter noe man ikke helt vet hva er"• "data mining identifies trends within data that go beyond simple analysis" • Dårlig avgrenset betegnelse

• AI• Analyse• Regresjon

• Er IKKE• Enkel generering av rapporter/søylediagram (excel typ..)• Alt som baserer seg på "spørringer" (makroer)• såkalt data analysis (analyserer etter gitte regler)

• Altså:• Alt som krever at metodene har en "forståelse" av dataene• Systemet foretar selv en analyse (ofte med valg gjort av brukeren)• Skal gi svar som ikke er helt opplagte ved å "titte" på dataene• JFR: forskning basert på data vs. ”rutine”-arbeid

Page 53: Videregående  databasetemaer

Hvorfor trengs data mining –teknikker?

• Stadig mer data• Lett å lagre• Billig å lagre• "Alt" logges, just-in-case• Teknologier som datavarehus

• Mer avanserte problemer som skal løses• Strategien fremover• Modeller for AI• Finjusterte modeller med mange attributter

• Mer datakraft tilgjengelig…

Page 54: Videregående  databasetemaer

To typer data mining• Knowledge discovery

• Vi finner informasjon og sammenhenger som vi kan bruke til "noe" siden en gang

• Oftest i form av ting vi skal skrive som "setninger"

• Typisk: De dagene det var fint vær selger vi mye is

• Prediction• Modeller der vi kan sette inn verdier og få et konkret svar ut

• Oftest i form av ting vi skal skrive som "formler"

• 2 undergrupper:• Readable: Formler, beslutningstrær osv.• Opaque : Nevrale nett osv.

Page 55: Videregående  databasetemaer

Data mining og "privacy"

• Dataene i seg selv forteller ikke så mye, men det gjør sammenhengen• Kundekort <-> Sleip reklame• Bompenger <-> Reisemønster• Forskning på sykdom <-> Forsikring• osv.

Page 56: Videregående  databasetemaer

Bruk av data mining

• Finne sammenhenger i salgsdata• "Om vi kjører en reklamekampanje på produkt A, selger vi XX% mer

av produkt B"• Finne handelsmønstre hos en kunde

• " XX% av de som kjøpte produkt A, kjøpte også produkt B"• Værmeldingsmodeller

• "Dersom X, Y og Z, så blir det P grader varmt"• USA – 11. september

• USA identifiserte bakmennene som terrorister mer enn år før hendelsen.

• Produksjonsbedrifter• "Dersom ett produkt gir feil i kontrollen, bør vi også sjekke de XX

foregående produktene"• "XX% av de produktene som det reklameres på, vil få en ny feil innen

Y måneder"• Osv..

Page 57: Videregående  databasetemaer

Deduktive databaser

• Databasesytemer som i tilegg til å holde på data, også selv kan gjøre "beslutninger" basert på regler / "facts"

• Bygger på logisk programmering (f.eks Prolog)• Gir oss svar på

• Om verdier passer til fact/regel• Hvilke verdier som passer til fact/regel

• Regler og facts kan også kombineres for å finne svar på mer avanserte ting.

• Graden av AI varierer…

Page 58: Videregående  databasetemaer

Prolog-eksempel - Facts

mann(tom).

mann(per).

kvinne(trine).

kvinne(berit).

forelder(trine,tom).

forelder(trine,berit).

forelder(per,tom).

forelder(per,berit).

Page 59: Videregående  databasetemaer

Prolog-eksempel - Rules

barn(X,Y) :- forelder(Y,X).

sonn(X,Y) :- barn(X,Y), mann(X).

datter(X,Y) :- barn(X,Y), kvinne(X).

• sosken(X,Y) :- forelder(Z,X), forelder(Z,Y), X \= Y.

• soster(X,Y) :- sosken(X,Y), kvinne(X).• bror(X,Y) :- sosken(X,Y), mann(X).

Page 60: Videregående  databasetemaer

Eksempel på spørringer

mann(per).

mann(trine).

mann(truls).

forelder(per,tom).

forelder(per,trine).

Page 61: Videregående  databasetemaer

Eksempler på mer "logiske" spørringer

• forelder(per,X).• barn(X,per),bror(X,berit).• forelder(X,Y).

Page 62: Videregående  databasetemaer

Kurset Databaseadministrasjon og systemer

Page 63: Videregående  databasetemaer

Kurset

• Praktiske eksempler og mer grundig teori på det jeg har vist i dag

• 10 stp• 4 prosjektoppgaver(gruppe) og 3 timers

skriftlig eksamen(individuell)• IKKE "Databaser 2"• http://www.ia.hiof.no/das