Storia dell’Informatica e del Calcolo Automatico Prof.ssa F. Perla La storia delle basi di dati Realizzato da: Coppola Maria TEC 0031 Miranda Rosa TEC 0036 D.P.1 Prof. Giunta 1 La preistoria dei DB Probabilmente il più glorioso (ed a tutt' oggi utilizzato) antenato dei database relazionali odierni può essere identificato con la sana e vecchia agenda telefonica. In effetti se guardiamo come è fatta la nostra agenda scopriamo una notevole affinità con i sui parenti più tecnologici attuali. Un’agenda è organizzata tramite un indice (la serie di linguette sul fianco che ci permette di accedere più rapidamente a tutti i nominativi che iniziano con una certa lettera) che gestisce una tabella composta da colonne che identificano il tipo di dato sotto riportato (nome, numero di telefono, a volte indirizzo) all' interno delle registrazioni che , pur differendo l' una dall' altra per i dati riportati al loro interno "hanno tutti la stessa struttura", cioè riportano le stesse informazioni nella medesima maniera. I dati in formato testo Il primo tentativo compiuto dagli informatici per riversare questo tipo di oggetti in un “qualcosa" trattabile dalle loro grosse calcolatrici corrisponde al nome di CSV (Comma Separated Value) I dati in formato testo Cioè un banalissimo file di testo dove ogni informazione (numero di telefono di Pino, nome di Gino, indirizzo di Tino) è separata dalle altre tramite un carattere particolare (normalmente una virgola) ed ogni record è separato dagli altri tramite un' altro carattere (normalmente il carattere di "a capo"). Ovviamente questo sistema era decisamente embrionale, in quanto comunque per trovare all' interno di un file del genere una informazione specifica era spesso necessario scorrerselo quasi tutto ed in modo poco pratico per trovare quanto si ricercava. La comparsa degli indici La logica evoluzione del CSV fu l'ISAM (Indexed Sequential Access Method), che differiva dal CSV solo per il fatto che i record non erano "buttati dentro a casaccio" (cioè in ordine di inserimento), bensì veniva definito un ordinamento (tipicamente nel caso della nostra agenda l' ordine alfabetico sui cognomi) Tale ordinamento veniva sfruttato sia in scrittura ("dove devo mettere il record del telefono di Anna?" "sotto la lettera A tra Anita ed Antonio") sia in lettura ("dove hai infilato il numero di telefono di Pietro?" " lettera P, tra Paolo e Pinocchio") permettendo in questo modo di abbreviare incredibilmente i tempi di ricerca di una data informazione. Per riuscire poi a gestire ancora meglio il tutto si crearono anche delle specie di "archivi sussidiari", detti indici, in cui veniva registrato solo l' ordine dei vari record senza tutte le altre informazioni, il che permetteva di andare a svolgere le proprie ricerche in questo "riassunto" in modo molto più veloce (meno roba da leggere=ci metto di meno a leggerla) e poi "puntare diritti" sul database completo per leggere tutto il record una volta che si sapeva dov'era. A questo punto parecchi matematici di notevole ingegno si misero a cercare metodi per rendere ancora più veloce l' accesso alle informazioni che ci servivano sfornando sistemi di ricerca dai nomi fantasiosi come "ricerca dicotomica" o farfalla”. "a Si sono sviluppati così tutti quei sistemi oggi definiti "Database non relazionali" (in contrapposizione ai database relazionali che vedremo dopo) di cui forse i più famosi sono stati i database B-Trieve e DBIII-like (clipper, DBIII, DBIV ecc) Con l'evoluzione di questi ultimi i database ebbero una notevole diffusione e quindi iniziarono a nascere richieste di affidabilità e di prestazioni sempre maggiori, con uno sviluppo teorico notevole dietro ad essi, che permetteva a questo punto di affrontare diversi problemi. L’evoluzione dei DB Inizio anni ’60: Charles Bachman (Eletric) progetta il primo DBMS (Integrated Data Store), basato sul modello reticolare. Bachman vincerà il primo ACM Turing Award nel 1973. Fine anni ’60: l’IBM sviluppa l’Information Management System (IMS), basato sul modello gerarchico e usato tutt’oggi. 1970: Edgar Codd (IBM) propone il modello relazionale. Codd vincerà l’ACM Turing 1981. L’evoluzione dei DB Anni ’80: il modello relazionale vince su altri, e si diffondono i DBMS basati su di esso. Il linguaggio SQL viene standardizzato come linguaggio per DBMS basati sul modello relazionale. Anni ’90: sulla spinta di intense ricerche, i DBMS relazionali divengono sempre più sofisticati e diffusi (DB2, Oracle, Informix). Nel 1999 James Gray vince l’ACM Turing Award per il suo contributo alla gestione delle transazioni. L’evoluzione dei DB Recentemente: I DBMS si integrano con strumenti WEB, e ampliano il loro spettro di utilizzazione. Inizio anni '60 I calcolatori diventano redditizi per le aziende private con l’aumento della possibilità di immagazzinamento dei dati. Due modelli principali di dati sono stati sviluppati: modello della rete (Codasyl) e gerarchico (IMS). Inizio anni '60 Charles W. Bachman, che ha realizzato negli anni ‘60 per General Electric il primo vero DBMS della storia ("IDS"), fondò il "Database Task Group", all'interno del "Codasyl“ (Conference on data system languages), il gruppo di lavoro dedicato alla creazione e standardizzazione del linguaggio di programmazione COBOL. Negli anni ’70: Database Navigazionali Nel 1971 tale standard fu prodotto e prese il nome di "Approccio Codasyl"; presto furono disponibili sul mercato una serie di prodotti basati su tale approccio. Database Navigazionali Negli anni ’70: Database Navigazionali L’approccio Codasyl era basato sulla navigazione manuale in un insieme di dati disposti sotto forma di rete. Alla prima apertura del programma, il programma si apriva sul primo dato disponibile, contenente, tra le altre cose un puntatore ai dati successivi. Per trovare un dato il programma attraversava la serie di puntatori fino a trovare il dato corretto. Negli anni ’70: Database Navigazionali Delle semplici '"query" come "Trova tutte le persone nate in Svezia" richiedevano l'attraversamento dell'intero set di dati. Non esisteva, dunque, alcuna funzione di ricerca; oggi, questo potrebbe sembrare una limitazione, ma all'epoca, essendo i dati archiviati su nastro magnetico, operazioni come quelle evidenziate sopra non erano particolarmente costose in termini di tempo. Negli anni ’70: Database Navigazionali Nel 1968, la IBM sviluppò un proprio sistema DBMS, chiamato IMS. IMS era uno sviluppo di un programma utilizzato nelle missioni Apollo sui Sistemi/360 e utilizzava un sistema simile all'approccio Codasyl, con l'unica differenza di avere un sistema gerarchico anziché a rete. Negli anni ’70: Database Navigazionali Ambedue le soluzioni presero poi il nome di "database navigazionali" a causa del metodo di consultazione che era stato previsto. Negli anni ’70: Database Navigazionali Inoltre, Charles Bachman, in occasione della premiazione nel 1973 in cui ha ricevuto dalla Association for Computing Machines (ACM) il prestigioso premio Alan Turing per le sue attività pionieristiche nel campo del database, presentò un lavoro intitolato "Il programmatore come navigatore". IMS è abitualmente classificato come un database gerarchico mentre IDS e IDMS (ambedue database CODASYL), CINCOMs e TOTAL sono classificati come database a rete. A.M. Turing Award Lo A.M. Turing Award è assegnato annualmente dalla Association for Computing Machinery, (ACM), ad una personalità che eccelle per i contributi di natura tecnica che ha dato alla comunità informatica. Vengono considerati contributi al settore dei computers duraturi e di elevata importanza tecnica. Il premio è intitolato al matematico inglese Alan Mathison Turing (1912 - 1954), in riconoscimento del suo contributo unico e originale alla nascita delle attività di calcolo mediante dispositivi automatici. Spesso il Turing Award viene chiamato il "premio Nobel del calcolo automatico". Ogni vincitore tiene una lezione che sarà pubblicata su un periodico dell'ACM. Database Relazionali Negli anni ’70: Database Relazionali Edgar Codd lavorava alla sede californiana della IBM come ricercatore sulla nascente tecnologia degli hard disk quando osservò l'inefficienza dell'approccio Codasyl con la nuova modalità di memorizzazione dei dati, inefficienza principalmente dovuta all'assenza di una funzione di ricerca. Database Relazionali Nel 1970 Codd cominciò a produrre diversi documenti schematizzanti un nuovo approccio alla costruzione delle basi di dati, culminati nel "Modello relazionale per Basi di dati condivise“ ("A Relational Model of Data for Large Shared Data Banks"). In questo articolo, descrisse un nuovo sistema per archiviare e modificare grandi quantità di dati. Invece di utilizzare delle "righe" (in inglese, ma anche molto usato in italiano: "record" o anche "tuple") collegate tra di loro attraverso un qualche tipo di struttura "ad albero", come in Codasyl, ritenne di utilizzare una "tabella" di righe a lunghezza fissa. Questo sistema sarebbe stato molto inefficiente nell'archiviazione di dati "sparsi", in cui la tabella avrebbe potuto avere diverse "celle" vuote; tale errore di impostazione fu corretto dividendo i dati in diverse tabelle, in cui gli elementi opzionali venivano spostati, anziché sprecare spazio nella tabella principale. Ad esempio, un utilizzo comune delle basi di dati è quello di registrare delle informazioni sugli utenti: il loro nome, informazioni di accesso, indirizzo e numeri di telefono. • In un database navigazionale tutti questi dati sarebbero stati memorizzati in un unico "record", e gli elementi non presenti (ad esempio un utente di cui non sia noto l'indirizzo) sarebbero stati semplicemente omessi. • Al contrario, in un database relazionale, le informazioni sono state divise, ad esempio, nelle tabelle "utente", "indirizzi", "numeri di telefono": solo se i dati sono presenti viene creata, nella rispettiva tabella, una tupla. La chiave di volta del sistema sta nel collegamento delle tabelle: nel modello relazionale, per ogni record viene definita una "chiave", ovvero un identificatore univoco della riga. Nella ricostruzione delle relazioni, l'elemento di riferimento, che distingue una riga da un'altra è proprio questa "chiave" e viene richiamata nella definizione della relazione. La chiave può essere uno dei dati stessi che vengono memorizzati (as esempio, per la tabella utenti, il "Codice Fiscale" della persona), o un campo che viene aggiunto specificatamente per questo scopo (spesso chiamato "OID" - "Object IDentifier"). Questa operazione di "riunificazione" dei dati non è prevista nei linguaggi di programmazione tradizionali; mentre l'approccio navigazionale richiede semplicemente di "ciclare" per raccogliere i diversi record, l'approccio relazionale richiede al programma di "ciclare" per raccogliere le informazioni riguardanti ogni record. Codd, propose, come soluzione, la creazione di un linguaggio dedicato a questo problema, un linguaggio che, più tardi, si sarebbe sviluppato nella codifica che oggi è utilizzata universalmente e che è il mattone fondamentali delle basi di dati: SQL. Utilizzando una branca della matematica chiamata "calcolo delle tuple", dimostrò che questo sistema era in grado di compiere tutte le normali operazione di amministrazione dei database (inserimento, cancellazione, etc.) e che inoltre consentiva di disporre di uno strumento semplice per trovare e visualizzare gruppi di dati tramite un'unica operazione. LA IBM cominciò a implementare questa teoria in alcuni prototipi all'inizio degli Anni '70, come nel "System R". La prima versione fu realizzata nel 1974/75 con uno strumento "monotabella"; negli anni successivi furono studiati i primi sistemi che potessero supportare la suddivisione dei dati in tabelle separate, utile, come abbiamo visto, per la separazione dei dati opzionali in tabelle diverse da quella principale. Versioni "multiutente" furono realizzate nel 1978 e nel 1979; negli stessi anni fu standardizzato il linguaggio SQL. La superiorità di questo sistema rispetto a Codasyl fu quindi evidente e la IBM passò a sviluppare una versione commerciale di "System R", che prese il nome di "SQL/DS" prima e di "Database 2" (DB2) infine. Il lavoro di Codd, venne proseguito presso l'università di Berkeley da parte di Eugene Wong e Michael Stonebraker. Il loro progetto, chiamato INGRES (Interactive Graphics and Retrieval System) e finanziato tramite fondi destinati alla creazione di un database geografico, vide la luce nel 1973 e produsse i primi risultati nel 1974 anche grazie all'opera di numerosi studenti che si prestarono quali programmatori; quasi 30 persone lavorarono al progetto. INGRES era assai simile a "System R" e prevedeva un linguaggio alternativo a SQL, chiamato QUEL. Molte delle persone coinvolte nel progetto si convinsero della fattibilità commerciale dello stesso e fondarono imprese per entrare nel mercato con questo prodotto: Sybase, Informix, NonStop SQL e alla fine Ingres stessa naquero quali "spin-off" per la diffusione di INGRES all'inizio degli Anni '80. Perfino Microsoft SQL Server è, per certi versi, una derivazione di "Sybase" e, quindi, di INGRES. Solamente la Oracle di Larry Ellison partì utilizzando un approccio diverso, basato sul "System R" della IBM, e alla fine prevalse sulle altre compagnie con il suo prodotto, lanciato nel 1978. Persone che hanno lavorato al SYSTEM-R Michel Adiba (1979-1980): designs for R* snapshots, derived relations, distributed catalog. Mike Blasgen: RSS index component, manager of RSS, manager of System R. Don Chamberlin: manager of RDS, co-designer of SQL. Ron Fagin: authorization, indexing, and theory (including normalization). Persone che hanno lavorato al SYSTEM-R Jim Gray: IBM: RSS transaction component; SQL/DS consulting, SQL/DS, DB2, IMS Fast Path efforts; Tandem: NonStop SQL; FastSort, and Pathmaker; DEC: Rdb, TP and AlphaSort; Microsoft: NTclusters. Don Haderle: DB2 (1978-): chief architect, IBM Fellow, architecture and development of IBM's other relational database managers and related products. Theo Härder (1976): RSS sort/merge component. Persone che hanno lavorato al SYSTEM-R Bob Jolls: manager of SQL/DS at Santa Teresa; manager of VS/QUERY (QMF); manager of DB2 (1980-1981). Bruce Lindsay: RSS storage pools; R* architect. Raymond Lorie: XRM; RSS: buffer management, shadow pages, transaction management; RDS: compilation of SQL, optimization. Paul McJones (1975-1976): RSS crash recovery. Persone che hanno lavorato al SYSTEM-R Jim Mehl: System R: SQL parser, MVS port, Boeing joint study contact. Roger Miller (1979-): DB2: lead strategist, planning, and development (SQL, languages, install, security, audit, standards, performance, concurrency, and availability). C. Mohan (1981-): R* transaction management, ARIES, DB2, MQSeries and Lotus Domino recovery and locking. Mo Mresse (1977-1978): identification and authorization concept and programming (GRANT-REVOKE statements in SQL) in the group of Don Chamberlin. Persone che hanno lavorato al SYSTEM-R Giovanni Maria Sacco (1980): buffer management. Mario Schkolnick: RDS optimizer, database design tools. Pat (Griffiths) Selinger: RDS optimizer, precompiler, authorization; R* optimizer and compiler. Persone che hanno lavorato al SYSTEM-R Don Slutz: RDS; Esvel; Tandem NonStop SQL. Paolo Tiberio (1978-1979, 1981): Update cost evaluation, System R-based database design tool. Brad Wade: RDS: authorization, code generator, catalog creation, performance, UFI, installation procedures. BIBLIOGRAFIA DEI PROGETTI “SYSTEM R” ADIB 80 Michel E. Adiba, Bruce G. Lindsay. "Database Snapshots" Proceedings of VLDB 1980, p. 86-91. ASTR 75a M. M. Astrahan and D. D. Chamberlin. "Implementation of a Structured English Query Language" Communications of the ACM, Vol. 18, No. 10, October 1975. ASTR 75b M. M. Astrahan and R. A. Lorie. "SEQUEL-XRM: A Relational System" Proceedings of ACM Pacific Regional Conference, San Francisco, CA., April 1975, p. 34. ASTR 76 M. M. Astrahan, M. W. Blasgen, D. D. Chamberlin, K. P. Eswaran, J. N. Gray, P. P. Griffiths, W. F. King, R. A. Lorie, P. R. McJones, J. W. Mehl, G. R. Putzolu, I. L. Traiger, B. Wade, and "System R: A Relational Approach to Database Management" ACM Transactions on Database Systems, June 1976, p. 97. online ASTR 79 M. M. Astrahan, M. W. Blasgen, D. D. Chamberlin, J. N. Gray, W. F. King, B. G. Lindsay, R. A. Lorie, J. W. Mehl, T. G. Price, G. R. Putzolu, M. Schkolnick, P. P. Selinger, D. R. Slutz, H. P. Tiberio, I. L. Traiger, B. W. Wade, and R. A. Yost. "System R: A Relational Data Base Management System" IEEE Computer, May 1979, p. 43. ASTR 80a M. M. Astrahan, W. Kim, and M. Schkolnick. "Performance of the System R Access Path Selection Mechanism" Proceedings of the IFIP Congress, Melbourne, Australia, 1980. BLAS 77a M. W. Blasgen and K. P. Eswaran. "Storage and Access in Relational Databases" IBM Systems Journal, No. 4, 1977, p. 363. BLAS 77b M. W. Blasgen, R. G. Casey, and K. P. Eswaran. "An Encoding Method for Multifield Sorting and Indexing" Communications of the ACM, Nov. 1977, p. 874. BLAS 79 M. Blasgen, J. Gray, M. Mitoma, and T. Price. "The Convoy Phenomenon" ACM Operating Systems Review, Vol. 13, No. 2, April 1979, p. 20. BLAS 81 M. W. Blasgen, M. M. Astrahan, D. D. Chamberlin, J. N. Gray, W. F. King, B. G. Lindsay, R. A. Lorie, J. W. Mehl, T. G. Price, G. R. Putzolu, M. Schkolnick, P. G. Selinger, D. R. Slutz, H. I. L. Traiger, B. W. Wade, and R. A. Yost. "System R: An Architectural Overview" IBM Systems Journal, Vol. 20, No. 1, Feb. 1981, p. 41. BOYCE 73 R. F. Boyce and D. D. Chamberlin. "Using a Structured English Query Language as a Data Definition Facility" IBM Research Report RJ1318, San Jose, CA., December 1973. BOYCE 75 R. F. Boyce, D. D. Chamberlin, W. F. King, and M. M Hammer. "Specifying Queries as Relational Expressions: the SQUARE Data Sublanguage" Communications of the ACM, November 1 CHAM 74 D. D. Chamberlin and R. F. Boyce. "SEQUEL: A Structured English Query Language" Proceedings of the ACM-SIGMOD Workshop on Data Description, Access, and Control, May 1974. CHAM 75 D. D. Chamberlin, J. N. Gray, and I. L. Traiger. "Views, Authorization, and Locking in a Relational Database System" Proceedings of the 1975 National Computer Conference, p. 425. CHAM 76a D. D. Chamberlin, M. M. Astrahan, K. P. Eswaran, P. P. Griffiths, R. A. Lorie, J. W. Mehl, P. Reisner, and B. W. Wade. "SEQUEL 2: A Unified Approach to Data Definition, Manipulation, Control" IBM Journal of Research and Development, Nov. 1976, p.560. (Also see errata in January 1977 issue.) CHAM 76b D. D. Chamberlin. "Relational Database Management Systems" Computing Surveys, March 1976, p. 43. Sviluppi del lavoro di Codd Il lavoro di Codd venne continuato nella Università di Uppsala (in Svezia) dove fu sviluppato un prodotto, Mimer SQL, commercializzato nel 1984. Con Mimer SQL è stato introdotto il concetto di transazione, successivamente importato in quasi tutti i DBMS. Database a oggetti A partire dai primi anni ‘90, hanno cominciato a diffondersi i database a oggetti (ODBMS). Nel modello dei dati a oggetti le entità del dominio vengono modellate con oggetti e relazioni fra oggetti. Un ODBMS offre le funzioni necessarie a rendere persistenti collezioni di oggetti e le relazioni fra di loro. La naturalezza nel rappresentare dati complessi e l'abilità ad accedervi in modo efficiente è il principale punto a favore di un ODBMS rispetto a un RDBMS. Database a oggetti A differenza del modello relazionale, nel modello a oggetti gli attributi di un oggetto possono essere di qualunque tipo: in particolare, un oggetto può contenere altri oggetti. Inoltre l'ODBMS può essere istruito per privilegiare gli accessi a gruppi (cluster) di oggetti eterogenei, in modo che il caricamento di un oggetto con tutte le sue componenti si svolga in un'operazione unica di accesso al disco; questa stessa operazione nei RDBMS deve essere eseguita tramite una o più JOIN, che è una delle operazioni più costose di un RDBMS Database a oggetti Pensiamo, per esempio, a come rappresentare il contorno di una figura CAD in un RDBMS. Un contorno è una sequenza di punti. Il modello dati relazionale non permette di definire un nuovo tipo elementare "punto". Il progettista del DB relazionale dovrà quindi usare un'unica tabella con quattro colonne per contenere tutti i punti del sistema. Due colonne servono per mantenere le coordinate; una contiene l'identificativo del contorno cui appartiene il punto, la quarta il numero di sequenza del punto nel contorno. Database a oggetti Per estrarre dal DB un contorno, prima bisogna estrarre dalla relazione tutti i punti (presumibilmente alcuni milioni) quelli che corrispondono al contorno che stiamo cercando, quindi ordinarli secondo il numero di sequenza, infine trasferire il risultato in un formato manipolabile nell'ambiente di programmazione: tipicamente un vettore dinamico di oggetti Point. Altrettanto laboriosa sarà l'operazione inversa. La macchinosità e l'inefficienza di tutto ciò sono tali da sconsigliarlo in qualsiasi CAD reale. Database a oggetti Un database a oggetti non solo può rappresentare direttamente la sequenza ordinata dei punti, senza trasformarla in tabella, ma può essere istruito a mettere i punti sulla stessa pagina di disco su cui si trova la figura geometrica cui si riferiscono. Tutti gli ODBMS prevedono un modo perché un'applicazione possa dare questi "suggerimenti" al run time del database, anche se non esiste un modo standard; un meccanismo tipico è di passare al costruttore di un oggetto il riferimento a un altro oggetto già sul database, come indicazione che i due devono stare possibilmente vicini. Database a oggetti La prima differenza che salta agli occhi fra il mondo dei database a oggetti e quello relazionale è la mancanza di interoperabilità. A un database a oggetti si può accedere solo passando per il DBMS che lo gestisce: per esempio, a un database ObjectStore può accedere solo un programma scritto per ObjectStore e non, per esempio, per Objectivity/DB; inoltre, anche se la maggior parte dei database a oggetti sono supportati su una molteplicità di piattaforme (p.e. Win32, Sun, HP, eccetera), non tutti sono realmente multipiattaforma, cioè non permettono p.e. a un cliente su Windows di accedere a un database su server Unix (alcuni database a oggetti tuttavia lo permettono). Object Database Management Group Per porre rimedio a questo stato di cose, che alcuni pensano sia il più grande difetto degli ODBMS rispetto ai relazionali e, quindi, l'ostacolo maggiore alla loro diffusione, è nato ODMG. ODMG (Object Database Management Group) è un consorzio di costruttori di ODBMS. Il suo fine è di definire un linguaggio astratto per la definizione dello schema del database (ODL: Object Definition Language), un linguaggio standard per le interrogazioni sul database (OQL : Object Query Language) e il mapping di questi linguaggi astratti sui linguaggi di programmazione reali. Database a oggetti relazionali Oggi molti DBMS applicano in realtà un misto tra il modello relazionale e il modello a oggetti. Si parla quindi di ORDBMS (Object Relational DBMS). Evoluzione dei database a oggetti • Gestione e memorizzazione delle immagini, audio e video, MMDB • Data Warehouses • Sistemi informativi geografici (GIS) e analisi spaziali Data Warehousing Le potenzialità delle basi di dati si sono concretizzate, nel corso degli anni, in tools quasi sorprendenti, rispetto agli usi di pochi anni fa, in grado di maneggiare il bene “informazione” alla stregua di un qualsiasi altro bene aziendale. Se negli anni settanta le basi dati avevano in prevalenza un ruolo di storage, oggi manager aziendali interrogano quotidianamente il proprio Decision Support System per indagare tra i dati, cercando risposte o smentite alle proprie considerazioni. Il processo attraverso il quale, a partire da dati operazionali, è possibile ottenere informazioni che aiutino i manager nelle analisi dei dati prende il nome di “data warehousing” (magazzino di dati). Data warehousing Un datawarehouse in ambito aziendale fa parte di un sistema informativo la cui materia prima da processare è l’informazione. I suoi obiettivi sono: • la gestione storica dei dati • la facilità di accesso alle informazioni attraverso una visione multidimensionale dei dati • la capacità di fare ipotesi sul futuro E’ realizzato attraverso un processo basato sulla riorganizzazione dei dati esistenti in un DBMS. GIS Un Sistema Informativo Geografico (Geographical Information System, GIS) è un sistema informativo computerizzato che permette l'acquisizione, la registrazione, l'analisi, la visualizzazione e la restituzione di informazioni derivanti da dati geografici (geo-referenziati). Il GIS è una forma di DBMS capace di gestire le posizioni degli “elementi” sul territorio, che si integra interrogazione e visualizzazione. con delle componenti software di GIS Per la rappresentazione dei dati in un sistema informatico occorre formalizzare un modello rappresentativo flessibile che si adatti ai fenomeni reali. Nel GIS abbiamo tre tipologie di informazioni: • geometriche: relative alla rappresentazione cartografica degli oggetti rappresentati; quali la forma (punto, linea poligono), la dimensione e la posizione geografica; • topologiche: riferite alle relazioni reciproche tra gli oggetti (connessione, adiacenza, inclusione ecc…); • informative: riguardanti i dati (numerici, testuali ecc…) associati ad ogni oggetto. GIS Il GIS prevede la gestione di queste informazioni in un database relazionale. L'aspetto che caratterizza il GIS è quello geometrico: esso memorizza la posizione del dato impiegando un sistema di proiezione reale che definisce la posizione geografica dell'oggetto. DBMS multimediali I DBMS multimediali (MMDB) sono sistemi che permettono di memorizzare e recuperare oggetti costituiti da testo, immagini, suoni, animazioni, voce, video, ecc. I MMDB presentano problematiche diverse rispetto ai DBMS tradizionali: • Dimensioni del DB (molto) maggiori • Gestione di media continui (video, audio) • Complessità di modellazione degli oggetti multimediali • Ricerche non necessariamente “esatte” DBMS multimediali Settori applicativi: • • • • • DB medici (TAC, RX) DB scientifici (spectral analysis, molecolari) DB legali (fingerprints, mugshots, copy detection) Publishing (electronic newspaper) Fashion DBMS multimediali Benché a tutt’oggi non esista un modello standard per la descrizione dei MMDB, è opinione comune che tutte le applicazioni non banali debbano considerare una rappresentazione su (almeno) 4 livelli: • Raw Data: descrive i dati multimediali veri e propri, indipendentemente dal loro contenuto. Questo livello è rilevante per gli aspetti di memorizzazione, ma non di ricerca. • Objects Description: a questo livello sono definiti gli “oggetti” multimediale di interesse (es: parti di immagini, elementi di testo). DBMS multimediali • Features (caratteristiche): le feature di un oggetto MM ne descrivono il contenuto in termini di grandezze misurabili (es: colore di un’immagine, spettro di un suono, ecc.) • Concepts: il livello dei concetti usa una rappresentazione semantica del dominio di interesse (background/domain knowledge) per interpretare il contenuto degli oggetti multimediali (“cosa sono” = “quali entità del mondo reale rappresentano”). DBMS multimediali DBMS multimediali Ricerca in un MMDB: • su campi “classici”: trova tutti i film diretti da Brian De Palma • su campi strutturali: trova tutti le pagine Web che contengono un video • su feature: trova tutti gli ECG “simili” a … • concettuali: trova tutte le foto di Raul Bova • su relazioni spazio-temporali: trova tutte le scene (shot) in cui Benigni entra in scena dopo Massimo Troisi Schema riassuntivo a oggetti relazionale a oggetti Modelli di DBMS relazionale reticolare gerarchico x 1960 x 1970 x x 1980 Tempo x 1990 2000 Lista dei DBMS - Software proprietario • ADABAS (Software AG) • Microsoft SQL Server • AskSam • Microsoft Access • DB2 (IBM) • Mimer SQL (Mimer AB) • Caché (InterSystems) • Oracle (Oracle Corporation) • FileMaker Pro (FileMaker Inc.) • Ovrimos • FrontBase • Progress RDBMS (Progress Corp.) • IMS/DB (IBM) • SESAM • Informix (IBM) • Sybase (Sybase Inc.) • Ingres (Computer Associates) • Teradata (NCR Corporation) • InterBase (Borland) • TimesTen (TimesTen Inc.) Lista dei DBMS - Open source • • • • • • • • • Berkeley DB Dataman DBM Emdros Firebird SQL GigaBASE HSQL Database Engine HyperNetDatabase MaxDB (prima SAP DB e ADABAS) • • • • • • • • Metakit MySQL Ozone PicoSQL PostgreSQL SQLite tdbengine ZODB DB2 DB2 è un DBMS prodotto da IBM. La sua prima versione risale al 1983 e, secondo molti, è stato il primo prodotto ad utilizzare il linguaggio SQL. Inizialmente era un DBMS per i mainframe, ma oggi è diffuso su qualsiasi tipo di server, perfino su PDA e altri dispositivi portatili; esistono versioni per GNU Linux, Unix (AIX, HP-UX, Solaris) e MS Windows. I suoi precursori sono DL/1 e IMS/DB, sempre della IBM. DB2 Quando Informix acquistò Illustra e introdusse nel proprio database Universal Server, facendone un DBMS relazionale a oggetti, sia Oracle che IBM dovettero introdurre il concetto di oggetti nei proprio prodotti. Pertanto DB2 è diventato un DBMS relazionale a oggetti. Attualmente, DB2 e Oracle si contendono il primo posto nel mercato dei DBMS. Caché Caché è un DBMS proprietario prodotto da InterSystems. InterSystems usa il termine "post-relazionale" per descriverne le caratteristiche. Caché fornisce accesso tramite SQL, Object e in maniera multidimensionale agli stessi dati. Esistono versioni di Caché sia per Windows, sia per diverse versioni di Unix e distribuzioni di Linux, sia per le piattaforme OpenVMS. Caché La memorizzazione dei dati in Caché avviene utilizzando i b-tree basati su array multidimensionali (conosciutti anche comi il nome di MUMPS globals, sebbene InterSystems preferisca non utilizzare questo termine). Cachè fornisce i linguaggi di sviluppo • Caché ObjectScript • Caché Basic per facilitare al programmatore la creazione e lo sviluppo di applicazioni che interagiscono con il DBMS stesso. Caché Fornisce inoltre interfacce esterne che permettono il Native Object Binding con diversi linguaggi di programmazione quali C++, Java, EJB, ActiveX. Gli accessi relazionali mediante JDBC e ODBC sono implementati tramite Direct Interface e risultano essere molto performanti. Inoltre sono supportati anche accessi mediante XML e Web Services. Caché I principali clienti e utilizzatori di Caché sono i grandi ospedali degli USA, che lo usano per la memorizzazione elettronica dei dati dei pazienti, e istituzioni finanziarie come Ameritrade. I principali concorrenti di Caché sono DB2 di IBM, MS-SQL di Microsoft e Oracle. Caché Rispetto agli altri sistemi relazionali, per quanto riguarda applicazioni simili, Caché può fornire spesso un rendimento più elevato (o a parità di risorse hardware può sostenere un numero maggiore di utenti). Questo vantaggio in performance viene pagato, sempre nel confronto con altri sistemi relazionali, da una perdita di flessibilità; ne risulta la necessità di una formazione specifica per il personale con aggiornamenti diversi dallo standard attuale dei database e delle versioni chiuse del programma, associate a degli specifici strumenti di sviluppo, disponibili presso un solo venditore. FileMaker Pro FileMaker Pro è un database multi piattaforma sviluppato da FileMaker Inc. E’ stato uno dei primi database presentati per Apple Macintosh all'inizio degli anni ottanta. E’ un database che combina potenza e facilità d'uso. È anche conosciuto per la stretta integrazione del database con l'interfaccia grafica. Ad esempio, per modificare un database, basta prelevare un elemento e trascinarlo in un layout/schermo o form. Il motore automaticamente rileverà il nuovo elemento e provvederà a tenerne conto durante le interrogazioni. FileMaker Pro Il programma non si basa sulla filosofia della programmazione orientata agli oggetti, anche se ne mutua molte caratteristiche, infatti viene definito un ambiente di sviluppo "quasi-object" in cui la base dello sviluppo è la manipolazione di entità chiamate oggetti, ma il database non supporta molte delle caratteristiche avanzate previste dal paradigma della programmazione a oggetti. Questa peculiare gestione dei dati lo rende un prodotto unico e, sotto molti punti di vista, lo rende difficile da confrontare con i prodotti concorrenti, dato che questi sono basati su paradigmi diversi. FileMaker Pro E’ disponibile sia per la piattaforma Macintosh, sia per la piattaforma Windows ed è in grado di utilizzare una rete locale mista (composta da computer Macintosh e Windows). E’ un prodotto scalabile, è disponibile una versione per le postazioni degli utenti, per i server e esiste una versione in grado di interfacciarsi a siti web e a dispositivi mobili. Informix Nel 1980, Roger Sippl e Laura King hanno fondato la società Relational Database Systems (RDS). Il loro primo prodotto, Marathon, è stato rilasciato su Onyx, una versione di Unix per i primi microprocessori ZiLOG. In RDS, Sippl and King hanno posto la loro attenzione al mercato dell’emergente SQL e hanno adattato una versione del codice sorgente, pubblicamente disponibile, di Inges alla piattaforma Unix. Informix La disponibilità di un codice ben collaudato ha permesso alla RDS di rilasciare, nel 1981, la sua prima versione di Informix. Essa comprendeva alcuni cambiamenti fondamentali rispetto al sistema Ingres, in particolare: • un adattamento del linguaggio di query QUEL nel suo linguaggio Informer, • un tool per la scrittura di report (ACE), usato per estrarre dati dal database e presentarli all’utente in un formato semplice, • uno strumento per interrogare ed editare interattivamente i dati nel database (PERFORM). Informix La versione finale di questo prodotto, realizzata all’inizio del 1986, è stata la 3.30. Nel 1985, con l’introduzione di un nuovo motore basato su query SQL, è nato INFORMIX-SQL versione 1.10 (la versione 1.00 non è stata mai rilasciata). Tale prodotto comprendeva anche le varianti SQL di ACE e PERFORM. Verso la metà degli anni ’80, grazie alla crescita della popolarità di Unix e di SQL, RDS è diventata una società di successo ed ha cambiato il suo nome in Informix Software. Informix I prodotti INFORMIX-SQL versione 2.00 e INFORMIX-4GL 1.00 comprendevano sia il motore del database, sia i tool di sviluppo (I4GL per i programmatori, ISQL per i non-programmatori). Nel 1989, con il rilascio della versione 9.00, il motore è stato separato dai tool I4GL e ISQL ed ha preso il nome di Informix-SE (Standard Engine). Nello stesso anno è nato un nuovo motore, denominato inizialmente Informix Turbo e successivamente Informix OnLine. La versione 5.00 di Informix OnLine è stata rilasciata alla fine del 1990. Informix Dopo una breve e disastrosa parentesi nel campo dell’office automation, nel 1994 Informix Software è ritornata al mercato sempre crescente dei database server e, in collaborazione con Sequent Computer Systems, ha rilasciato la versione 6.00 di Informix OnLine Dynamic Server. La versione 7.00, nello stesso anno, ha riscosso un enorme successo e ha fatto sì che Informix diventasse il secondo database al mondo, scavalcando Sybase. Informix Nel 1995 Informix ha acquistato Illustra (scritto dagli ex membri del team di Postgres) ed ha concentrato i suoi studi sui database relazionali ad oggetti. E’ nato, così, Informix Universal Server. Nel 1996 la versione 8.00 e la versione 9.00 di Informix Universal Server hanno reso Infomix la più importante fra le società operanti nel campo dei DB relazionali ad oggetti. Informix Nel 1997 una leadership sfortunata e una cattiva amministrazione hanno offuscato i successi di Informix. Il 1° aprile 1997 Informix ha annunciato che il reddito era stato inferiore alle aspettative di 100 milioni di dollari. Nel marzo del 2000, Informix ha acquistato Ardent Software. Questo ha portato alla realizzazione di motori multi-dimensionali, quali UniVerse e UniData. Nel 2001, IBM ha acquistato da Informix la tecnologia dei DB, il marchio, i progetti futuri e i 100.000 clienti associati. Informix Nel novembre del 2002, Phillip White, colui che era alla guida di Informix nel 1997, è stato accusato di frode da un grand joury federale e nel 2004 è stato condannato a 2 mesi di carcere, ad una multa di 10.000 dollari, a due anni di libertà vigilata e a 300 ore di servizio civile. Nel 2004 IBM ha rilasciato il database Open Source Cloudscape. Microsoft SQL Server Microsoft SQL Server è il database relazionale prodotto da Microsoft. Nelle prime versioni era utilizzato per basi di dati mediopiccole, ma negli ultimi cinque anni (con l'uscita della versione 2000) è stato utilizzato anche per la gestione di basi di dati di grandi dimensioni. L'ingresso di Microsoft nel mondo dei database di fascia "entrerprise" risale al 1989, quando cominciò la competizione con Oracle, IBM e Sybase che erano i dominatori del mercato. Microsoft SQL Server La prima versione fu SQL Server per OS/2 ed era quasi identica a Sybase SQL Server 4.0 su Unix. Fino al 1994, Microsoft SQL Server riportava tre copyright della Sybase come indicazione della sua origine. In seguito Sybase cambiò il nome del suo prodotto in "Adaptive Server Enterprise" per evitare confusione con "Microsoft SQL Server". Microsoft SQL Server SQL Server 7.0 è stato il primo database server basato su un'interfaccia GUI. L'attuale versione, Microsoft SQL Server 2000, è stata rilasciata nell'agosto del 2000. Microsoft sta testando il suo successore, SQL Server 2005, e la versione beta è disponibile per il download. Microsoft SQL Server A partire dalla versione 7.0, Microsoft SQL Server è stato dotato di uno strumento, denominato English Query (EQ), che consente agli utenti di fare domande o dare comandi in lingua inglese. Le domande e i comandi vengono tradotti da EQ in query SQL e, dunque, processati da SQL Server. Microsoft ACCESS Access è prodotto dalla Microsoft ed è creato appositamente per l'ambiente Windows. La prima versione, la 1.0, è uscita fra il 1989 e il 1990 quando ancora Windows (alla versione 3.0) non era molto diffuso e lo standard dei programmi database per PC era ancora il DBIII Plus. Intorno al 1993 è uscita la versione 2.0, l'ultima versione precedente l'avvento di Windows 95. Microsoft ACCESS A partire dall'estate del 1995, con l'uscita di Windows 95 è stato rilasciato anche Access 7 (detto anche "per Windows 95") seguito infine, nella primavera del 1997, da Access 97. Nell'estate del 1999 è uscito Access 2000. Come si vede, in media ogni due anni viene rilasciata una nuova versione che a volte è del tutto incompatibile con i formati delle precedenti, creando non pochi disagi fra gli utenti. Oracle Convenzionalmente, con il termine Oracle ci si riferisce ad uno tra i più famosi database management system. La società informatica che lo produce, la Oracle Corporation, è una delle più grandi del mondo. É stata fondata nel 1977 ed ha la sua sede centrale in California. Il fondatore, nonchè importante azionista, è Lawrence J. Ellison. Oracle La società negli ultimi anni si è impegnata pesantemente nell'appoggiare il sistema operativo GNU Linux facendo in modo che tutte le sue applicazioni fossero disponibili sotto questo sistema operativo e garantendo assistenza ai suoi clienti per il sistema operativo stesso. L'altra attività di Oracle dopo i database sono i programmi di enterprise resource planning (ERP) di cui è la terza venditrice a livello mondiale dopo SAP e PeopleSoft e prima di Microsoft e Sage. Recentemente ha lanciato una OPA (offerta pubblica di acquisto) proprio sulla PeopleSoft. Firebird SQL Firebird SQL è un database relazionale molto potente che offre un'ampia gamma di funzioni previste nello standard ANSI SQL-92. Viene sviluppato da FirebirdSQL Foundation (di cui IBPhoenix è uno dei maggiori contribuenti) ed è un progetto open source disponibile per moltissimi sistemi operativi compresi Windows, GNU Linux e praticamente tutti gli altri sistemi operativi stile Unix. Firebird SQL Firebird è stato usato nei sistemi di produzione sotto una varietà di nomi dal 1981. Il suo principale punto di forza sta nella completezza delle funzioni previste da SQL che vengono supportate. Questo lo rende uno dei database open source più potenti attualmente disponibili. MySQL MySQL è un DBMS relazionale, composto da un client con interfaccia a caratteri e un server, entrambi disponibili sia per sistemi Unix che per Windows, anche se prevale un suo utilizzo in ambito Unix. MySQL L’ideatore è Michael Widenius, sviluppatore della compagnia svedese TcX. • 1979 - Michael Widenius sviluppa uno strumento per la gestione di database : UNIREG. • 1994 - la TcX inizia a sviluppare applicazioni per il web utilizzando UNIREG, ma sfortunatamente il prodotto richiedeva troppe risorse per riuscire a generare dinamicamente pagine web. MySQL • La TcX analizza altri prodotti quali SQL e mSQL; quest'ultimo in versione 1.x non supportava nessun indice e quindi aveva performance peggiori di UNIREG. • Widenius contatta Hughes, l'autore di mSQL, per rendere possibile la connessione di mSQL a UNIREG; ma Hughes aveva già apportato modifiche sostanziose a mSQL con la versione 2. • La TcX decide di creare un altro server per database che fosse piu' vicino alle loro esigenze a partire dall'esperienza di UNIREG. MySQL Nel 1995 nasce, così, la versione di MySQL 1.0. Dal 1996, MySQL supporta la maggior parte della sintassi SQL e possiede delle interfacce di linguaggio SQL per 15 diversi linguaggi sia di programmazione che non, compreso un driver ODBC per le piattaforme Windows. Nel 2000, la MySQL AB adotta la licenza GPL (GNU General Public License) per il prodotto MySQL. PicoSQL PicoSQL è un database relazionale client/server che supporta il linguaggio SQL. Le sue caratteristiche principali rispetto ai prodotti concorrenti sono la compattezza, il basso utilizzo di memoria e risorse e la semplicità di installazione e configurazione. Nonostante questo, picoSQL supporta il linguaggio SQL con tutte le sue caratteristiche, gestisce alti livelli di concorrenza e le transazioni. PicoSQL Lo ha sviluppato completamente la Picosoft di Pisa e deriva da un driver ODBC della stessa società che permette di interrogare i file a indice prodotti da applicazioni scritte in COBOL utilizzando strumenti di query e reportistica creati per accedere a database relazionali, come MS Access, Excel, Crystal Report, ecc. Trasformare questo driver in un DB è stato relativamente semplice, per cui l'azienda ha deciso di renderlo disponibile come Open Source. Data la sua “leggerezza” e modularità, picoSQL può essere facilmente adattato per qualsiasi sistema, dal pocket-pc al mainframe. PostgreSQL PostgreSQL è un completo database relazionale ad oggetti con licenza liberale stile BSD. PostgreSQL è un'ottima alternativa sia rispetto ad altri prodotti free come MySQL, Firebird SQL e MaxDB, sia rispetto a quelli a codice chiuso come Oracle, Informix e DB2. PostgreSQL Offre caratteristiche uniche nel suo genere che lo pongono per alcuni aspetti all'avanguardia nel settore dei database. PostgreSQL spesso viene abbreviato come "Postgres", sebbene questo sia un nome vecchio dello stesso progetto. Inizialmente il DBMS si chiamava Ingres ed era un progetto del Berkeley. Nel 1982 il capo progetto, Michael Stonebraker, ha lasciato il Berkeley per commercializzare il prodotto, ma in seguito è tornato all'accademia. PostgreSQL Nel 1985 l'ha lasciata nuovamente per dare vita a un progetto postIngres (Postgres) che superasse gli evidenti limiti dei prodotti concorrenti dell'epoca. La base dei sorgenti di Ingres e di Postgres erano, e sono rimasti nel tempo, ben distinti. Il nuovo progetto puntava a fornire un supporto completo ai tipi di dati, in particolare la possibilità di definire nuovi tipi di dati (UDF, User Defined Types). Vi era anche la possibilità di descrivere la relazione tra le entità (tabelle), che fino ad allora veniva lasciata completamente all'utente. Perciò non solo Postgres preservava l'integrità dei dati, ma era in grado di leggere informazioni da tabelle relazionate in modo naturale, seguendo le regole definite dall'utente. PostgreSQL Dal 1986 gli sviluppatori diffusero un gran numero di articoli che descrivevano il nuovo sistema e nel 1988 venne rilasciato un primo prototipo funzionante. La versione 1 venne rilasciata nel giugno del 1989 per un numero di utenti contenuto. Seguì una versione 2 nel giugno del 1990, in cui il sistema delle regole venne completamente riscritto. PostgreSQL Nella versione 3, del 1991, questo sistema venne riscritto ancora, ma venne aggiunto anche il supporto a gestori multipli di immagazzinamento dei dati e un motore di query migliorato. Nel 1993 vi era già un numero di utenti notevole che inondava il team di sviluppo con richieste di supporto e di nuove features. Dopo aver rilasciato la versione 4, che fu principalmente un ripulimento del codice, il progetto terminò. Sebbene il progetto Postgres fosse ufficialmente abbandonato, la licenza BSD dava modo agli sviluppatori Open Source di ottenere una copia del software per poi migliorarlo a loro discrezione. PostgreSQL Nel 1994 due studenti del Berkeley, Andrew Yu e Jolly Chen aggiunsero a Postgres un interprete SQL per rimpiazzare il vecchio QUEL che risaliva ai tempi di Ingres. Il nuovo software venne quindi rilasciato sul web col nome di Postgres95. Nel 1996 cambiò nome di nuovo: per evidenziare il supporto al linguaggio SQL, venne chiamato PostgreSQL. PostgreSQL Il primo rilascio di PostgreSQL è stata la versione 6. Da allora, ad occuparsi del progetto è una comunità di sviluppatori volontari provenienti da tutto il mondo che si coordina attraverso Internet. Nel gennaio 2005 è stata rilasciata la 8. Sebbene la licenza permetta la commercializzazione del software, il codice di Postgres non è stato sviluppato commercialmente con la stessa rapidità di Ingres. Ad un certo punto, però, Paula Hawthorn (membro originale del team di Ingres) e Michael Stonebraker formarono una società chiamata Illustra Information Technologies per commercializzarlo. SQLite SQLite è una libreria C che implementa un DBMS SQL incorporabile all'interno di applicazioni. Il suo creatore è D. Richard Hipp, che lo ha rilasciato come software Open Source di pubblico dominio, privo di qualsiasi licenza. SQLite Essendo una libreria, non è un processo stand-alone utilizzabile di per sé, ma può essere linkato all'interno di un altro programma. È utilizzabile con C/C++ ed esistono binding anche per altri linguaggi, in particolare Tcl. È integrato nella versione 5 di PHP. Prospetto riassuntivo Produttore Data prima release Licenza software InterSystems ? Proprietaria IBM 1982 Proprietaria FileMaker Inc. Inizio anni '80 Proprietaria Firebird FirebirdSQL Foundation 25 luglio 2000 Licenza pubblica InterBase Informix Informix Software 1981 Proprietaria Berkeley University, Computer Associates 1980 CA-TOSL Borland 1985 Proprietaria MySQL AB, SAP AG ? GPL o proprietaria Microsoft Access Mirosoft 1989-1990 Proprietaria Microsoft SQL Server Microsoft 1989 Proprietaria MySQL MySQL AB 1997 GPL o proprietaria Oracle Oracle Corporation 1977 Proprietaria Picosoft ? Licenza pubblica PostgreSQL Global Development Group Giugno 1989 Licenza BSD D. Richard Hipp 17 agosto 2000 Pubblico dominio Caché DB2 Filemaker Pro Ingres InterBase MaxDB PicoSQL PostgreSQL SQLite