Applikasjonsutvikling med databaser

Like dokumenter
Tilkobling og Triggere

Prosedyrer. Lars Vidar Magnusson. October 26, Lars Vidar Magnusson () Forelesning i DAS October 26, / 19

1. SQL datadefinisjon og manipulering

Databaser kort intro. Tom Heine Nätt

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

Datamodellering og databaser SQL, del 2

ORDBMS og OODBMS i praksis

Sikkerhet og tilgangskontroll i RDBMS-er

Hva er Derby og Java DB? Denne forelesningen. Java Database Connectivity (JDBC) Hva er Derby og Java DB?

Java Database Connectivity (JDBC) Norvald H. Ryeng

Videregående databasetemaer. Tom Heine Nätt

Utvikling av dynamiske nettsteder med PHP og databaser, høsten 2006

Metaspråket for å beskrive grammatikk

Arne Maus, Ifi. delvis lån av gamle foiler

Ulike DBMSer. Mest kjente: Oracle PostGreSQL* MySQL* SQLServer* DB2 SQLite Access (DBMS og utv. verktøy i ett) *Skal benyttes i kurset.

MySQL. Historikk. Nedlasting og installasjon

Satsvise, interaktive, sanntids/innbakte systemer. Arne Maus, Ifi. Oppdeling av både program og data på flere maskiner

SQL 3: Opprette tabeller, datainnsetting og utsnitt

Bruke SQL fra Python. Med Psycopg2

SQL: Datatyper m.m. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Datatyper m.m. V18 1 / 12

Repetisjon: Normalformer og SQL

Institutt for datateknikk. Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

Utvikling fra kjernen og ut

Eksamen i Internetteknologi Fagkode: IVA1379

Å bruke Java API-et til å sortere tabeller/arraylister der elementene er (referanser til) objekter

Publisering av statiske og dynamiske websider til klasserom.net fra Dreamweaver og MySQL

Integritetsregler i SQL. Primærnøkler

1. Innføring i bruk av MySQL Query Browser

MySQL-database, php. Innhold. 8 MySQL-database, php. 8.1 Databasen MySQL

Oppgave 1 (Opprett en database og en tabell)

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

Introduksjon til fagfeltet

IN2090 Databaser og datamodellering. 08 Typer og skranker

Agenda. Data og grenser Kontekster XSS XSS og kompliserende kontekster Injection attacks Beskyttelse OWASP

Database security. Kapittel 14 Building Secure Software. Inf329, Høst 2005 Isabel Maldonado

Transaksjoner og flerbrukerproblematikk. Transaksjoner

Integritetsregler i SQL

EKSAMEN 6102 / 6102N DATABASER

INF1300 Introduksjon til databaser

Videregående programmering 6

Databearbeiding direkte i memory på LASR server nye muligheter? Trond Holmen, SAS Institute

Lars Vidar Magnusson. October 11, Lars Vidar Magnusson () Forelesning i Operativsystemer October 11, / 28

EKSAMEN DATABASER

Eksamen i IBE102 Webutvikling Våren 2017.

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning mandag 14.

IN2090 Databaser og datamodellering. 08 Typer og skranker

Databasers typesystem. IN2090 Databaser og datamodellering. 08 Typer og skranker. SQL-standarden vs. RDBMSer. Hvilke datatyper har vi

Utvikling fra kjernen og ut

INF1300 SQL Structured Query Language del 1. Stoff som blir/ble forelest i oktober 2013

SQL: Systemaspekter. Evgenij Thorstensen V18. Evgenij Thorstensen SQL: Systemaspekter V18 1 / 21

Fag TDT4145 Datamodellering og databasesystemer Øving 3: Relasjonsalgebra og SQL

Forelesning 1 DAS - Introduksjon / Systemer / Brukeradmin - (Tom Heine Nätt /) Edgar Boström / Lars V. Magnusson

>>12 Arbeide med MySQL

INF1300 Introduksjon til databaser: SQL Structured Query Language. En første introduksjon Lysark til forelesning onsdag 22.

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Integritetsregler i SQL

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

Prosjektoppgave: Bildedatabase. TDT4145 Datamodellering og Databasesystemer. Våren 2007

INF1300 Introduksjon til databaser

Oversikt. Introduksjon Kildekode Kompilering Hello world Hello world med argumenter. 1 C programmering. 2 Funksjoner. 3 Datatyper. 4 Pekere og arrays

Generelt om operativsystemer

Forelesning 3 DAS - Systemtabeller, indekser, distribuerte systemer m.m. - Tom Heine Nätt/Edgar Bostrøm

som blanker skjermen (clear screen). Du får en oversikt over alle kommandoene ved å skrive,

DBMS Database Management System (repetisjon) Programmeringsgrensesnitt. Serialiserbarhet

