• Non ci sono risultati.

DBMS – architettura client/server

N/A
N/A
Protected

Academic year: 2021

Condividi "DBMS – architettura client/server"

Copied!
25
0
0

Testo completo

(1)

DBMS – architettura client/server

query

risultato

DBMS

utente

(2)

Molti utenti!

DBMS biblioteca

bibliotecario

bibliotecario bibliotecario

bibliotecario

(3)

Parallelismo virtuale

I vari utenti non si accorgono gli uni degli altri

Ciascuno si interfaccia con il DBMS come se fosse il solo utente del sistema

Il DBMS gestisce le varie interazioni eseguendo un parallelismo virtuale, ovvero eseguendo alcune istruzioni

relative all’interazione con il primo utente, alcune di interazione con il secondo e così via

Le elaborazioni sono eseguite dal processore In molti sistemi il processore è unico!

(4)

Utenti e dati

Titolo Autore In_prestito

… … … Kitchen B.Yoshimoto no

… … …

Bibliotecario 1 Bibliotecario 2

In prestito?

Lo prendo in prestito Inizia assegnazione

libro a utente È in prestito?

Lo prendo in prestito Inizia assegnazione

libro a utente INCONSISTENZA!!!!

(5)

Transazioni

Transazione = unità elementare di lavoro

La sua esecuzione termina o con un commit o con un rollback

commit work rollback work

Begin transaction

<<codice>>

End transaction

Le modifiche vengono rese effettive sul DB

Le modifiche vengono disfatte

O tutto O niente!!

Questo codice viene eseguito come se fosse un’istruzione sola

(6)

Proprietà acide

A atomicity C consistency I isolation

D durability

Proprietà della transazione Unità indivisibile

di esecuzione

l’esecuzione deve soddisfare i vincoli di integrità

l’esecuzione è indipendente

dalla contemporanea esecuzione di altre transazioni

L’effetto di una transazione

conclusa non deve andare perso

(7)

Esempio

Begin transaction

<<cerca libro>>

if (trovato and in_prestito=no)

<<assegna sì a in_prestito>>

commit

else <<segnala problema>>

rollback End transaction

Utente 1: arriva prima, inizia la transazione

Utente 2: arriva dopo, attende la fine della transazione dell’utente 1

(8)

DB e Web

DBMS Web

Browser

Esempi – poste, banche, negozi virtuali, motori di ricerca, banche dati aziendali, riviste on-line …

(9)

Punti comuni

? l’utente dichiara la propria identità (login e password)

? l’utente esegue delle operazioni:

? estrazione di informazioni (es. contenuto del conto corrente)

? modifica di dati (es. emissione di un bonifico)

? l’utente lavora in // con molti altri utenti

? i dati dell’utente sono riservati e devono essere persistenti

? l’interfaccia è costituita da un browser web

? i dati sono conservati inun DB

(10)

Caso particolare

Motori di Ricerca Altavista

Yahoo Google Ask.com Lycos Virgilio

Gestiscono informazioni sui siti web Sono accessibili via web

DB Ricerca di siti

Aggiornamento del DB

(11)

Ricerca di siti

Query

Restituiscimi le pagine che contengono riferimenti a film di fantascienza

Non importa a quale nazione appartenga il sito

Posso indicare criteri

ancora più specifici

(12)

Aggiornamento del DB

Deep search Categorie

Directory standard

Uso di spider che seguono i Link, elaborazione automatica

Manca un vero motore di ricerca siti suddivisi per categorie

I dati sono estratti ed

inseriti nel DB da esseri umani

(13)

InterBase 6.0

DBMS distribuito da Borland, utilizzato fra gli altri da Boeing, Hewlett-packard, AT&T, Compaq, Harvard

University, NASA, NEC, UK Treasury, …

http://www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_download#INTERCLIENT

Scaricabile presso

(14)

Pagina di download

Scaricare questo file

(15)

Interfaccia: IBConsole

L’idea base è che un utente può

agganciarsi a dei server, ognuno dei quali può gestire uno o più DB.

