PENSIERO RELAZIONALE
Luglio 2004
NUOVA TEORIA DEL PENSIERO RELAZIONALE
Introduzione
La nostra presentazione rivolge la sua attenzione al mondo dei database, soffermandosi in
particolare sul concetto di db relazionale e i sui problemi che sta incontrando ormai da qualche
anno.
Analizzeremo anche i modi con i quali è stato possibile, fino ad oggi, non abbandonare l’idea che
sta alla base degli RDBMS, soffermandoci sul concetto di denormalizzazione, per poi arrivare ad
illustrare le vie alternative che si pensa porteranno ad una nuova generazione di database.
Situazione Attuale
Il database relazionale, vecchio cavallo da tiro del mondo IT sembra ormai un po’ affaticato.
Tuttavia non sembra ancora venuto il momento di mandarlo in pensione, in quanto rappresenta
una delle principali fonti di guadagno delle più grandi case dell’informatica.
Attorno al suo commercio ruota un mercato di circa 12 milioni di dollari cosi ripartiti:
Sybase
5%
Altri
15%
Oracle
40% ↓
Microsoft
10%
IBM
30% ↑
Come si può notare dal grafico Oracle detiene il primato col 40%(percentuale in diminuzione),
IBM il 30%(percentuale in aumento), Microsoft il 10%(percentuale in aumento).
La situazione dal lato produttori pertanto, di fronte alla necessita di un cambiamento, non si
può dire che sia felice.
Anche dal lato consumatori la situazione non è altrettanto rosea: infatti la maggior parte degli
utenti si lamentano della lentezza di calcolo degli RDB
Le Banche non hanno più il tempo necessario per effettuare i log delle transizioni durante la
notte prima della riapertura.
Gli operatori di borsa, che sono più sensibili ai lievi cambiamenti di mercato e devono poter
operare in tempo reale, si lamentano di questa lentezza così come i più grandi gestori di
telecomunicazioni come Vodafone che hanno a che fare con ingenti quantità di dati.
Le origini
Questa è una buona occasione per esaminare il ruolo del database relazionale e le possibili
alternative, dal momento che ci troviamo in una situazione intermedia tra due eventi
particolarmente significativi.
Nell’aprile del 2003 infatti, Edgar Codd, il creatore del db relazionale, è morto all’età di 79
anni. Quest’anno cade il 40°anniversario dell’invenzione del termine “database”.
Questo termine venne usato per la prima volta all’inizio degli anni sessanta per indicare alcune
applicazioni militari che producevano grandi quantità di dati.
Tuttavia prima di arrivare alla generazione di database relazionale, si è passati attraverso altre
tre generazione a partire dagli inizi degli anni ’60.
Ogni generazione cercava di risolvere i problemi di quella precedente cioè come sono organizzati
i dati e come viene implementata questa organizzazione.
Ogni generazione è stata etichettata in base al modo in cui organizza(o “vede”) i dati che deve
archiviare.
Le tre generazioni precedenti al database relazionale sono quelle dei database “flat file”,
gerarchici e di rete.
Modello Relazionale
Il modello relazionale di Codd si basa un una definizione matematica di relazione: "La relazione
è il prodotto cartesiano tra due o più insiemi".
Codd riprende questa definizione e formula la teoria del database relazionale basato su tabelle,
formate da tuple, che sono funzioni che associano dei valori agli attributi della tabella. Le
tabelle interagiscono tra loro su relazioni logiche determinate dal significato dei dati.
Il database relazionale si presenta come un modello puro, in quanto unicamente basato sui dati.
Al contrario dei modelli precedenti, che usavano puntatori per descrivere le relazioni tra le
entità, in questo modello tutte le relazioni sono basate sul confronto e significato dei dati
contenuti nelle tabelle.
E' un modello elegante poichè costruito su tabelle che descrivono chiaramente il significato e lo
scopo dei dati contenuti nel database.
Caratteristica fondamentale del database relazionale è che slega totalmente l'utente dal dover
conoscere come è implementato a livello fisico il database. Questo è stato ottenuto anche grazie
allo sviluppo di SQL, linguaggio dichiarativo che implementa ottimamente questa funzione.
Codd insieme alla definizione di database relazione, espone dei processi di normalizzazione, che
hanno lo scopo di portare il database ad assumere una forma corretta in base alla defizione da
lui data.
Un passaggio fondamentale si ha nella terza forma di normalizzazione, che ha come scopo
principale eliminare ogni tipo di ridondanza dei dati (poichè la ridondanza crea incongruenza tra
i dati).
Questo passaggio però porta il database a crescere in modo elevato poichè per eliminare
ridondanza si è quasi sempre costretti ad introdurre nuove tabelle. Un elevato numero di tabelle
causa notevoli problemi nell'efficienza delle interrogazioni che per forza di cose saranno
caratterizzate da un elevato numero di join (operato causa principale del rallentamento delle
prestazioni degli attuali DBMS).
Questo è un grosso problema sia per gli utenti e gestori della rete si per le aziende che devono
gestire enormi quantità di dati.
Per questo motivo in questi anni si è passati a una Denormalizzazione dei database che implica
l'inserimento di dati rindondanti per velocizzare l'interrogazione delle tabelle di dati. Questo
però ha portato ad una pardita di purezza ed eleganza dei database relazionali.
Soluzioni alternative
Esistono quindi due soluzioni alternative:
 L’uso della forza bruta: SMP, GRID/UTILITY COMPUTING
 L’uso dell’intelligenza: database XML
