LUGTrieste // · Il gestore metta a disposizione transazioni e recovery automatico ... uno script...

37
1 Alessandro “jekil” Tanasi [email protected] http://www.lonerunners.net/ LUGTrieste http://trieste.linux.it/

Transcript of LUGTrieste // · Il gestore metta a disposizione transazioni e recovery automatico ... uno script...

1

Alessandro “jekil” [email protected]://www.lonerunners.net/

LUGTriestehttp://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

✔ 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

apt­get install mysql­server mysql­common mysql­client

groupadd mysqluseradd ­g mysql mysqlcd /usr/localgunzip < /PATH/TO/MYSQL­VERSION­OS.tar.gz | tar xvf ­ln ­s FULL­PATH­TO­MYSQL­VERSION­OS 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 < mysql­VERSION.tar.gz | tar ­xvf ­cd mysql­VERSION./configure ­­prefix=/usr/local/mysqlmakemake installcp support­files/my­medium.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.sockset­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 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

20

C L I E N T

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 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, 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/

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/