Il motore di database MySQL, suo funzionamento e utilizzo. Le novita' introdotte dalla versione 5.
Talk tenuto da Alessandro Tanasi (http://www.tanasi.it)
2. LE BASI DI DATI
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
✔
2
3. PERCHE SCEGLIERE MySQL?
MySQL[1] è un RDBMS general purporse
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
3
4. PRESTAZIONI
Ha prestazioni di tutto rispetto, può confrontarsi con concorrenti
commerciali.
fonte http://www.eweek.com
4
Test eseguito dalla rivista eWeek nel febbraio 2002
5. INSTALLAZIONE
Metodi di installazione:
binari precompilati con diversi compilatori per molte piattaforme
compilazione dei sorgenti
utilizzo del gestore di pacchetti della propria distribuzione
Procedura:
aggiunta di un gruppo e un utente
copia dei binari
creazione delle tabelle di sistema
La procedura di installazione è accuratamente descritta nel file
readme
Configurazione
La configurazione di mysql e dei programmi relativi viene
memorizzata nel file my.cnf
5
6. FUNZIONAMENTO
I dati vengono rappresentati sul file system
con directory (database) e file (tabelle)
Le utenze sono memorizzate all'interno
delle tabelle di sistema contenute nel
database mysql
I registri di log memorizzano gli eventi generati dal DBMS:
registro generale delle query
registro delle query lente
registro degli aggiornamenti (testo e binario)
registro degli errori
Le variabili contengono:
variabili di sistema: indicano come il server è stato configurato
variabili di sessione: mantenute per ogni client che si connette
variabili di stato: contengono informazioni statistiche 6
7. TIPI GESTITI
Tipi di dati:
numerici, stringhe (caratteri e binari), temporali, speciali (OpenGIS)
Tipi di tabelle:
ISAM
Vecchio modello ad accesso sequenziale
MyISAM
Maggiore dimensione, migliore gestione indici e compressione,
portabilità
MERGE
Costrutto logico che incorpora più tabelle MyISAM
BDB
Il gestore mette a disposizione transazioni e recovery automatico
InnoDB
Il gestore mette a disposizione transazioni, locking migliorato,
recovery automatico e gestione chiavi esterne
HEAP
Tabelle temporanee tenute in memoria 7
8. FUNZIONALITA'
Chiavi primarie e esterne
definizione di relazioni tra tabelle
Integrità referenziale
vincoli che mantengono i dati consistenti
Indici
su più colonne
fulltext, utili per fare ricerce nel testo
Transazioni
insieme di istruzioni che devono essere eseguite in modo
atomico
Subquery
possibilità di annidare una query dentro l'altra, un'alternativa
ai join
8
9. NUOVE FUNZIONALITA'
La versione 5.0 introduce:
Viste
tabella “virtuale” generata dal DBMS
Stored procedures/functions
blocco di istruzioni memorizzate e eseguite sul DBMS
Trigger
procedura scatenata da un evento
Cursori
il programma può accedere alle righe della tabella una alla
volta
Information Schema
permette l'accesso ai metadati che definiscono i database
Altro...
9
10. UTILIZZO
Avvio
mysqld : il demone server
mysqld_safe : script che gestisce in modo sicuro il demone
Utilizzo
mysql : client testuale
strumenti grafici
Medoti di backup
mysqldump: ritorna una rappresentazione SQL dei database
mysqlhotcopy: script perl che esegue la copia fisica di tabelle e db
Controllo delle tabelle
myisamchk: controlla e ripara
mysqlcheck: controlla, ripara e ottimizza, usato con il server in
esecuzione
10
12. OTTIMIZZAZIONE
Meccanismi di ottimizzazione automatici:
l'ottimizzatore delle query
la cache delle query
Per i programmatori: Per gli amministratori:
usare gli indici utilizzo della cache
usare poco il casting e le funzioni disabilitare i gestori non usati
non sprecare spazio compilare con librerie statiche
dichiarare le colonne NOT NULL
provare query scritte in vari modi
usare OPTIMIZE TABLE
12
13. SICUREZZA
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 in locale il server deve ascoltare solo su localhost
13
14. STRUMENTI
Strumenti per amministratori
PhpMyAdmin [2]
interfaccia web, amministrazione
MySqlAdministrator [3]
amministrazione, controllo, setup
MySqlCc [4]
amministrazione base, modifica dati
Strumenti per programmatori
QueryBrowser [5]
creazione query assistita
DbDesigner [6]
diagrammi logici
AquaStudio [7]
creazione query e struttura
14
15. INTERFACCIAMENTO
Esistono API per tutti i linguaggi
di programmazione più utilizzati,
ad esempio:
● C / C++ / C#
● Java
Possibilità di includere il
● Perl
server in modo
● Python
embedded
● Delphi
nell'applicazione.
● Ruby
● PHP
● e molti altri..
15
16. ALTA AFFIDABILITA'
Idea: una serie di macchine che condividono gli stessi dati, se una
cade 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à
16
17. CLUSTER
Idea: distribuire il carico di lavoro su un pull di macchine
la macchina MGM coordina i nodi
i nodi DBx contengono il database
e soddisfano le richieste
il motore NDB cluster gestisce il
cluster in modo trasparente al
sistema operativo
17
18. MAXDB
Implementazione di MySQL certificata per l'utilizzo con SAP®
studiato per gestire un gran numero di transazioni
supportava già le stored procedures
distribuito con interfaccia grafica e web
funzioni di amministrazione (job scheduling, eventi, allarmi)
disponibile per poche piattaforme
supporta sistemi di backup online
18
19. CRITICHE
Funzionalità non supportate:
-- come commento
Privilegi a livello di record
Mancanza del supporto a particolari tipi di query (ad es. alberi)
Supporto ai trigger non completo
Supporto elementare ai cursori
Vecchie versioni non supportano:
l'integrità referenziale
le subquery
Trigger [*]
Stored Procedure [*]
Viste [*]
19
[*] supportato dalla versione 5
20. RIFERIMENTI
“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/
20
21. LINKS
[1] Homepage MySQL http://www.mysql.com
[2] PhpMyAdmin http://www.phpmyadmin.net
[3] MySQL Administrator
http://www.mysql.com/products/administrator/
[4] MySQLCc http://www.mysql.com/products/mysqlcc/
[5] Query Browser http://www.mysql.com/products/query-browser/
[6] DbDesigner http://www.fabforce.net/dbdesigner4/
[7] Aqua Studio http://www.aquafold.com
21
23. COPYRIGHT
Questo documento viene rilasciato sotto licenza
Alcoolware, la quale non è altro che una normale
licenza Creative Commons AttributeNonCommercial
ShareALike [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/
23