L’uso della forza bruta consiste nell’aumentare brutalmente l’hardware per sopperire alle
inefficienze del software.
SMP
Si tratta di piattaforme multiprocessore.
Sono ormai considerate un “vicolo cieco” in quanto possono andare bene per alcune applicazioni
di nicchia, ma non per la maggior parte degli utenti.
Ciò è dovuto al fatto che questo tipo di tecnologia, ad oggi, risulta di difficile sviluppo. Si
ottenuti buoni risultati con 8 processori ma già a 32 le difficoltà aumentano molto.
GRID/UTILITY COMPUTING
Grid: si intende la capacita di utilizzare “assieme” il power processing di molti piccoli processori
dislocati in luoghi diversi e connessi attraverso i protocolli internet.
Consente aumenti apparentemente infiniti a livello di capacità di storage
Utility: insieme di software messi a disposizione nella grid che permettono la gestione
automatica di complesse operazioni
Secondo IBM l’utility computing significa minimizzare l’intervento umano affidando ai software
l’automatica gestione delle operazioni più complesse, riducendo i costi
XML
Una nuova strada intrapresa nell'ultimo periodo è basata su una definizione data da Williams che
dice che è arrivato il momento di slegare l'utente anche dalla conoscenza della struttura logica
del database. Per raggiungere questo obbiettivo le grandi aziende prodruttrici di DBMS stanno
cercando un linguaggio adatto. Negli anni '90, anche sulla spinta data da java, si era pensato di
raggiungere questo obbiettivo con la programmazione ad oggetti, idea decaduta nel breve
periodo. In questo ultimo periodo si è avuta nuova spinta da XML, linguaggio inzialmente
comparso per la realizzazione di siti web altamente personalizzabili, ma che per le sue
caratteristiche si sta dimostrando adatto anche all'implementazione dei database.
XML è un linguaggio di tipo gerarchico, è possibile vederlo come un filesystem, cioè organizzato
ad albero.
Si stanno sviluppando linguaggi come XPath o XML-QL che hanno lo scopo di andare ad
interrogare questo codice XML come se fosse un filesystem. I dati sono contenuti all'interno dei
tag terminali (i file per i FS). Ogni tag intermedio identifica a che famiglia ci si sta riferendo.
Questa idea è portata pesantemente avanti da Oracle che in questo ultimo anno ha visto calare
la sua quota di mercato, e cerca in questa nuova filosofia nuova spinta per i suoi affari.
Questo linguaggio risolve decisamente bene il problema dell'alto numero di tabelle, senza
perdere in chiarazza e purezza.