Database management system: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Database multidimensionali: La precedente era completamente sbagliata.
Riga 82:
 
=== Database multidimensionali ===
I database multidimensionali sono un paradigma definito ancora una volta da Codd per sopperire alle scarse performance offerte dai database relazionali nel caso di utilizzo delle basi di dati stesse per processi di analisi (on line analitical process, OLAP). Tali sistemi consentono di effettuare analisi su enormi quantità di dati con efficenza, cosa non possibile su database relazionali più adatti a gestire transazioni (on line transaction process, OLTP).
Presto alcuni DBMS pseudo-relazionali, come [[Oracle]] o [[Sybase]], conquistarono grandissime quote di mercato anche se non erano completamente aderenti al lavoro originale di Codd. Come risultato, l'implementazione di interrogazioni con questi sistemi su database perfettamente aderenti agli standard risulta essere assai poco efficiente. Ad esempio, per ricercare l'elenco degli utenti che hanno come cognome "Rossi", tali DBMS cercano le chiavi primarie nella tabella "Utenti", dopodiché cercano nella tabella "Indirizzi" le istanze con quella chiave nella colonna corrispondente. Anche se ciò è trasparente all'utente, che percepisce una singola operazione, il DBMS compie un lavoro computazionalmente assai oneroso.
 
Da fine anni '90 pressoché ogni database relazionale commerciale ha al suo interno un motore multidimensionale per effettuare analisi.
Per risolvere questo problema i programmatori hanno adattato alcuni standard per migliorare le performance dei sistemi; tali adattamenti hanno però causato degli "extra-costi" in termini di ridondanza di dati e controlli per assicurare la consistenza delle basi di dati.
 
I database multidimensionali, ignorano la indipendenza tra gli aspetti fisici e logici della base di dati insita nel modello relazionale, e al contrario, lasciano la definizione dei puntatori ai programmatori. Invece di cercare l'indirizzo del Signor Rossi in diverse tabelle, il DBMS memorizza un puntatore al record "Indirizzo". In effetti, se il dato "appartiene" a un certo record nella "tabella padre", questo può essere memorizzato nella stessa area di memoria del primo, e in tal modo è possibile velocizzare l'accesso. Naturalmente il dato deve appartenere solamente a un dato-padre.
 
Questo tipo di implementazione fisica dei dati può (e dovrebbe) essere fatta in questi database pseudo relazionali, pur mantenendo una indipendenza logica: il programmatore dovrebbe vedere solamente la chiave primaria che poi andrebbe "tradotta" dal DBMS in un puntatore.
 
A causa degli scarsi risultati in termini di tempo di accesso ai dati, spesso dovute a cattive implementazioni di questi concetti, i database multidimensionali hanno avuto scarso successo, anche se molti concetti sono stati ripresi dai database a oggetti.
 
=== DBMS a oggetti ===