Hurtigstartveiledning

I denne leksjonen skal se på hvordan vi bruker innebygde og brukerdefinerte funksjoner.

Sensorveiledning for IN2090 og INF desember :30 18:30 (4 timer)

Høgskolen i Telemark EKSAMEN 6102 DATABASER Tid: Hjelpemidler: Vedlegg: Eksempeldata til oppgave 1

Typer. 1 Type: boolean. 2 Verdimengde: {true, false} 3 Operatorer: NOT, AND, OR... 1/19. Forelesning Forelesning

Phone Assistant. Arne-Jørgen Auberg

PostGIS som navet i dataforvaltningen ved Skog og landskap

IN2090 Introduksjon til databaser

Romlig datamanipulering

Eksamen i Internetteknologi Fagkode: ITE1526

Obligatorisk oppgave 3 i Databaseadministrasjon.

1. Introduksjon til Oracle Express Edition

PowerOffice Server Service

svarforslag SLUTTEKSAMEN IBE211 Databaser, våren 2015

Brukerveiledning for ArkN4

Delinnlevering 2. INF1050, våren Inge Svale Hauger Handagard (ishandag) Tor Hildrum (thildru)

Oppgave #1 Tablespacer, Tabeller, Indexer, og Brukere

Controller Brukerstøttedatabase Ottar Holstad/Cantor 09.

INF1300 Introduksjon til databaser: SQL Structured Query Language

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

Kapittel 11. Databasesikkerhet

Fag TDT4145 Datamodellering og databasesystemer Løsningsforslag til øving 3: Algebra og SQL

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

Databaser: Relasjonsmodellen, del I

HØGSKOLEN I SØR-TRØNDELAG

Oppgaver Oppgave a: Sett opp mulige relasjoner

Miniverden og ER- modell

Relasjoner terminologi

Eksamen i Internetteknologi Fagkode: ITE1526

Transkript:

Applikasjonsutvikling med databaser Lars Vidar Magnusson October 12, 2011 Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 1 / 24

Applikasjonsutvikling med databaser Databaser tilbyr funksjonalitet i tillegg til datalagring som kan komme til nytte når man utvikler applikasjoner. Autentisering Rettigheter Backup Samtidighet (Concurrency) Dataprosessering... Bør utnyttes mest mulig. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 2 / 24

Kobling fra applikasjon til database Det finnes 4 strategier for å koble en applikasjon til en database Direkte Modul Flerlagsmodell Instance-håndterer Målet er å være mest mulig uavhenging av underliggende database. De ulike DBMSene sliter med å følge SQL standard... Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 3 / 24

Direkte kobling I en direkte kobling så snakker applikasjonen direkte med databasen og derfor sterkt knyttet til den aktuelle DBMS. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 4 / 24

Fordeler og ulemper med direkte kobling Fordeler: Ingen Ulemper: Kan ikke bytte database uten å endre applikasjon Kan være vanskelig å bytte databaseversjon Vanskelig å skrive optimal kode Større fare for feil Ingen mulighet for gjenbruk Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 5 / 24

Kobling med Modul Som en ekstra abstraksjon kan vi i stedet for å snakke direkte med databasen snakke med en databasespesifik modul. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 6 / 24

Fordeler og ulemper ved kobling med modul Fordeler: Vi slipper å skrive databasekoden selv Mindre sansynlig å gjøre feil Enklere enn å skrive koden selv. Ulemper: Begrenset til en database Begrenset gjenbruk Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 7 / 24

Kobling med Flerlagsmodell En tredje abstraksjon kan oppnås ved at applikasjonen snakker med databasen via to lag. Den databasespesifike modulen erstattes med en generell database modul. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 8 / 24

Fordeler og ulemper ved kobling med flerlagsmodellen Fordeler: Ulemper: Vi slipper å skrive databasekoden selv Mindre sansynlig å gjøre feil Enklere enn å skrive koden selv. Ikke bundet opp mot en spesiell database Ingen store Databasespesifik connection string i koden. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 9 / 24

Kobling med Instance-håndterer En siste abstraksjon kan legges til ved at applikasjonen snakker med en tjenestetilbyder via en generell database modul. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 10 / 24

Fordeler og ulemper ved kobling med flerlagsmodellen Fordeler: Vi slipper å skrive databasekoden selv Mindre sansynlig å gjøre feil Enklere enn å skrive koden selv. Ikke bundet opp mot en spesiell database Slipper også databasespesifik connection string Ulemper: Økt grad av kompleksitet. Mister kontrollen. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 11 / 24

JDBC Metode 3: Databasekobling med flerlagsmodellen Standard funksjonalitet Driverspesifik connection string Driver i jar-format Metode 4: Databasekobling med instance-håndterer JDBC-ODBC Bridge driver Krever ODBC-driver installert Standard oppkobling Ofte tregere enn flerlagsmodellen Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 12 / 24

