SlideShare a Scribd company logo
1 of 23
LUGTrieste
                              http://trieste.linux.it/




Alessandro “jekil” Tanasi
alessandro@lonerunners.net
http://www.lonerunners.net/                      1
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
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
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
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
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
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
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
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
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
CLIENT




         11
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
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
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
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
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
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
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
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
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
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
DOMANDE




DOMANDE.. 




  Grazie per la Vostra attenzione



                                    22
COPYRIGHT




    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/


                                                    23

More Related Content

Viewers also liked

Web Application Insecurity Uncensored
Web Application Insecurity UncensoredWeb Application Insecurity Uncensored
Web Application Insecurity Uncensoredjekil
 
Linux Nelle Aziende Summer Of Linux 2007
Linux Nelle Aziende Summer Of Linux 2007Linux Nelle Aziende Summer Of Linux 2007
Linux Nelle Aziende Summer Of Linux 2007jekil
 
Perfect method for Frames
Perfect method for FramesPerfect method for Frames
Perfect method for Framesandreslahe
 
Security by example
Security by exampleSecurity by example
Security by examplejekil
 
Client Side Security Settordici Lugts
Client Side Security Settordici LugtsClient Side Security Settordici Lugts
Client Side Security Settordici Lugtsjekil
 
Onderwijsdaghub 130109 Presentatiesdp
Onderwijsdaghub 130109 PresentatiesdpOnderwijsdaghub 130109 Presentatiesdp
Onderwijsdaghub 130109 PresentatiesdpSteven De Pauw
 
How to make a cheap Video Unit for your school
How to make a cheap Video Unit for your schoolHow to make a cheap Video Unit for your school
How to make a cheap Video Unit for your schoolLeon Cych
 
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...jekil
 
Introduzione all'analisi forense
Introduzione all'analisi forenseIntroduzione all'analisi forense
Introduzione all'analisi forensejekil
 
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisjekil
 

Viewers also liked (13)

Web Application Insecurity Uncensored
Web Application Insecurity UncensoredWeb Application Insecurity Uncensored
Web Application Insecurity Uncensored
 
Linux Nelle Aziende Summer Of Linux 2007
Linux Nelle Aziende Summer Of Linux 2007Linux Nelle Aziende Summer Of Linux 2007
Linux Nelle Aziende Summer Of Linux 2007
 
Perfect method for Frames
Perfect method for FramesPerfect method for Frames
Perfect method for Frames
 
Security by example
Security by exampleSecurity by example
Security by example
 
Culkas cea san_ildefonso
Culkas cea san_ildefonsoCulkas cea san_ildefonso
Culkas cea san_ildefonso
 
Kick off meeting copenhagen
Kick off meeting copenhagenKick off meeting copenhagen
Kick off meeting copenhagen
 
Client Side Security Settordici Lugts
Client Side Security Settordici LugtsClient Side Security Settordici Lugts
Client Side Security Settordici Lugts
 
Segovia. Spain.Presentation
Segovia. Spain.PresentationSegovia. Spain.Presentation
Segovia. Spain.Presentation
 
Onderwijsdaghub 130109 Presentatiesdp
Onderwijsdaghub 130109 PresentatiesdpOnderwijsdaghub 130109 Presentatiesdp
Onderwijsdaghub 130109 Presentatiesdp
 
How to make a cheap Video Unit for your school
How to make a cheap Video Unit for your schoolHow to make a cheap Video Unit for your school
How to make a cheap Video Unit for your school
 
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
Android Introduzione All Architettura Programmazione Sicurezza Serate A Tema ...
 
Introduzione all'analisi forense
Introduzione all'analisi forenseIntroduzione all'analisi forense
Introduzione all'analisi forense
 
Cuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysisCuckoo Sandbox: Automated malware analysis
Cuckoo Sandbox: Automated malware analysis
 

Similar to MySQL 5

MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackPar-Tec S.p.A.
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaYashi Italia
 
MySQL: il database open source che ha sfidato i giganti
MySQL: il database open source che ha sfidato i gigantiMySQL: il database open source che ha sfidato i giganti
MySQL: il database open source che ha sfidato i gigantiBabel
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerRoberto Messora
 
Da Zero all'open per PA e PMI
Da Zero all'open per PA e PMIDa Zero all'open per PA e PMI
Da Zero all'open per PA e PMINaLUG
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-databaseMajong DevJfu
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterPar-Tec S.p.A.
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBSteve Maraspin
 
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUG IT
 
Virtualizzazione e Network Management Open Source
Virtualizzazione e Network Management Open SourceVirtualizzazione e Network Management Open Source
Virtualizzazione e Network Management Open SourceMarco Vanino
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss CloudJBug Italy
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009Sanne Grinovero
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLPar-Tec S.p.A.
 
20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCamp20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCampmlraviol
 
Docker la rivoluzione nel deployment
Docker la rivoluzione nel deploymentDocker la rivoluzione nel deployment
Docker la rivoluzione nel deploymentMauro Cicolella
 

Similar to MySQL 5 (20)

Database Data Aggregator
Database Data AggregatorDatabase Data Aggregator
Database Data Aggregator
 
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
 
