• Save
MySQL
Upcoming SlideShare
Loading in...5
×
 

MySQL

on

  • 4,601 views

Il motore di database MySQL, suo funzionamento e utilizzo. Strumenti di amministrazione e ausili per il programmatore.

Il motore di database MySQL, suo funzionamento e utilizzo. Strumenti di amministrazione e ausili per il programmatore.
Talk tenuto da Alessandro Tanasi (http://www.tanasi.it)

Statistics

Views

Total Views
4,601
Views on SlideShare
4,594
Embed Views
7

Actions

Likes
0
Downloads
0
Comments
0

3 Embeds 7

http://www.slideshare.net 5
http://www.linkedin.com 1
https://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

MySQL MySQL Presentation Transcript

  • 1 Alessandro “jekil” Tanasi alessandro@lonerunners.net http://www.lonerunners.net/ LUGTrieste http://trieste.linux.it/
  • 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
  • 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 Cognome 1 Pippo Rossi 2 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 apt­get install mysql­server mysql­common mysql­client groupadd mysql useradd ­g mysql mysql cd /usr/local gunzip < /PATH/TO/MYSQL­VERSION­OS.tar.gz | tar xvf ­ ln ­s FULL­PATH­TO­MYSQL­VERSION­OS mysql cd mysql scripts/mysql_install_db ­­user=mysql chown ­R root  . chown ­R mysql data chgrp ­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 mysql useradd ­g mysql mysql gunzip < mysql­VERSION.tar.gz | tar ­xvf ­ cd mysql­VERSION ./configure ­­prefix=/usr/local/mysql make make install cp support­files/my­medium.cnf /etc/my.cnf cd /usr/local/mysql bin/mysql_install_db ­­user=mysql chown ­R root  . chown ­R mysql var chgrp ­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 sottostanti opzione ­­opzione opzione=valore  ­­opzione=valore set­variable = variabile=valore ­­set­variable variabile=valore [mysqld] port=3306 socket=/tmp/mysql.sock set­variable = 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 non essere 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 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 alcune possono essere cambiate  a runtime variabili di sessione: mantenute per ogni client che si connette variabili 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 nome DELETE * FROM criceti WHERE eta = 1 CREATE 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 N u Numerici INT, FLOAT, DOUBLE, DECIMAL Stringhe CHAR, VARCHAR, BLOB, TEXT, ENUM, SET Temporali DATE, TIME, DATETIME, TIMESTAMP Speciali Specifiche 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  ISAM Vecchio modello ad accesso sequenziale  MyISAM Maggiore dimensione, migliore gestione indicie e compressione,  portabilità  MERGE Costrutto logico che incorpora più tabelle MyISAM  BDB Il gestore metta a disposizione transazioni e recovery automatico  InnoDB Il gestore metta a disposizione transazioni, locking migliore,  recovery automatico e gestione chiavi esterne  HEAP
  • 15 J O I N Un enunciato che utilizza dati da più tabelle   Join completo nella parte FROM compaiono più tabelle SELECT 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 destra SELECT tab1.* , tab2.* FROM tab1 RIGHT JOIN tab2 ON 
  • 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.  Animale Gatto Mucca Gatto Tartaruga Gatto Gatto Mucca Tartaruga
  • 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, InnoDB Tabelle non transazionali: ISAM, MyISAM, HEAP BEGIN #qui facciamo tutte le query COMMIT BEGIN #qui facciamo tutte le query ERROR 1060 blablabla ROLLBACK
  • 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 Nome 1 Gianni 2 Pippo 3 Gigi IdUser Fattura 1 AEFRG 3 FGRGE 3 GRSAE 2 GTESA Ogni fattura deve essere associata ad un utente
  • 20 C L I E N T
  • 21 A V V I O   E   A R R E S T O mysqld : il demone server mysqld_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 programmi ­­basedir=directory indica la posizione della  directory dei dati ­­defaults­file=file legge il file di opzioni  indicato al posto di quello di default ­­pid­file=file indica la posizione del file pid ­­socket=file indica la posizione del socket ­­port=numero la porta su cui il server è in ascolto ­­nice=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, database Ogni utene gestisce il suo database Eseguire query SQL Creazione automatica di query  complesse Amministrare utenti e privilegi Esportare dati in formato CSV, XML,  Latex Effettuare backup/restore dei dati Monitorare 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 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à
  • 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 database e 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/
  • 36 D O M A N D E DOMANDE  ...E POMODORI Grazie per la Vostra attenzione
  • 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 Attribute­NonCommercial­ 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/