.NET Metode 3: Databasekobling med flerlagsmodellen ADO.NET Jobber med connection strings Innebygde drivere for MSSQL og Oracle Metode 4: Databasekobling med instance-håndterer Krever ODBC-driver installert Standard oppkobling (Tregere enn andre modeller?) Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 13 / 24

PHP Metode 3: Modulbasert kobling mot database Egne moduler for alle databaser Følger ingen felles designprinsipper mysql query pg exec Moduler må være installert Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 14 / 24

ANSI-SPARC arkitekturen ANSI-SPARC står for American National Standards Institute, Standards Planning And Requirements Committee og er en standard på hvordan en applikasjon bør snakke med en database. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 15 / 24

Beskrivelse av ANSI-SPARC ANSI-SPARC er omfattende, men kan gi gode resultater selv med en litt forenklet utgave. Jobber mot views istedenfor tabeller Kan forenkles med tre lag 1 View for hver bruker 2 Tabeller 3 Fysisk lagring Eller bare views og tabeller Poenget er å gjøre det mulig å endre struktur på tabeller uten at man må endre applikasjonen (brukeren). Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 16 / 24

Fordeler og ulemper med ANSI-SPARC Fordeler: Enkelt å justere på views uten å endre tabell Man kan endre tabell uten at brukeren merker det Splitte tabellen horisontalt/vertikalt Legge til eller fjerne kolonner Andre endringer på tabellen Ulemper: Mer å administrere Høyere grad av kompleksitet (treghet?) Noen views er så komplekse at man ikke kan oppdatere data. Det er både vesentlige fordeler og ulemper med standarden, så en aveining må gjøres i hvert enkelt tilfelle. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 17 / 24

Transaksjoner Det kan være fordelaktig å gruppere SQL kommandoer sammen til en transaksjon. Commit og Rollback Unngå systemfeil og feil i data Gjøre det enklere å håndtere flere brukere samtidig Gjør dette ved hjelp av en transaksjonslogg som ivaretar status på alle transaksjoner og gamle/nye verdier Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 18 / 24

Sikkerhet Det er vanskelig å lage sikre applikasjoner. Her er noen tips relatert til applikasjonsutvikling med databaser. Vær ytterst forsiktig med å ha brukerinfo i kildekoden Innlogging, sertifikater, tjenesteserver... Kan tjene mye på å la prosessering foregåri DBMS Pass på at serverscripts ikke blir tilgjengelig i klartekst Skjul databasespesifike meldinger og felt fra brukeren Ikke utfør administrative oppgaver i databasen direkte fra applikasjonen Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 19 / 24

SQL injection SQL injection er en potensiell sikkerhetsrisiko så lenge innholdet fra tekstfelt benyttes direkte i en SQL spørring. Kan erstatte SELECT * FROM user WHERE username= brukernavn AND password= test SELECT * FROM user WHERE username= brukernavn AND password= OR = Man kan ofte beskytte seg med riktige rettigheter Beste triks er å escape spesielle tegn i innholdet i tekstfeltet Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 20 / 24

Ytelse Det er en balansegang hvor man bør legge prosesseringen i en applikasjon med database tilkobling DBMSene er gode på databehandling Kan bli overbelastet Siden overbelasting er sansynlig kan man prøve å minimere problemet Spør en gang Hent mest mulig data om gangen Hent bare data som trengs Optimer spørringene Små forbedringer kan gi stort utbytte. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 21 / 24

Constraints Det kan være lett å falle for fristelsen å hoppe over constraints når man designer/lager databaser, men det gi både bedre ytelse og sikkerhet hvis dette ikke bare overlates til applikasjonen. UNIQUE PRIMARY KEY FOREIGN KEY CHECK Constraints kan også bli implementert med mer avanserte mekanismer Triggere (ON DELETE, ON UPDATE,...) Prosedyrer Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 22 / 24

Typer constraints Man kan dele inn constraints i grupper Fysiske constraints satt på datatypen e.g. INT, REAL, VARCHAR Logiske constraints ut i fra hva som lagres e.g. ikke negative aldre Organisatoriske constraints blir satt ut fra forretningsmessige regler e.g. alder må være mellom 40 og 45. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 23 / 24

SQL i applikasjoner Når man skal utvikle applikasjoner med database funksjonalitet er det viktig å skrive SQL-setningene slik at de skiller seg ut og at de ikke tar opp unødvendig mye minne Bruk store bokstaver på SQL-nøkkelord Ikke sett sammen konstante strenger til en sammensatt spørring. Bruk heller en metode som gjøre at man slipper allokere et vilkårlig antall småstrenger. Lars Vidar Magnusson () Forelesning i DAS 10.10.2011 October 12, 2011 24 / 24