LUGTrieste // · Il gestore metta a disposizione transazioni e recovery automatico ... uno script...
Transcript of LUGTrieste // · Il gestore metta a disposizione transazioni e recovery automatico ... uno script...
2
L E B A S I D I D A T I
● Database
Una collezione di dati, che contengono le informazioni di
interesse per il nostro sistema informativo
● Gestore del Database (DBMS Data Base Management System)
Si occupa della corretta gestione dei nostri dei dati (database)
✔ assicura integrità e consistenza
✔ sicurezza
✔ affidabilità e disponibilità
✔ efficienza e gestione errori
✔ condivisione
3
I L M O D E L L O R E L A Z I O N A L E
I dati sono memorizzati in un modello relazionale[1] ideato da Codd[2] e riassunto nelle sue 12 regole.
[1] http://www.acm.org/classics/nov95/toc.html[2] http://en.wikipedia.org/wiki/Edgar_F._Codd
Matricola Nome Cognome1 Pippo Rossi2 Pluto Verdi
Studente
Si opera su tabelle
Relazione:
● ogni riga (record) è diversa dalle altre
● i dati possono essere associati
4
P E R C H E S C E G L I E R E M y S Q L ?
Velocità Capacità Facilità d'uso Supporto del linguaggio SQL Connettività e sicurezza Portabilità Dimensioni ridotte Costi (licenza GPL e commerciale) Open Source Disponibile per oltre 20 piattaforme
Utilizzato da: NASA, Yahoo, Google Ad, Slashdot, HP, AOL
MySQL è un RDBMS[1] general purporse
[1] Affermazione discutibile, ma facciamo finta di niente per il momento :)
5
P R E S T A Z I O N I
Ha prestazioni di tutto rispetto, può confrontarsi con concorrenti commerciali.
Test eseguito dalla rivista eWeek nel febbraio 2002
fonte http://www.eweek.com
6
I N S T A L L A Z I O N E D A B I N A R I
Esistono binari precompilati con diversi compilatori per molte piattaforme.
Oppure si può utilizzare un gestore di pacchetti se disponibile
aptget install mysqlserver mysqlcommon mysqlclient
groupadd mysqluseradd g mysql mysqlcd /usr/localgunzip < /PATH/TO/MYSQLVERSIONOS.tar.gz | tar xvf ln s FULLPATHTOMYSQLVERSIONOS mysqlcd mysqlscripts/mysql_install_db user=mysqlchown R root .chown R mysql datachgrp R mysql .bin/mysqld_safe user=mysql &
7
I N S T A L L A Z I O N E D A S O R G E N T I
groupadd mysqluseradd g mysql mysqlgunzip < mysqlVERSION.tar.gz | tar xvf cd mysqlVERSION./configure prefix=/usr/local/mysqlmakemake installcp supportfiles/mymedium.cnf /etc/my.cnfcd /usr/local/mysqlbin/mysql_install_db user=mysqlchown R root .chown R mysql varchgrp R mysql .bin/mysqld_safe user=mysql &
Personalizzare e ottimizzare l'installazione, guardare le opzioni con ./configure --help
8
F I L E D I C O N F I G U R A Z I O N E
Nel file di configurazione my.cnf vengono memorizzate le opzioni per l'avvio del server
#commento commenti[gruppo] nome del programma o del gruppo per cui valgono le
opzioni sottostantiopzione --opzioneopzione=valore --opzione=valoreset-variable = variabile=valore --set-variable variabile=valore
[mysqld]port=3306socket=/tmp/mysql.socksetvariable = key_buffer_size=16M[mysqldump]quick
9
F U N Z I O N A M E N T O
File
Directory
I dati* vengono rappresentati sul file system con directory (database) e file (tabelle).
Le prestazioni sono limitate da quelle del file system.
Datadir
*I dati InnoDB sono memorizzati in modo diverso dall'apposito gestore
10
G L I U T E N T I
Ogni utente dispone di propri privilegi.
Le utenze sono memorizzate nel database mysql, al cui interno ci sono le tabelle di sistema: user : contiene le utenze e i loro privilegi db : contiene la lista dei database host : contiene l'elenco degli host tables_priv : indica i privilegi sulle tabelle columns_priv : indica i privilegi sui campi
Per modificare i permessi si utilizza mysqladmin oppure GRANT,meglio non operare a mano sulle tabelle di sistema, possono nonessere consistenti.
11
R E G I S T R I E V A R I A B I L I
I registri di log memorizzano gli eventi generati dal DBMS:registro generale delle queryregistro delle query lenteregistro degli aggiornamenti (testo e binario)registro degli errori
Le variabili contengono:variabili di sistema: indicano come il server è stato configurato
alcune possono essere cambiate a runtimevariabili di sessione: mantenute per ogni client che si connettevariabili di stato: contengono informazioni statistiche
12
S Q L : S T R U C T U R E D Q U E R Y L A N G U A G E
Controlla il DBMS Manipola dati Amministrazione utenti Facile e naturale da utilizzare
Alcuni statements:SELECT nome FROM clienti ORDER BY nomeDELETE * FROM criceti WHERE eta = 1CREATE TABLE tabella (day DATE NOT NULL, nome VARCHAR(10))
Linguaggio “universale” per l'interrogazione di DBMS.
Specifica come i dati devono essere definiti e come devono essere manipolati
13
T I P I D I D A T I
Nu
NumericiINT, FLOAT, DOUBLE, DECIMALStringheCHAR, VARCHAR, BLOB, TEXT, ENUM, SETTemporaliDATE, TIME, DATETIME, TIMESTAMPSpecialiSpecifiche OpenGIS
ENUM e SET sono enumerazioni, cioè variabili che devono essere scelte tra dei valori predefiniti, la seconda consente una scelta multipla
14
T I P I D I T A B E L L E
ISAMVecchio modello ad accesso sequenziale
MyISAMMaggiore dimensione, migliore gestione indicie e compressione, portabilità
MERGECostrutto logico che incorpora più tabelle MyISAM
BDBIl gestore metta a disposizione transazioni e recovery automatico
InnoDBIl gestore metta a disposizione transazioni, locking migliore, recovery automatico e gestione chiavi esterne
HEAPTabelle temporanee tenute in memoria
15
J O I N
Un enunciato che utilizza dati da più tabelle
Join completonella parte FROM compaiono più tabelleSELECT tab1.* , tab2.* FROM tab1 , tab2 WHERE
tab1.ind = tab2.ind Join sinistro
mostra le righe che soddisfano il join ma anche le righe della tabella di sinistra SELECT tab1.* , tab2.* FROM tab1 LEFT JOIN tab2 ON
tab1.ind = tab2.ind Join destro
mostra le righe che soddisfano il join ma anche le righe della tabella di destraSELECT tab1.* , tab2.* FROM tab1 RIGHT JOIN tab2 ON
tab1.ind = tab2.ind
16
I N D I C I
si possono avere molti indici per una tabella indici fulltext indici su colonne multiple aumentano le prestazioni nelle ricerca ma le rallentano
nelle modifiche
Un indice serve per trovare facilmente le informazioni.
Da utilizzare su tutti i campi che vengono utilizzati nelle ricerche o join.
AnimaleGattoMuccaGattoTartarugaGatto
GattoMuccaTartaruga
17
S U B Q U E R Y
Una subquery è una query annidata in una altra
SELECT * FROM tabella1 WHERE colonna1 = (SELECT colonna2 FROM tabella2)
Vantaggi: le query possono essere strutturate un metodo alternativo all'uso dei join sono facilmente leggibili in certi casi l'utilizzo delle subquery aumenta le prestazioni ci risparmia i “salti mortali” con i join
18
T R A N S A Z I O N I
Insieme di query eseguite senza interruzioni
COMMIT (esecuzione), ROLLBACK (annullamento)
Tabelle transazionali: BDB, InnoDBTabelle non transazionali: ISAM, MyISAM, HEAP
BEGIN#qui facciamo tutte le queryCOMMIT
BEGIN#qui facciamo tutte le queryERROR 1060 blablablaROLLBACK
19
C H I A V I E S T E R N E
Le chiavi esterne aiutano a mantenere la consistenza dei dati
Le chiavi esterne (foreign key) definiscono delle relazioni tra tabelle a livello logico, cioè una relazione tra un un campo di una tabella e un campo di un altra. Il DBMS userà queste relazioni per mantenere l'integrità relazionale.
IdUser Nome1 Gianni2 Pippo3 Gigi
IdUser Fattura1 AEFRG3 FGRGE3 GRSAE2 GTESA
Ogni fattura deve essere associata ad un utente
21
A V V I O E A R R E S T O
mysqld : il demone servermysqld_safe : uno script che si occupa di gestire in modo sicuro il demone
L'arresto avviene con il comando mysqladmin shutdown oppure SHUTDOWN
datadir=directory indica la posizione della directory dei programmibasedir=directory indica la posizione della directory dei datidefaultsfile=file legge il file di opzioni indicato al posto di quello di defaultpidfile=file indica la posizione del file pidsocket=file indica la posizione del socketport=numero la porta su cui il server è in ascoltonice=numero il valore di nice con cui viene eseguito il server
22
B A C K U P
Medoti di backup: backup fisico a mano (tar ecc..)
utile solo in casi particolari mysqldump: ritorna una rappresentazione SQL dei database,
molto comoda da usare mysqlhotcopy: script perl che esegue la copia fisica di tabelle
e db
Controllo delle tabelle: myisamchk: controlla e ripara mysqlcheck: controlla, ripara e ottimizza, può essere usato
con il server in esecuzione
23
O T T I M I Z Z A Z I O N E
Meccanismi di ottimizzazione automatici: l'ottimizzatore delle query la cache delle query
Per i programmatori: usare gli indici usare poco il casting e le funzioni non sprecare spazio dichiarare le colonne NOT NULL provare query scritte in vari modi usare OPTIMIZE TABLE
Per gli amministratori: aumentare la cache disabilitare i gestori non usati compliare con librerie statiche
24
S I C U R E Z Z A
Impedire accesso al file system, gli utenti non devono poter leggere la directory dei dati Proteggere i file di opzioni Rimuovere account anonimi (vengono installati di default!!) Specificare gli host da cui si collegano gli utenti se possibile Usare connessioni SSL Volendo il server puo' essere messo in una jail chroot Se utilizzato il locale il server deve ascoltare solo su localhost
25
P h p M y A d m i n
E' un utility di amministrazione utilizzabile via web, richiede un server web e il modulo php
Manipolare dati, tabelle, databaseOgni utene gestisce il suo databaseEseguire query SQLCreazione automatica di query complesseAmministrare utenti e privilegiEsportare dati in formato CSV, XML, LatexEffettuare backup/restore dei datiMonitorare il server
26
M y S Q L C C
GUI per l'amministrazione platform indipendent e GPL amministrazione utenze e tabelle supporto per server multipli editor di query visualizza le immagini nei BLOB utile per testare e ottimizzare le query strumento orientato ai programmatori
http://www.mysql.com/products/mysqlcc/
27
M y S Q L A d m i n i s t r a t o r
facile da utilizzare multipiattaforma statistiche in tempo reale facile ottimizzazione backup e restore gestione repliche gestione variabili server controllo dei log strumento orientato ai sistemisti
http://www.mysql.com/products/administrator/
28
Q U E R Y B R O W S E R
editor di query utile per testare e ottimizzare
le query strumento orientato ai
programmatori
http://dev.mysql.com/downloads/query-browser/1.1.html
29
D B D E S I G N E R 4
strumento grafico per la realizzazione di schemi logici
query editor reverse engeneering version control vari plugin purtroppo non supporta le viste
http://www.fabforce.net/dbdesigner4/
30
I N T E R F A C C I A M E N T O
Esistono API per tutti i linguaggi di programmazione più utilizzati, ad esempio:● C / C++ / C#● Java● Perl● Python● Delphi● Ruby● PHP● e molti altri..
Possibilità di includere il server in modo embedded nell'applicazione.
31
A L T A A F F I D A B I L I T A '
Idea: una serie di macchine che condividono gli stessi dati, se unacade le altre prendono il suo posto
inizialmente i dati sono replicati su tutte le macchine gli slave vengono aggiornati
attraverso il binary log del master se il master cade gli slave
prendono il suo posto
Vantaggi: fault tolerance niente single point of failure fail over automatico facilità
32
C L U S T E R
Idea: distribuire il carico di lavoro su un pull di macchine
la macchina MGM coordina i nodi i nodi DBx contengono il databasee soddisfano le richieste
33
M A X D B
Implementazione di MySQL certificata per l'utilizzo con SAP®
studiato per gestire un gran numero di transazioni supporta le stored procedures distribuito con interfaccia grafica e web supporta meno interfacce di programmazione funzioni di amministrazione (job scheduling, eventi, allarmi) disponibile per poche piattaforme usa un protocollo proprietario di rete
34
I L L A T O O S C U R O
Funzionalità non supportate: Trigger [*] Stored Procedure [*] Viste [*] -- come commento Privilegi a livello di record Mancanza del supporto a particolari tipi di query (ad es. alberi)
[*] supportato dalla versione 5 attualmente in alpha
Vecchie versioni non supportano: l'integrità referenziale le subquery
Potremmo discutere il fatto che MySQL attualmente sia un DBMS
35
R I F E R I M E N T I
“SQL” M. J. Hernandez, Mondadori
“Basi di dati, modelli e linguaggi di interrogazione” P. Atzeni, McGraw-Hill
“Basi di dati, architetture e linee di evoluzione” P. Atzeni, McGraw-Hill
“MySQL” P. DuBois, Pearson
“SQL The Complete Reference” J. R. Groff, McGraw-Hill
“Foundamentals of database systems” Elmasri/Navathe, Addison Wesley
“MySQL Reference Manual” http://dev.mysql.com/doc/
37
C O P Y R I G H T
Questo documento viene rilasciato sotto licenza Alcoolware, la quale non è altro che una normale licenza Creative Commons AttributeNonCommercialShareALike [1] ma con l'aggiunta che se mi incontrate dobbiamo andare a bere qualcosa.In sintesi è liberamente distribuibile per usi non commerciali, copiabile e modificabile purchè citiate l'autore e la fonte.Se volete distribuire questo documento sul vostro sito siete pregati per favore di comunicarmelo in modo che possa spedirvi le nuove versioni.
[
[1] http://creativecommons.org/licenses/by-nc-sa/2.0/