Continua il nostro percorso alla scoperta e all’analisi dei DBMS. Finora abbiamo parlato di DB2, oltre ad avervi fornito una panoramica preliminare sui database e sui DBMS. In questo articolo parleremo di MySQL.
Panoramica e storia di MySQL
MySQL è uno dei più diffusi sistemi DBMS open source, sviluppato, distribuito e supportato da MySQL AB, un’organizzazione fondata dagli stessi, primi sviluppatori di MySQL. A riprova della sua grossa diffusione, si consideri che, oltre alla vastissima utenza, MySQL è attualmente in grado di operare su un parco di oltre 20 piattaforme, tra le quali annoveriamo Linux, Windows, OS/X, HP-UX, AIX, Netware.
Ma come nacque MySQL? Tutto scaturì dall’esigenza di un’azienda scandinava, la TcX, che, nell’anno 1996, si trovò dinanzi alla necessità di un database (di tipo relazionale, come vedremo nel seguito di questo articolo) che fosse in grado di gestire grandi quantità di dati, e che, al contempo, fosse molto veloce e sicuro; ulteriore caratteristica richiesta era quella di un DBMS che potesse essere usato con un insieme limitato di risorse hardware. In quel periodo, trovare un prodotto che rispondesse a queste esigenze pareva impossibile; l’azienda decise quindi di creare un proprio DBMS, basandosi su un altro database precedentemente sviluppato: mSQL. Il prodotto che ne scaturì (ovvero la prima versione di MySQL) risultò essere estremamente veloce e semplice nell’uso, con l’unico svantaggio, (rispetto a DBMS maggiormente diffusi e costosi come, ad esempio, Oracle) di essere privo di un’interfaccia specifica per la gestione manuale dei dati.
Caratteristiche di MySQL
Come precedentemente accennato, MySQL può essere inquadrato nell’ambito dei database di tipo relazionale. Per database relazionale si intende un database nel quale i dati immagazzinati sono memorizzati sotto forma di tabelle, messe poi in relazione tra loro; questa tecnica organizzativa permette di ottimizzare la gestione dei dati, ma soprattutto di ridurre lo spazio di memoria impegnato.
Compreso il significato di database relazionale, è ora possibile fornire una definizione più precisa di cosa effettivamente è MySQL: un software fornitore di un sistema in grado di gestire i database relazionali. Quindi, in questa accezione, possiamo indicare MySQL non propriamente come DBMS, bensì più precisamente come RDBMS, ovvero Relational DataBase Management System (Sistema di gestione di database relazionali). Lo stesso DB2, di IBM, del quale vi abbiamo parlato nel precedente articolo, è un RDBMS.
MySQL utilizza il linguaggio SQL (Structured Query Language) per permettere, principalmente, l’interrogazione dei database che gestisce. Oltre a questa funzione principale, questo particolare linguaggio permette di effettuare tutte le operazioni necessarie alla creazione delle tabelle di un database; di definire i vincoli intrarelazionali (ossia vincoli vigenti all’interno di un’unica relazione) ed interrelazionali (ossia vigenti tra due o più relazioni); di inserire, cancellare e modificare i dati contenuti nel database.
Reperire ed installare MySQL
Come precedentemente asserito, nell’ambito della nostra panoramica a MySQL, questo è un prodotto open source, distribuito con licenza GPL. Può dunque essere liberamente prelevato attraverso Internet. In particolare possiamo procurare la nostra copia di MySQL al sito seguente:
in particolare, attualmente, MySQL è disponibile nella versione 5.0 in due diverse tipologie:
- MySQL Community Server
- MySQL Enterprise Server
la differenza fra le due tipologie sta essenzialmente nella notifica, nel caso della tipologia Enterprise, degli aggiornamenti che nel corso del tempo vengono sviluppati e pubblicati sul sito ufficiale. La versione Enterprise, quindi, rispetto alla versione Community, rappresenta un prodotto destinato ad un uso più professionale. Supponendo di scegliere la versione Community, troveremo disponibili diverse sottotipologie e versioni, destinate a Windows, Linux, Solaris, FreeBSD, HP-UX, IBM AIX, Mac OS etc. Riferendoci ai principali s.o. ad uso desktop, si nota che mentre per Windows troviamo la semplice scelta tra il download dell’eseguibile (.EXE) e il formato compresso (.ZIP), per Linux la gamma di scelta e molto più ampia; è infatti disponibile una versione differente per ciascuna delle principali distribuzioni (Red Hat Enterprise, Suse, Ubuntu, etc.) e, per ognuna di esse, è prevista la scelta fra la versione Server, quella contenente una suite per i benchmark di sistema, oltre che la parte tool dell’applicativo, costituita dal file contenente l’insieme delle libraries e dal file client interface per consentire una gestione maggiormente user-friendly dell’applicativo. Ciascuna di queste tipologie è scaricabile in due diversi tipi di file:
- file non rpm (nel caso particolare un file .tar.gz)
- file rpm
A titolo esemplificativo, supponiamo che la nostra scelta ricada sulla versione non-rpm, ovvero quella indicata dal link denominato:
Linux (x86, glibc-2.2, “standard” is static)
come potete osservare nella foto sottostante
cliccando su tale link, veniamo redirezionati verso una pagina che permette l’inserimento dei nostri dati personali e la scelta di un mirror, tra i vari presenti, dal quale scaricare il nostro file, come si vede dalla foto sottostante:
Reperito il file, dobbiamo ora installarlo; il nostro file è in formato compresso .tar.gz, e dobbiamo quindi scompattarlo. Il file sarà analogo al seguente:
mysql-standard-5.0.27-linux-i686.tar.gzper scompattarlo inseriamolo per comodità nella directory seguente:
/usr/localnella quale scompatteremo il file ed avvieremo l’installazione. I comandi sono i seguenti:
cd /usr/local
gunzip mysql-standard-5.0.27-linux-i686.tar.gz
tar -xvf mysql-standard-5.0.27-linux-i686.tar.gza questo punto creiamo un link simbolico alla directory creata, in modo da potersi riferire ad essa in maniera semplificata; scegliamo quindi, come nome, mysql:
ln - s mysql-standard-5.0.27-linux-i686 mysqlAlcune note sono infine d’obbligo per consentire il corretto funzionamento di MySQL in Linux:
MySQL ha bisogno di uno specifico utente appartenente ad un apposito gruppo: sia l’utente che il gruppo sono denominati mysql; bisogna quindi crearli entrambi.
Eseguita la creazione di utente e gruppo mysql, è necessario creare una directory che conterrà i dati relativi ai database che verrano creati nell’utilizzo del RDBMS MySQL. Inoltre sarà necessario che i file ivi contenuti abbiano dei permessi adeguati alle esigenze di sicurezza. Entrambe le su citate operazioni possono essere effettuate chiamando in causa uno script presente nella directory /mysql/scripts. Lo script si chiama mysql_install_db.
MySQL viene largamente utilizzato in combinazione con applicativi web sviluppati nei più svariati linguaggi, tra cui i più diffusi PHP, JSP, ASP. Proprio a causa di questa eterogeneità realizzativa, in aggiunta alla variegata casistica di utilizzo, è opportuno fare riferimento, nella pratica sviluppativa, ai numerosi newsgroup e agli altrettanti forum “a tema” che popolano la rete. Vi consiglio, in particolare, la consultazione dei seguenti due forum:http://www.giorgiotave.it/forum/php-mysql/ (dedicato in particolare a MySQL combinato col il PHP);
Articolo a cura di: Sebastiano Sacco
Fonti: “MySQL”, di S. Rubini, ed. Apogeo; http://www.devspy.com/, www.mysql.org
febbraio 7, 2007
DBMS – 3: MySQL
febbraio 4, 2007
DBMS – 2: DB2 Universal Database
Nel precedente articolo (clicca QUI per visionarlo) introduttivo, abbiamo delineato il concetto di database e quello, ad esso legato, di DBMS. In questo articolo trattiamo il DBMS DB2 prodotto dalla IBM.
Un pò di storia
Il DBMS che ci apprestiamo ad approfondire appartiene alla storica famiglia della IBM che pone le sue fondamenta in SYSTEM R uno dei primi prototipi dei DBMS relazionali mai sviluppati , risalente ai primi anni settanta.Negli stessi laboratori di San Josè fu sviluppato il linguaggio SQL che è poi diventato il linguaggio di riferimento per i DBMS relazionali. la prima versione di DB2 risale alla prima metà degli anni ’80 e da allora questo prodotto IBM è sempre stato all’apice del mercato mondiale dei DBMS, insieme a ORACLE
Panoramica generale
Il successo che ha sempre caratterizzato DB2 nasce da una collezione di funzionalità avanzate, quali:
Supporto alla gestione di tipi di dati non tradizionali
La possibilità di creare dei tipi di dato e delle funzioni che l’utente può utilizzare semplicemente nell’SQL
Supporto nativo alle applicazioni web
Funzionalità evolute di Bussiness Intelligence
Supporto per parallelismi sia a memoria condivisa sia a basi di dati memorizzate su calcolatori basate su multiprocessori simmetrici (SMP), sia a parallelismi a memorie separate nei quali una base di dati viene partizionata tra diversi calcolatori connessi in rete
Naturalmente, la componente server di DB2 è disponibile per diverse piattaforme sia software che hardware ed oltre ad essere ovviamente disponibile per gli ambienti Unix e Linux è anche disponibile per gli ambienti Windows. Un’ulteriore caratteristica interessante di DB2 è che i sistemi DB2 possono partecipare a federazioni eterogenee e distribuite di basi di dati, usando un protocollo chiamato DRDA (Distributed Relational Database Architecture)
Versioni disponibili
DB2 viene rilasciato in diverse versioni, quali
- Personal: Monoutente su singolo PC
- Workgroup: Rete Lan, pone delle restrizioni alle architetture offrendo un massimo di 4 CPU supportate
- Express: il database completo per le piccole e medie imprese.
- Enterprise: per azienda con funzionalità standard
- Enterprise extended: per azienda con funzionalità avanzate
Tuttavia visto il grandissimo successo riscosso da DBMS gratuiti come MySQL e PostregeSQL ( i quali saranno trattati nei prossimi articoli) e visto inoltre l’andamento del mercato, l’IBM ha rilasciato DB2 Universal Database Express-C, dove la “C” sta per community edition; questa particolare versione poggia sullo stesso motore delle versioni enterprise e condivide le stesse interfacce di programmazione e gli stessi limiti di sistema dell’edizione Express a pagamento. In particolare, il software supporta un massimo di due processori (che se x86, possono essere dual-core) e 4 GB di memoria RAM indirizzabile. Nessuna restrizione, invece, per quel che concerne la dimensione dei database. DB2 Express-C è indirizzato soprattutto agli sviluppatori che necessitano di un DBMS compatto da inglobare all’interno delle proprie applicazioni scritte in C/C++, Java, MS.NET, PHP e altri linguaggi. La licenza che accompagna il software, pur non essendo open source, permette agli utilizzatori di “scaricare, sviluppare, installare, testare, eseguire, inglobare e ridistribuire” il programma e i suoi componenti.
Articolo a cura di: Gianluigi Di Donato
gennaio 29, 2007
DBMS – 1: Database e relativa gestione
Iniziamo con questo articolo una serie di trattazioni riguardanti il mondo dei database e dei DBMS, soffermandoci in particolare sui DBMS maggiormente diffusi e utilizzati nel mondo applicativo.
Con questo articolo illustriamo innanzitutto cos’è un database, come questo viene gestito e qual è l’utilità del DBMS in rapporto ad uno specifico database.
Il termine database viene tradotto, in italiano, in base di dati; concettualmente rappresenta cioè un insieme di dati, dalle caratteristiche omogenee, organizzati tipicamente in maniera in qualche modo ordinata. Per caratteristiche omogenee si vuole intendere una serie di proprietà che delineano un certo oggetto, fatto o persona in modo da renderlo univocamente distinguibile. Questo concetto trae probabilmente origine dalla filosofia. Platone, il filosofo greco, nella sua “teoria delle idee”, affermava infatti che ogni entità (cosa, fatto o persona, per l’appunto) della realtà può essere identificata dalle sue caratteristiche essenziali. La teoria della modellazione delle entità è fondamentale per i database. Per fare un piccolo esempio, potremmo dire che una automobile è caratterizzata, di certo, da un motore, da delle ruote, da un telaio, da un volante. Questo insieme di caratteristiche non è certo esclusivamente identificativo di un’automobile, ma permette di delineare un certo insieme di proprietà che potremmo definire come quello dei veicoli.
Oltre alle entità, un concetto che riveste almeno una paritaria importanza è quello di relazione. E’ chiaro, infatti, che tra più entità possono sussistere diversi tipi di relazioni, intese come legami tra un’entità e l’altra. Per meglio chiarire, si può affermare che sussiste una relazione di matrimonio tra due coniugi, oppure che esiste una relazione di appartenenza di un volante ad un certo veicolo (ad esempio l’automobile di cui sopra); si può ancora affermare che un televisore è uno specifico tipo di elettrodomestico, e dunque l’entità televisore è in qualche modo legata alla più generica entità elettrodomestico.
Entità e relazioni sono nozioni assolutamente propedeutiche per comprendere i database e delineano la modellazione che sta alla base della costituzione dei database, detta modellazione E-R (Entity – Relationship). Semplicemente, basti pensare al fatto che un database viene largamente utilizzato per contenere una serie di dati caratterizzanti una persona (l’entità) legata (in relazione) ad un conto bancario (un’altrà entità).
Altrettanto importante, accanto alle teorie di modellazione dei database, è l’uso di un sistema DBMS nell’ambito dell’uso e della “manipolazione” dei dati contenuti in uno specifico database. Un DBMS (acronimo anglosassone di Data Base Management System) è un sistema costituito da insieme di risorse essenzialmente di tipo software, necessarie alla costruzione, alla manutenzione e all’utilizzo di un insieme organizzato di dati, ovvero un database (secondo quanto sopra chiarito). Riprendendo l’esempio della gestione bancaria dei conti correnti personali, è infatti impensabile che l’aggiornamento delle informazioni relative al cliente (successivo, ad esempio, ad un prelievo) sia effettuato “manualmente” da un operatore a ciò addetto; è necessario che l’aggiornamento (così come vari altri tipi di “manipolazioni”) venga effettuato in maniera del tutto automatica. E’ in questo frangente che il DBMS “si rende utile”, accollandosi l’onere dell’aggiornamento.
L’uso di un DBMS è estremamente importante in quanto permette di garantire, principalmente:
- L’indipendenza tra i dati e l’accesso ottimizzato ed efficiente ai dati stessi (in molti casi, ad esempio, è necessario non permettere l’accesso simultaneo ad un medesimo dato)
- L’integrità e la sicurezza dei dati (i dati non devono essere corrotti o corruttibili, e non dev’essere possibile modificarli in maniera non autorizzata)
- Il ripristino da situazioni impreviste (come crash di sistema)
Esistono svariati DBMS commerciali o disponibili e utilizzabili liberamente, fra i quali i più diffusi sono, rispettivamente:
- Microsoft Access, DB2, Oracle, IBM Informix, SQLServer, tutti proprietari
- MySQL, Postsgres, SAP/DB, liberamente disponibili per l’uso
Articolo a cura: Sebastiano Sacco
Risorse di riferimento: http://www.digitaltrust.it, http://www.sitepoint.com/, http://www.oracle.com