Mysql Introduzione
Mysql IntroduzioneMysql Introduzione
Mysql Introduzione
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
 
MySQL: il database open source che ha sfidato i giganti
MySQL: il database open source che ha sfidato i gigantiMySQL: il database open source che ha sfidato i giganti
MySQL: il database open source che ha sfidato i giganti
 
Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
Da Zero all'open per PA e PMI
Da Zero all'open per PA e PMIDa Zero all'open per PA e PMI
Da Zero all'open per PA e PMI
 
Da 0 all'open per PA e PMI
Da 0 all'open per PA e PMIDa 0 all'open per PA e PMI
Da 0 all'open per PA e PMI
 
Py a6 python-database
Py a6 python-databasePy a6 python-database
Py a6 python-database
 
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL ClusterMySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
MySQL Tech Tour 2015 - Progettare, installare e configurare MySQL Cluster
 
Cesvip 20110127
Cesvip 20110127Cesvip 20110127
Cesvip 20110127
 
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDBPolyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
Polyglot Persistance con PostgreSQL, CouchDB, MongoDB, Redis e OrientDB
 
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro PiuttiVMUGIT Roma 2016 - vROps Design - Pietro Piutti
VMUGIT Roma 2016 - vROps Design - Pietro Piutti
 
Virtualizzazione e Network Management Open Source
Virtualizzazione e Network Management Open SourceVirtualizzazione e Network Management Open Source
Virtualizzazione e Network Management Open Source
 
October 2009 - JBoss Cloud
October 2009 - JBoss CloudOctober 2009 - JBoss Cloud
October 2009 - JBoss Cloud
 
JBoss Clouds - JBug Roma october 2009
JBoss Clouds -  JBug Roma october 2009JBoss Clouds -  JBug Roma october 2009
JBoss Clouds - JBug Roma october 2009
 
Infrastructure as Data
Infrastructure as DataInfrastructure as Data
Infrastructure as Data
 
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQLMySQL Day Roma 2019 - Le architetture a microservizi e MySQL
MySQL Day Roma 2019 - Le architetture a microservizi e MySQL
 
20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCamp20160402_mlraviol_mariadb_TorinoWordCamp
20160402_mlraviol_mariadb_TorinoWordCamp
 
Docker la rivoluzione nel deployment
Docker la rivoluzione nel deploymentDocker la rivoluzione nel deployment
Docker la rivoluzione nel deployment
 

More from jekil

Names and virtual host discovery
Names and virtual host discoveryNames and virtual host discovery
Names and virtual host discoveryjekil
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Railsjekil
 
XPath Injection
XPath InjectionXPath Injection
XPath Injectionjekil
 
Web Application Insecurity L D2007
Web Application Insecurity  L D2007Web Application Insecurity  L D2007
Web Application Insecurity L D2007jekil
 
Anonimato In Rete Summer Of Linux2007
Anonimato In Rete Summer Of Linux2007Anonimato In Rete Summer Of Linux2007
Anonimato In Rete Summer Of Linux2007jekil
 
Sicurezza Informatica Nelle Aziende Installfest2007
Sicurezza Informatica Nelle Aziende Installfest2007Sicurezza Informatica Nelle Aziende Installfest2007
Sicurezza Informatica Nelle Aziende Installfest2007jekil
 
Intrusion Detection Systems
Intrusion Detection SystemsIntrusion Detection Systems
Intrusion Detection Systemsjekil
 
La sicurezza informatica nello studio legale
La sicurezza informatica nello studio legaleLa sicurezza informatica nello studio legale
La sicurezza informatica nello studio legalejekil
 

More from jekil (8)

Names and virtual host discovery
Names and virtual host discoveryNames and virtual host discovery
Names and virtual host discovery
 
Sviluppo web con Ruby on Rails
Sviluppo web con Ruby on RailsSviluppo web con Ruby on Rails
Sviluppo web con Ruby on Rails
 
XPath Injection
XPath InjectionXPath Injection
XPath Injection
 
Web Application Insecurity L D2007
Web Application Insecurity  L D2007Web Application Insecurity  L D2007
Web Application Insecurity L D2007
 
Anonimato In Rete Summer Of Linux2007
Anonimato In Rete Summer Of Linux2007Anonimato In Rete Summer Of Linux2007
Anonimato In Rete Summer Of Linux2007
 
Sicurezza Informatica Nelle Aziende Installfest2007
Sicurezza Informatica Nelle Aziende Installfest2007Sicurezza Informatica Nelle Aziende Installfest2007
Sicurezza Informatica Nelle Aziende Installfest2007
 
Intrusion Detection Systems
Intrusion Detection SystemsIntrusion Detection Systems
Intrusion Detection Systems
 
La sicurezza informatica nello studio legale
La sicurezza informatica nello studio legaleLa sicurezza informatica nello studio legale
La sicurezza informatica nello studio legale
 

MySQL 5

  • 1. LUGTrieste http://trieste.linux.it/ Alessandro “jekil” Tanasi alessandro@lonerunners.net http://www.lonerunners.net/ 1
  • 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
  • 11. CLIENT 11
  • 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
  • 22. DOMANDE DOMANDE..  Grazie per la Vostra attenzione 22
  • 23. COPYRIGHT 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/ 23