630 likes | 813 Views
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
E N D
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 • Kurset "Databaseadministrasjon og –systemer" -> DAS
Databaseadministrasjon • Flere jobber: • Opprette DB • Opprette brukere • Sette rettigheter • Sette indekser • Osv. • Inneholder også databasedrifting • Backup • Logging • Osv.
Brukeradministrasjon • 2 aspekter! • Hvem skal få koble til, hvordan og hvor fra? • Autentisering • Hva skal de få gjøre? • Privilegier
Rettigheter • En bruker identifieres med brukernavn og host • F.eks tomhnatt@localhost, tomhnatt@58.36.132.145, 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
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
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
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!
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…
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
Sikkerhet i mange forbindelser • Lagring av data • Backup • Innlogging • Rettigheter • Logging • DBMS • Nettet • Applikasjoner (Brukerprogrammer) • Fysiske omgivelser • Svakeste leddet…
EN DBMS er ikke én ting • Består av mange komponenter • Kan ha tilleggsmoduler • Mange elementer går igjen hos ulike DBMSer
Forenklet oppbygning • Sjekker at spørring er OK • Sjekker at bruker har rettigheter • Sjekker at det er trygt å utføre spørringen • Gjør spørringen raskere/bedre • Setter inn delene av spørringen i en sammenheng • Når kan vi få lov til å utføre spørringen? Når passer det best å kjøre ? • Hvordan skal vi kunne ”undoe” spørringen • Hva skal skrives til fil? • Skrive til fil • Query processor • Authorization control • Integrity checker • Query optimizer • Transaction manager • Scheduler • Recovery manager • Buffer manager • File manager
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
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
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
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
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
Applikasjonsutvikling • Utnytt mest mulig av databasens tjenester • Autentisering • Rettigheter • Backup • Osv. • I tilegg fikser DB for oss: • Samtidighet • Dataprosessering • Osv.
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..
Direkte – metode 1 Vi skriver kode i applikasjon beregnet på vårt bruk av DBMS
Modul – metode 2 DBMS-Spesifikt Vi benytter en ferdig spesifikk DBMS modul i vår kode
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
Flerlagsmodell med instance-håndterer –metode 4 GenereltDB Vi benytter en generell modul i vår applikasjon som kobler seg til en tjenestetilbyder Instance-håndterer DBMS-Spesifikt
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!
SQL-Injection • Dersom data fra en tekstboks benyttes direkte i en SQL-setning, kan vi skrive "spesielle" data i tekstboksen… Turid SELECT kolonne FROM tabell WHERE kolonne2=' '; '; DELETE FROM tabell WHERE kolonne2 != '
SQL-Injection • Beste triks er å escape spesielle tegn. Da spesielt: ' • Helst alle disse: \x00, \n, \r, \, ', " og \x1a test brukernavn SELECT * FROM user WHERE username=’ ' AND password=' '; ' OR ''=' brukernavn’;--
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.
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
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..
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
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
Funksjonseksempel - MySQL • CREATE FUNCTION arealRektangel (s1 float, s2 float) RETURNS floatRETURN s1*s2; • SELECT arealRektangel(lengde, bredde) FROM Rektangel;
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
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>
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
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
Mellomvare Tom Heine tegner og forklarer på tavla…
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.
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?
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
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…