Il Database Formato dei files Versione 11/02/2015 Formato dei files Per formato file si intende la modalità di registrazione dell'informazione all'interno di un file. Sono solitamente identificati mediante una sigla. Tra i formati più diffusi abbiamo: JPEG, TIFF, HTML, GIF, DOCX, ODS, TXT, ACCDB, MDB, XLSX, XLS etc. In Windows i formati sono associati all'estensione del nome del file (sequenza di caratteri che appaiono dopo l'ultimo punto nel nome). Ad esempio il nome "Foto.jpg" indica che l'immagine è stata archiviata utilizzando la codifica Jpeg. Il formato predefinito utilizzato da un'applicazione nel salvataggio dei propri documenti si dice formato nativo. E' evidente che ogni applicazione è in grado di leggere il proprio formato nativo. Alcune applicazioni possono avere più formati nativi. Ad esempio Excel 2013 è in grado di aprire o registrare documenti sia in XLSX che XLS. Il contenuto di un file risulta leggibile solo alle applicazioni che conoscono il formato specifico utilizzato nel salvataggio. Pertanto se un file non è registrato in uno dei formati nativi della nostra applicazione è necessario ricorrere ad opportune estensioni (filtri di importazione) che consentano al nostro programma di interpretare correttamente il formato utilizzato. Quando un'applicazione apre un file salvato in un formato non nativo si parla di importazione del file. Formati dei files Un formato si dice portabile se è leggibile da un ampio numero di programmi e sistemi operativi. Ad esempio il GIF è un formato grafico portabile poiché quasi tutte le applicazioni che hanno a che fare con le immagini (videoscrittura, browser, programmi di grafica etc.) riescono a leggerlo. I formati i cui dettagli implementativi (i.e. progettuali) sono disponibili liberamente sulla rete si dicono aperti. Tale accessibilità favorisce la diffusione del formato per cui sempre più applicazioni sono in grado di interpretarlo. In altre parole i formati aperti diventano solitamente anche portabili. Un formato le cui regole di salvataggio sono non note oppure mantenute segrete si dice chiuso. Un formato che risulta protetto da brevetti o altri diritti viene detto formato proprietario. Generalmente un formato file proprietario risulta leggibile solo alle applicazioni che lo utilizzano come formato nativo oppure tramite particolari tools (generalmente sviluppati dalla stessa software house che ha inventato quel formato) di importazione/esportazione. I formati caratteristici di Internet, per garantire l'apertura verso tutti i sistemi, sono codificati utilizzando formati estremamente portabili. L'uso di formati portabili impedisce che alcuni sistemi possano restare esclusi. Il formato più portabile in assoluto è il formato testo. Tutti i formati non testuali si dicono binari. Formato Testo I file di testo o Ascii sono sequenze di bit dove ogni byte viene interpretato come carattere Ascii. I formati testuali hanno il vantaggio di essere estremamente portabili ovvero leggibili da qualsiasi programma o sistema operativo. Non a caso i formati HTML, CSS, JS sono registrati proprio utilizzando questa modalità. Oltre ad Internet il formato testo è utilizzato come formato di interscambio di base dati tra 2 differenti sistemi. Ad esempio nel trasferimento dati da un archivio di partenza A ad un altro di destinazione B. File esportato testuale Partendo dal formato nativo A, mediante un modulo di esportazione, viene creato un file portabile contenente i dati da trasferire. Modulo Esportazione Programma DB A Archivio salvato nel Formato A Modulo Importazione Programma DB B Archivio salvato nel Formato B Il modulo di importazione legge i dati esportati (registrati in un formato portabile) e li registra all'interno dell'archivio nel formato nativo B. Formati di interscambio I formati testuali utilizzati per trasferire i dati da un archivio ad un altro si dicono formati di interscambio. Esistono diversi formati di interscambio classificati in 2 categorie principali: file delimitati (delimited) file a larghezza fissa (fixed file format) Nei files delimitati ogni record, registrato nel file, viene separato dal successivo mediante un invio (codice ascii 13 + 10 = CrLf – carriage return line feed) mentre ogni campo è separato da uno o più caratteri specifici detti "delimitatori". A seconda del "delimitatore" utilizzato abbiamo diversi sottotipi tra cui spiccano per importanza e diffusione il formato CSV e Tab-Text. I file a larghezza fissa sono file testuali dove ogni record, registrato nel file, viene separato con un invio (CrLf) mentre ad ogni campo viene assegnata una lunghezza in caratteri fissa. La fine di ogni campo viene individuata tenendo conto del numero di caratteri che gli sono stati assegnati. Tab-text E' il formato testuale di interscambio più utilizzato. Si tratta di un file delimitato dove il carattere separatore è il tab (codifica ascii 9). Nell'esempio proposto la prima riga riporta il nome dei campi. In questo caso si dice che il file contiene le intestazioni dei campi. Codice Nominativo Classe 1 Nove Bianca VM 2 Rossini Gioacchino IIM 3 Neri Chiara VM 4 Bianchi Bruna IIIM In molti database (intesi come programmi di gestione archivi) esiste addirittura un comando specifico SQL che consente di esportare o importare direttamente in questo formato. Ad esempio in mySql abbiamo le seguenti istruzioni: Comando di importazione Comando di esportazione SELECT * INTO OUTFILE 'NomeFile.txt' FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' FROM NomeTabella; LOAD DATA INFILE 'NomeFile.txt' INTO TABLE NomeTabella FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' IGNORE 1 LINES; CSV CSV è un altro formato testuale di interscambio molto diffuso di tipo delimited dove il carattere di separazione è solitamente la virgola (oppure il punto e virgola). Nel file di interscambio l'intestazione dei campi può essere omessa. Codice,Nominativo,Classe,Eta 1,"Nove Bianca","VM",12 2,"Rossi Gioacchino","IIM",21 3,"Neri Chiara","VM",18 4,"Verdi Enrico","IIIM",19 Anche in questo caso, alcuni DB come mySQL, hanno un apposito comando SQL che consente di esportare/importare dati in tale formato: Comando di esportazione Comando di importazione SELECT * INTO OUTFILE 'nomefile.csv' FIELDS TERMINATED BY ',' LOAD DATA INFILE 'NomeFile.csv' OPTIONALLY ENCLOSED BY '"' INTO TABLE NomeTabella ESCAPED BY ‘\\’ FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' OPTIONALLY ENCLOSED BY '"' FROM NomeTabella LINES TERMINATED BY '\n' IGNORE 1 LINES; Larghezza Fissa In questo formato ad ogni campo viene riservato un numero fisso di caratteri e questo indipendentemente dal contenuto reale del campo. Pertanto quando i caratteri assegnati sono terminati si passa al campo successivo ed eventualmente il contenuto di quel campo viene troncato. Ogni record è separato dal successivo mediante un invio (Crlf). Nel file di interscambio le intestazione dei campi solitamente vengono essere omesse. La descrizione che per ogni campo indica la posizione del carattere iniziale e di quello finale è detta tracciato del file. La conoscenza del tracciato è indispensabile per importare correttamente i dati. Da A Campo -----------------------01 03 Matricola 04 20 Nominativo 21 28 Data di Nascita 29 36 Reddito Da A Campo -----------------------37 38 Classe 39 40 Provincia 41 60 Indirizzo 61 62 CrLf Formattati Rappresenta una tipologia di formato di interscambio mista che possiede sia le caratteristiche tipiche di un file a larghezza fissa che quelle di un file delimitato. In un file formattato vengono utilizzati i trattini (-) e caratteri barra verticale (|) per disporre i contenuti in una griglia. I record vengono visualizzati come righe e i campi come colonne. Eventualmente i nomi dei campi (intestazioni) vengono aggiunti sulla prima riga. -------------------------------------------| ID | Indizzo E-mail | -------------------------------------------| 1 | [email protected] | -------------------------------------------| 2 | [email protected] | -------------------------------------------| 3 | [email protected] | -------------------------------------------| 4 | [email protected] | -------------------------------------------| 5 | [email protected] | -------------------------------------------- Altri formati di interscambio Alcuni formati binari di tipo proprietario risultano talmente diffusi che vengono utilizzati come formati di interscambio per il trasferimento di dati da una fonte dati ad un'altra. Tra questi segnaliamo: file xls e xlsx (Excel) file mdb e accdb (Access) Un'altra modalità per accedere a fonti dati esterne è l'ODBC. La amministrazione dell'ODBC è accessibile nel pannello di controllo. Altri formati di interscambio L'ODBC è un'interfaccia standard mediante la quale è possibile accedere a DB esterni. I programmi che lo utilizzano possono connettersi ai diversi tipi di database utilizzando più o meno la stessa modalità di codifica (i.e. le stesse istruzioni). Per poterlo utilizzare è necessario disporre dello specifico driver del DB a cui ci si vuole connettere. ODBC permette ai programmi che lo utilizzano di inviare ai database esterni stringhe SQL senza che sia necessario conoscere le istruzioni native di quel DB o le sue API proprietarie. Comandi nativi DBMS A DRIVER ODBC DBMS A Programma DB X Comandi ODBC Archivio salvato nel Formato X O D B C DRIVER ODBC DBMS B Archivio DBMS A DBMS ESTERNO A DBMS ESTERNO B Comandi nativi DBMS B Archivio DBMS B Altri formati di interscambio E' possibile collegare ad un file di Access anche dei file in formato nativo mdb o accdb. Questa tecnica risulta utile in due situazioni, entrambe legate all'utilizzo di Access come ambiente di sviluppo di applicazioni. A) La prima riguarda la possibilità di poter aggiornare un programma (scritto in Access) che risulta operativo ed in uso da parte degli utenti finali. La separazione della parte applicativa da quella dati consente di apportare delle modifiche funzionali (che solitamente richiedono un certo periodo!) lasciando agli utenti la possibilità di continuare a popolare il db senza doversi fermare in attesa della File Mdb/Accdb contenente nuova versione. solo l'applicazione Gli utenti continuano ad alimentare il DB utilizzando la versione dell'applicativo correntemente installata. Programma MDB (nuova versione) Lo sviluppatore apporta delle modifiche al programma (ad esempio per aggiungere delle nuove funzionalità) Programma MDB (vecchia versione) Dopo aver verificato la correttezza della nuova versione la sostituisce alla vecchia … File Mdb/Accdb contenente solo i dati ... il contenuto della base dati resta quello in uso (al massimo subirà delle modifiche a livello di struttura: nuovi campi o nuove tabelle di supporto) per cui dopo l'aggiornamento si continua a lavorare su dati aggiornati Altri formati di interscambio B) La seconda casistica riguarda le applicazione in multi utenza. In questo caso è necessario collegare un'unica base dati comune alle singole applicazioni installate sulle postazioni client. Programma MDB Programma MDB Programma MDB RETE File Mdb/Accdb contenente solo i dati Ogni postazione, dotata della componente applicativa (implementata in un file Mdb/Accdb), alimenta l'archivio comune sfruttando la connessione di rete Acquisizione dati nei DB I dati contenuti in files esterni di interscambio possono essere acquisiti e ricopiati all'interno di un file DB. In questo caso si parla di importazione. In alternativa possiamo lasciare i dati all'esterno dell'archivio inserendo nel file DB solo i riferimenti necessari alla loro localizzazione e alla loro lettura. In questo caso si parla di collegamento ad una fonte dati esterna. File di interscambio Programma DB Modulo di importazione Modulo di collegamento Programma DB Dopo l'importazione il file esterno può essere eliminato. File di interscambio Archivio salvato nel Formato X Archivio salvato nel Formato X Acquisizione dati nei DB Analizziamo ora i vantaggi e gli svantaggi del collegamento. 1) 2) 3) Il collegamento permette di aggiornare i dati esterni semplicemente sostituendo il file di interscambio. (v) Poiché i dati sono all'esterno del file DB non è possibile beneficiare dei vantaggi offerti dagli indici. In altre parole la consultazione (query) è più lenta. (s) Quasi sempre non è possibile apportare delle modifiche ai dati collegati. (s) Modulo collegamento Programma DB Vecchio File di interscambio Archivio salvato nel Formato X Nuovo File di interscambio Acquisizione dati nei DB Analizziamo ora i vantaggi e gli svantaggi dell' importazione. . Nuovo File di interscambio 1) 2) 3) Se si vogliono aggiornare i dati B è necessario cancellare quelli precedentemente acquisiti e Modulo ripetere l'operazione di importazione importazione. (s) Programma DB Poiché nell'importazione i dati vengono scritti all'interno del DB è possibile beneficiare dei vantaggi offerti dagli indici. Ricerche ed ordinamenti risulteranno più veloci. (v) Archivio salvato nel Formato X A E' sempre possibile apportare delle modifiche ai dati Prima di importare il nuovo aggiornamento dei dati importati. (v) occorre eliminare quelli precedentemente acquisiti.