I server, in generale, sono accessibili via internet

Ogni utente ha assegnato un login e una password. Gli utenti vengono

accreditati ad accedere a un server da un utente speciale: l’amministratore

(16)

Creazione di un DB

Path + nome file Nome del DB

Lasciare i valori di default

(17)

ISQL

Comandi SQL

Risultato delle query

(18)

Query composte

select prodotti.nome, prodotti.n_rep from fornitori join prodotti

on (fornitori.p_iva=prodotti.fornitore) where prodotti.n_rep =

any (

select LavoraIn.n_rep

from LavoraIn join persone

on (LavoraIn.persona=persone.codice) where persone.nome = 'Luigi Neri‘

)

any ( -query- ) all ( -query- )

(19)

Script SQL

Non è facile scrivere query SQL

Spesso dato un DB, esiste un certo numero di interrogazioni standard che gli utenti hanno

interesse ad effettuare

È possibile scrivere dei programmi SQL in file, formato solo testo, e richiamarne l’esecuzione

quando c’è bisogno

Tali programmi si chiamano script SQL

(20)

Funzioni Aggregate e Group By

select max(tesserino)

from bagnanti Mostra il codice dell’ultimo iscritto select nome, cognome

from bagnanti

where tesserino = any(select max(tesserino) from bagnanti);

Mostra nome e cognome dell’ultimo iscritto

select qualifica, count(*) from istruttori

group by qualifica

Per ogni qualifica, dimmi quanti istruttori hanno quella qualifica

(21)

Group by

tabella

attributo

val1

val2

val3

ad ogni gruppo

viene applicata una stessa

funzione

(22)

Esempio

Per ogni autore conta quante opere ha scritto select nome, cognome, count(*)

from libri

group by nome, cognome

Andrea Rossi alberi Andrea Verdi poesie Andrea Verdi calunnia Rosa Bianchi poesie Elena Bianchi fiori

Andrea Rossi 1 Andrea Verdi 2 Rosa Bianchi 1 Elena Bianchi 1

(23)

Domini

Finora abbiamo visto l’uso di domini semplice, varchar(n) integer e float sono degli esempi

Il progettista può definire domini ad hoc, come ad esempio il dominio “giorni della settimana” o il dominio “numero di

matricola” tramite il comando create domain

(24)

Definizione di domini

create domain giorniSettimana as varchar(10)

check (value in (‘lunedi’, ‘martedi’, ‘mercoledi’, ‘giovedi’,

‘venerdi’, ‘sabato’, ‘domenica’)) create domain nomeDominio

as Tipo

check condizione

(25)

Esempio

create domain giorniSettimana as varchar(10)

check (value in (‘lunedi’, ‘martedi’, ‘mercoledi’, ‘giovedi’,

‘venerdi’, ‘sabato’, ‘domenica’)) create domain orario

as integer

check (value > 9 and value < 20) create table turni (

giorno giorniSettimana, ora orario,

… )

Riferimenti

Documenti correlati

Cliente (Client): quando l’applicazione utilizza dei servizi messi a disposizione da altre applicazioni Servente (Server): quando l’applicazione fornisce servizi usati da

Vi è una connessione permanente tra client e server nel momento in cui si accede al server, e fino a che il cliente non fa cadere esplicitamente la connessione.. E-MAIL

select avg(somma) as media from (SELECT sum(prezzo) as somma FROM `prodotti new` group by codforn) as somme;. media

[r]

1259 (pubblicato nella Gazzetta Ufficiale, IV serie speciale – Concorsi, n. 90 del 24 novembre 2017); C ) del verbale del Nucleo dei Carabinieri, presso il Ministero

z Il client è un qualsiasi programma che invia una richiesta e aspetta una risposta; tipicamente termina dopo avere usato un server un numero finito di volte. z Il server aspetta

n “Thin” client containing only the Presentation Logic subsystem (session, text input, dialog, and display management services). n

• I dati in memoria secondaria possono essere utilizzati solo se prima trasferiti in memoria principale... Memoria principale e