Ing. AndreaFortibuoni - PostgreSQL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Ing. AndreaFortibuoni - PostgreSQL"

Transcript

1 Ing. AndreaFortibuoni PostgreSQL PostgreSQL è un ORDBMS (Object Relational Database Management System), ovvero è un sistema di gestione di database relazionali ad oggetti molto noto e molto potente, che estende alle basi di dati il paradigma di programmazione a oggetti consentendo quindi di sopperire alle mancanze del semplice modello relazionale (come SQLServer o MySQL), cioè gestire ed utilizzare dati di tipo strutturato. E' un prodotto OpenSource, mantenuto da un team mondiale di sviluppatori ed esperti. STORIA La storia di PostgreSQL (chiamato anche Postgres) parte nel lontano 1970 presso l'università di Berkeley in California, dove iniziò lo sviluppo di un database relazionale chiamato Ingres. Alcuni anni dopo Ingres fu trasformato in un prodotto commerciale dalla società Relational Technologies, società che in seguito cambiò nome in Ingres Corporation, per poi essere successivamente acquisita dalla Computer Associates. Nel 1986, il capo progetto di Ingres, il prof. Michael Stonebraker, che alcuni anni prima aveva lasciato il team di sviluppo di Berkeley per seguire la commercializzazione del prodotto, decise di ritornare all'accademia per dare vita ad un nuovo progetto postingres, che ne superasse i limiti. In particolare, puntava a fornire un supporto completo ai tipi di dati e la possibilità di definirne nuovi (UDF, User Defined Types): il team di sviluppo non fece altro che aggiungere delle caratteristiche objectoriented ad Ingres, e il nuovo progetto fu chiamato Postgres. Come il suo predecessore anche Postgres fu ben presto commercializzato e nel 1988 venne rilasciato il primo prototipo funzionante. In totale furono rilasciate 4 versioni dal 1988 al 1993, anno di terminazione del progetto. Ma sebbene il progetto fosse ufficialmente abbandonato, la licenza BSD (Berkeley Software Distribution) dava comunque modo agli sviluppatori Open Source di ottenere una copia del software per poi migliorarlo a loro discrezione. Fu così che nel 1994 due studenti del Berkeley, Andrew Yu e Jolly Chen, aggiunsero a Postgres un interprete SQL, per rimpiazzare il vecchio linguaggio di interrogazione ( Quel ) e il nuovo software fu rilasciato col nome di Postgres95. Nel 1996 fu nuovamente aggiornato e per evidenziare il supporto al linguaggio SQL si decise di rinominarlo in 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, e la sua evoluzione non si è più fermata: alla prima versione seguirono nel 2005 la 8.0, nel 2006 la 8.2, nel 2008 la 8.3, nel 2009 la 8.4, nel 2010 la 9.0, fino ad arrivare alla attuale versione 9.1.

2 COSTI E LICENZE PostgreSQL utilizza una licenza in stile BSD (Berkeley Software Distribution), la quale richiede soltanto che il software mantenga le informazioni di licenza e di proprietà intellettuale del codice. Questa licenza certificata da OSI è unanimemente apprezzata per la sua natura flessibile e businessfriendly, in quanto non limita l'impiego di PostgreSQL con applicazioni proprietarie e commerciali. Insieme al supporto multiazienda e alla proprietà diffusa e pubblica del codice, questa licenza rende PostgreSQL molto popolare tra quei produttori che intendono incorporare il database all'interno dei loro prodotti specifici senza alcun timore di incappare in costi, forme di lockin o cambi nei termini e nelle condizioni di licenza. Diversamente da Oracle e SQL Server, che sono DBMS di tipo commerciale e necessitano il pagamento della licenza per utilizzarli, o da MySQL che anche se possiede una licenza GPL (General Public License) pone comunque limitazioni agli sviluppatori, la licenza BSD di Postgres non impone nessun tipo di vincoli, ma d altro canto non offre nessuna garanzia all'utente finale (come invece fa la GPL). PostgreSQL è indipendente al 100%: non è gestito da nessuna azienda, non appartiene a nessuno e non soffre di politiche aziendali o problemi di mercato. È nato come un esperimento e continua ad esserlo dopo oltre 20 anni. Viene sviluppato da una grande comunità di programmatori ed è finanziato da molte aziende interessate al progetto. Essendo un DBMS OpenSource, gli eseguibili e il codice sorgente sono disponibili gratuitamente online ( ). INSTALLAZIONE E PORTABILITÀ PostgreSQL gode di un ottima portabilità essendo un DBMS multipiattaforma e quindi compatibile con tutti i principali sistemi operativi: GNU/Linux, sistemi UNIXlike (come FreeBSD, Mac OS X, Solaris, ecc ) e a partire dalla versione 8.0 anche su Windows. L installazione di Postgres al giorno d oggi non presenta grosse difficoltà, basta scaricare dal sito principale ( l installer automatico relativo al proprio sistema operativo, lanciarlo e seguire le relative istruzioni. In passato invece si potevano scaricare solo i sorgenti e si dovevano poi compilare da terminale sulla propria macchina. L installer include oltre al database server: l applicativo client pgadmin che consente di amministrare il database in modo semplificato tramite interfaccia grafica, e lo StackBuilder ovvero un wizard utile per scaricare e installare componenti aggiuntivi, driver e varie applicazioni a completamento dell installazione. Durante l installazione è stato creato un utente postgres del sistema, che per PostgreSQL equivale all utente root (superutente); siamo noi a dover impostare la password per l utente postgres, e la porta sulla quale il server si mette in ascolto (di default è la 5432). Successivamente posso connettermi al database in 2 modi: da terminale usando il client psql, oppure sfruttando il client grafico pgadmin. I parametri da specificare per connettersi al database sono: nome del database (scelto a piacere, ad esempio: dbms_locale ), nome o indirizzo dell host (ad es: localhost ), il numero di porta, il nome utente e la relativa password. Una volta creata la connessione sarà possibile creare database, tabelle, inserire dati, creare utenti, effettuare query, ecc È importante ricordare che PostgreSQL gestisce un cluster di database, ovvero una collezione di più database possono risiedere sullo stesso host e sono gestiti da una singola istanza di un processo server in esecuzione. Appena installato, il cluster mette a disposizione un database vuoto, usato come template per la creazione di

3 altri database, detto template1. Tutte le caratteristiche di questo template possono essere modificate dall'utente, e saranno riflesse in ogni nuovo database creato (esiste anche una copia di sicurezza del template1, detto template0, che non può essere acceduto). In termini di file system, un cluster di database sarà una singola directory nella quale tutti i dati saranno salvati, e sarà creato dal processo initdb. Se si effettua l installazione tramite installer grafico, tale processo viene lanciato in automatico e la directory che rappresenta il cluster viene in generale chiamata data e posizionata nella directory principale di Postgres, mentre nell installazione tramite compilazione dei sorgenti da terminale può essere scelta la locazione di tale cartella. E possibile tuttavia definire dei TABLESPACES, che consentono un allocazione fisica diversa da quella che propone PostgreSQL e associata allo USER stesso, scelto durante la creazione/modifica di un database. Un esempio di cosa contiene la directory data del cluster: COMPATIBILITÀ CON STANDARD SQL/92 PostgreSQL è totalmente compatibile con lo standard SQL/92. Grazie ad alcuni comandi di questo standard può implementare molte funzioni che altri DBMS, come MySQL, non hanno. In particolare: implementare le viste attraverso il comando CREATE VIEW/DROP VIEW; le viste non solo consentono di proteggere parte dei dati da occhi ed accessi indesiderati, ma anche di rafforzare il controllo sull'integrità dei dati; creare tabelle temporanee che sono visibili solo dal client e sono automaticamente rimosse quando il client chiude la connessione; implementare le SELECT annidate. Postgres inoltre supporta ampiamente lo standard SQL/99 e anche lo standard SQL2003, consentendo la portabilità delle applicazioni e l uso di: Complex queries, Foreign keys, Triggers, Views, Transactional integrity (ACID), Multiversion concurrency control (MVCC). PostgreSQL supporta tutti i tipi di dato di questi standard ma non solo: li estende implementandone altri nuovi, come i dati geometrici e spaziali, binari, Large Objects, o definiti dall utente (UDT). Stessa cosa anche per le funzioni (UDF). Postgres, sin dalle sue origini, ha considerato l estendibilità un requisito base per poter far fronte alle nuove esigenze di gestione dati, e la sua caratteristica più rilevante è che, se non può essere reperito un qualcosa del quale si ha bisogno, è possibile aggiungerlo una volta trovato su Internet. Ecco una tabella riassuntiva dei tipi di dato compatibili con lo standard:

4 ARCHITETTURA Si utilizza il modello clientserver: i dati sono gestiti in modo centralizzato (server) e messi a disposizione di più fruitori (client). Essi possono coesistere sulla stessa macchina o possono risiedere su macchine distinte connesse con rete TCP/IP. In pratica un processo server accetta connessioni al database dalle applicazioni client, ed esegue azioni per mezzo dei client stessi. Un processo (detto anche programma) server è chiamato postgres, e si occupa di gestire le query ed i comandi dei client. Le applicazioni client (dette frontend ) possono essere di natura molto diversa: un client potrebbe essere uno strumento testuale, un'applicazione grafica, un server web che ha accesso al database per visualizzare pagine web, oppure uno strumento specializzato per la manutenzione del database. Alcune applicazioni client vengono fornite con la distribuzione di PostgreSQL, come quello a riga di comando (psql) e quello a interfaccia grafica(pgadmin). Altre possono essere sviluppate dagli utenti e sono reperibili online, come quello a interfaccia web basata sul PHP e chiamato phpgadmin, o come quello basato su Java e chiamato xpg. Poiché è impossibile conoscere in anticipo quante connessioni verranno fatte, è presente un processo server principale che è il padre di ogni processo, che si occupa della gestione delle connessioni e che genera

5 (ovvero forka ) un nuovo processo server postgres ogni volta che viene richiesta una connessione. Questo processo principale è chiamato postmaster e rimane in ascolto (nella specifica porta TCP / IP) di connessioni in entrata: le applicazioni client (dette frontend ) che desiderano accedere ad uno dei database gestiti dal postmaster ricorrono a funzioni appartenenti alla libreria libpq, la quale invia le richieste di accesso al postmaster. A questo punto il postmaster genera un nuovo processo server postgres (detto anche backend ) per ogni client, al fine di servire più clienti in modo efficiente. Da questo momento in poi frontend e backend continuano a comunicare senza ulteriori interventi del postmaster, il quale rimane sempre in esecuzione, aspettando nuove richieste di connessioni. La comunicazione tra frontend e backend consiste nello scambio di pacchetti di richiesta e risposta, e per gestirla nel modo più adeguato Postgres utilizza un protocollo implementato su TCP/IP e sockets UNIX. Quando il frontend desidera disconnettersi invia un pacchetto appropriato e termina, senza attendere risposta dal backend. Per modificare a piacimento alcuni parametri come politiche di accesso, configurazioni del server, impostazioni di connessione e di autenticazione dei client o altre simili, basta agire sui file di configurazione postgresql.conf e pg_hba.conf presenti all interno della directory del cluster (ovvero data ). A fronte di una richiesta di query da parte del frontend, il backend esegue i seguenti passi: passa la stringa rappresentante la query al Parser, che la analizza sintatticamente; il Traffic Cop decide se il comando deve essere ottimizzato (ho una complex Query ) o meno (comandi di utility); nel caso debba essere ottimizzato il Rewriter considera le regole e riscrive la query corretta; l'ottimizzatore calcola il percorso migliore; infine l'executor esegue la query e ritorna il risultato. La creazione del cluster genera quindi: il catalogo di sistema, le directory che andranno ad ospitare i file specifici dell istanza server e i due database template0 e template1. Il catalogo di sistema è costituito da un insieme di tabelle e viste, comuni a tutti database del cluster, e dal dizionario dati. Il dizionario dati si occupa del parsing dei comandi SQL a fronte di una query e viene adoperato dall ottimizzatore (detto anche planner ) per la risoluzione del piano di esecuzione. Quando si crea un database (a partire dal template1), esso contiene uno o più schemi identificati con nomi, che a loro volta contengono le tabelle che si vogliono creare, e anche altri tipi di oggetti come tipi di dati, funzioni, viste ecc... Diversamente da come avviene per i database, gli schemi non sono separati rigidamente: un utente può accedere ad oggetti in qualunque schema presente nel database al quale è connesso, se ne ha i privilegi. Se si creano tabelle senza specificare alcun nome di schema, per impostazione predefinita queste tabelle (e gli altri oggetti) vengono automaticamente inseriti in uno schema chiamato "public". Oltre allo schema public e a

6 quelli creati dall'utente, ogni database ha uno schema pg_catalog caratteristico del catalogo di sistema e che contiene tutte le tabelle di sistema e tutti i tipi di dati predefiniti, funzioni,viste ecc... Le principali viste di sistema sono: pg_user: vista della tabella pg_shadow, che fornisce informazioni sugli utenti; pg_tables: fornisce informazioni sulle tabelle del cluster; pg_settings: fornisce informazioni sui parametri runtime dell'istanza server; pg_database: fornisce informazioni sui database presenti nel cluster; pg_statistic: contiene le statistiche degli oggetti del cluster. ALLOCAZIONE DATI L unità base per l archiviazione dei dati in PostgreSQL è la pagina, di dimensioni 8 Kb. Ogni oggetto del cluster, dai vari database alle tabelle, è identificato da un numero che viene chiamato Object identifier (OID). Tipicamente un database è rappresentato da una directory (con lo stesso nome dell OID

7 corrispondente), mentre una tabella è memorizzata fisicamente come un singolo file (con lo stesso nome dell OID corrispondente), strutturato logicamente come un insieme contiguo di pagine: La pagina contiene una serie di puntatori lineari (linear pointer o linp ) che indirizzano le tuple contenute nella pagina stessa. All'interno della pagina la singola tupla è acceduta per mezzo di un offset, ma indirettamente per consentire una migliore gestione: l'offset della tupla infatti non identifica la tupla stessa, ma il puntatore linp. In questo modo è possibile spostare la tupla (es: compattazione dello spazio) senza doverne cambiare l'offset. Le tuple sono organizzate a stack: ogni nuova tupla viene inserita in fondo subito prima delle altre mentre il linp viene inserito all'inizio dopo gli altri. La struttura di una tupla è la seguente:

8 Per motivi essenzialmente prestazionali, è possibile partizionare le tabelle, secondo una delle seguenti modalità: Range partitioning: ogni partizione contiene un certo range di chiavi List partitioning: vengono elencate esplicitamente le chiavi per ogni partizione Uno dei vantaggi di avere tabelle partizionate è quello di poter restringere l insieme dei dati da esaminare per risolvere una query. Ne consegue un notevole risparmio di risorse. Il tutto si basa su una caratteristica objectrelational di PostgreSQL, ovvero l ereditarietà o TABLE INHERITANCE. Tale caratteristica risponde a necessità di modellazione che non sono naturalmente soddisfatte dal modello relazionale: l'ereditarietà infatti consente a una tabella di ereditare alcuni dei suoi attributi di colonna da una o più altre tabelle, creando una relazione padrefiglio. Questo fa sì che la tabella figlio abbia, oltre le sue, anche le stesse colonne e vincoli della tabella (o tabelle) padre ereditata. L'ereditarietà delle tabelle è tipicamente stabilita quando la tabella figlia viene creata, usando la clausola INHERITS del comando CREATE TABLE. Ecco un esempio: CREATE TABLE name population altitude ); cities ( text, real, int CREATE TABLE capitals ( state char(2) ) INHERITS (cities); In questo caso, una riga della tabella capitals eredita tutte le colonne (name, population, and altitude) dal suo genitore, cities. Se effettuo una query per trovare tutte le città che non sono capitali e per esempio sono situate ad un'altezza maggiore di 500 piedi, dovrò usare la clausola ONLY, la quale indica che la query deve essere applicata solo sulla tabella cities, e non sulle tabelle sotto cities nella gerarchia di ereditarietà: SELECT name, altitude FROM ONLY cities WHERE altitude > 500;

9 Alternativamente, ad una tabella che è già definita in modo compatibile, è possibile aggiungere una genitore, usando la variante INHERIT di ALTER TABLE. Per fare questo la nuova tabella figlia deve già includere colonne con lo stesso nome e tipo delle colonne del genitore. Inoltre un collegamento di ereditarietà può essere rimosso da un figlio usando la variante NO INHERIT di ALTER TABLE. Un modo comodo per creare una tabella compatibile che successivamente diventerà una nuova figlia è di usare la clausola LIKE nel CREATE TABLE. Questo crea una nuova tabella con le stesse colonne della tabella sorgente. Una tabella genitore non può essere eliminata finché una delle sue figlie esiste. Nemmeno le colonne delle tabelle figlie possono essere eliminate o modificate se sono ereditate da tabelle genitrici. Se si desidera rimuovere una tabella e tutte le sue discendenti, un modo semplice è eliminare la tabella genitrice con l'opzione CASCADE. Da tener conto che tutti i vincoli CHECK e NOTNULL su una tabella genitore sono automaticamente ereditati da i suoi figli, mentre altri tipi di vincoli (come: unique, chiave primaria e chiave esterna) non sono ereditati. Inoltre non tutti i comandi SQL riescono a lavorare con le gerarchie di ereditarietà: quelli che la supportano sono i comandi usati per le query, per la modifica dei dati o la modifica degli schemi (ad esempio: SELECT, UPDATE, DELETE, molte varianti di ALTER TABLE, ma non INSERT e ALTER TABLE con RENAME). Le pagine dati caricate sono contenute in una zona di memoria detta shared memory, condivisa da tutti i processi backend: PostgreSQL non cambia direttamente le informazioni su un disco ma le scrive sullo shared buffer cache. Le informazioni vengono prelevate dal disk buffer cache o direttamente dal disco. I processi di backend accedono allo shared buffer e se ad esempio bisogna effettuare un processo di lettura allora la lettura avviene tutta in RAM. Lo shared buffer deve avere la giusta dimensione per consentire agli altri programmi di girare senza intoppi. Se lo shared buffer è troppo grande, allora il sistema operativo inizierà il processo di swap per richiedere memoria per gli altri programmi in esecuzione, e si avrà rallentamento. La configurazione di default alloca in genere 1000 buffer condivisi, ognuno di dimensione 8 Kb. Aumentare il numero di buffer aumenta le probabilità di trovare nella cache le informazioni di cui i backend hanno bisogno, evitando così una costosa richiesta del sistema operativo.

10 Per accedere in maniera rapida ai dati si sfrutta il concetto di indice. Postgres memorizza gli indici in modo disgiunto dalla tabella alla quale puntano (indici secondari ). Un indice viene memorizzato e gestito come una normale tabella, e quindi è presente nel catalogo di sistema ( pg_index ) e viene acceduto e gestito dal buffer manager. Ogni indice memorizza una coppia <key, TIDs> dove i Tuple Identifiers sono coppie <numero_blocco_dati, offset_linp> per recuperare la pagina dati e la tupla all'interno della pagina dati. In Postgres i principali tipi di indici sono 4, ognuno dei quali si basa su un diverso algoritmo: BTree: sono quelli di default, vengono usati per query di uguaglianza e di intervalli dati con operatori del tipo: <, =, >. Esempio: CREATE INDEX nomeindice ON nometabella (elencocampi); Hash: indicato quando si confronta l uguaglianza fra due campi. Anche in questo caso è necessario specificare, in fase di creazione, il tipo di indice: CREATE INDEX nomeindice ON nometabella USING HASH (elencocampi); GiST: Generalized Index Search Tree, forniscono una interfaccia per l'integrazione di indici userdefined (es. indici multidimensionali RTree ) e sono usati nelle query che utilizzano gli operatori spaziali e geometrici ~=, &&, ecc ); GiN: Generalized Inverted Index, sono indici invertiti che possono gestire valori che contengono più di una chiave, per esempio gli array. Utilizzano una coppia <chiave, posting_list> con i posting_list pointer che puntano ai documenti che contengono la chiave. Un indice può essere definito su più campi. In questo caso è necessario indicare per primi quelli che vengono utilizzati più spesso nelle query. Postgres non fa eccezione, se ad esempio, si definisce un indice su tre colonne c1, c2, c3; questo viene utilizzato nel caso in cui nella condizione di where vengano utilizzate le colonne c1, c2, c3 oppure c1,c2 o c1. Nel caso c1, c3, verrebbe utilizzato l indice solo per la colonna c1. Esistono alcune limitazioni all uso degli indici definiti su più campi: sono supportati solo dai BTree e sono utilizzati solo con l operatore AND; inoltre il numero di colonne può essere al massimo 32 (ma in genere più di 3 colonne sono poco performanti e quindi inutili). È anche possibile definire indici unici, cioè che non contengono valori ripetuti (escluso il NULL), ma solo per indici di tipo BTree: CREATE UNIQUE INDEX nomeindice ON nometabella (elencocampi).gli indici unici sono creati automaticamente per le primary key. In Postgres è possibile definire indici basati sul risultato di una funzione applicata ad una o più colonne della tabella. Per esempio supponiamo di dover eseguire spesso una query di questo tipo: select * from tabella where upper(col1) = valore. Un indice definito sul campo col1 non verrebbe utilizzato in quanto la funzione upper ne modifica il valore che non è quindi confrontabile con quello memorizzato nell indice. In questo caso è necessario definire un indice calcolato con la funzione upper: CREATE INDEX nomeindice ON nometabella (upper(col1)). Questo tipo di indice è sempre composto da una sola colonna.

11 È possibile inoltre definire indici parziali, che servono a escludere valori comuni o valori di scarso interesse per le query. Esempio: CREATE INDEX nomeindice ON nometabella (campo) WHERE campo >= condizione. Anche se in Postgres gli indici non richiedono manutenzione, è comunque importante controllare quali indici vengono realmente usati nei cicli di lavoro delle query. L'esame di utilizzo degli indici per una singola query viene fatto con il comando EXPLAIN, che illustra il piano di query generato dal pianificatore: EXPLAIN [ ANALYZE ] statement, dove ANALYZE se è attivato permette di aggiornare le statistiche che l ottimizzatore di query utilizzerà per svolgere i suoi compiti. Ad esempio il commando: EXPLAIN SELECT * FROM mytable; producerà in output: QUERY PLAN Seq Scan on mytable (cost= rows=10000 width=244) Il costo di accesso tramite indice viene effettuato mediante la stima del numero di tuple restituite e dell'operatore applicato, assieme alle statistiche sulle colonne coinvolte. Gli operatori utilizzati per l accesso ai dati possono essere: sequential_scan: accetta come parametro di input una tabella e restituisce le sole righe specificate dalla clausola where. Ha il vantaggio di lavorare in stream, ovvero durante l esecuzione del sequential scan le righe ritrovate sono già disponibili per il successivo operatore oppure per la restituzione al backend. Questo operatore lavora per sottrazione. Legge ogni riga della tabella ed eventualmente scarta quelle che non corrispondono alla clausola di where. index_scan: accetta come parametro di input un indice definito su di una o più colonne di tabella e restituisce le sole voci di indice specificate dalla clausola di where. Ha il vantaggio di lavorare per intervallo (range), ovvero definito un valore massimo e un minimo nella condizione where, l indice viene attraversato solo per quei valori. A differenza del sequential_scan, l index_scan restituisce i dati già ordinati.

12 bitmap_scan: esegue una lettura sequenziale delle pagine index ma senza seguire l indice. La lettura avviene in maniera simile ad un sequential_scan. Una volta in memoria gli indici vengono trasformati in bitmap e sommati per trovare le occorrenze che soddisfano il filtro. join: accetta due set di righe in ingresso e restituisce un unica riga prodotta dall affiancamento delle righe in ingresso. Si suddivide in: Nested Loop Join, Merge Join, Hash Join. sort: accetta come input un set di dati e li restituisce ordinati. Non lavora in stream, ovvero richiede l intero set per poter ordinare. limit: accetta come input un set di dati e restituisce solo i primi x specificati nella clausola di avvio. unique: accetta come input un set di dati e scarta i valori duplicati. Quando si va a leggere una tabella attraverso un index_scan i blocchi di indice vengono letti in maniera ordinata. Quando viene trovata una corrispondenza Postgres carica nello shared_buffer la pagina corrispondente alla corrispondenza ed estrae la riga trovata. Andando avanti nella lettura dell indice magari la successiva corrispondenza si trova su di un altra pagina che deve essere caricata anch essa in memoria per la lettura della riga. In questo modo ogni volta che viene trovata una occorrenza nell indice si rischia di dover caricare una pagina nello shared_buffer producendo un elevato flusso I/O a causa del buffer manager. Dunque per tabelle piccole il sequential_scan è sempre più conveniente poiché, in genere, con un singolo accesso al disco permette di portare l intera tabella nello shared buffer. Per tabelle più grandi il costo del sequential_scan cresce, mentre quello dell index_scan, se limitato a valori singoli resta più o meno costante e risulta quindi più conveniente.

13 TRANSAZIONI PostgreSQL protegge i dati e coordina gli accessi concorrenti multiutente attraverso le transazioni, attivate con i classici comandi BEGIN e COMMIT/ROLLBACK, e possibilità di innestarle (sottotransazioni). È possibile controllare le istruzioni in una transazione in modo granulare tramite l'utilizzo di savepoint. I savepoint consentono di scartare selettivamente parti della transazione, confermando il resto: dopo aver definito un savepoint con SAVEPOINT, si può tornare indietro al savepoint con ROLLBACK TO. Tutte le modifiche al database poste tra la definizione del savepoint ed il ritorno ad esso vengono scartate, mentre le modifiche precedenti il savepoint sono mantenute. Dopo essere tornati indietro ad un savepoint, lo stesso continua ad essere definito, per cui si può tornare indietro ad esso diverse volte. Al contrario, se non si è sicuri di voler tornare ancora indietro ad un particolare savepoint, esso può essere rilasciato, in modo che il sistema possa liberare alcune risorse. Postgres assicura tutte le proprietà ACID delle transazioni: l integrità dei dati è infatti garantita secondo le regole dei livelli di isolamento delle transazioni. Rispetto allo standard SQL, che definisce quattro livelli di isolamento delle transazioni, Postgres implementa internamente solo i livelli di isolamento Read Committed (cioè isolamento a livello di comando) e Serializable (cioè isolamento a livello di transazione). Così se si sceglie il livello Read Uncommitted in realtà si otterrà Read Committed, e quando si sceglie Repeatable Read in realtà si otterrà Serializable. Il livello di isolamento effettivo potrebbe quindi essere più stretto di quello scelto. La ragione per la quale Postgres fornisce solo due livelli di isolamento è che questo è l'unico modo sensato per gestire i livelli di isolamento standard nell'architettura di controllo concorrente. Di default si usa il Read Committed: una query SELECT vede i dati che sono stati sottoposti a commit, prima che la query stessa partisse; essa non vede mai né i dati non sottoposti a commit, né i cambiamenti sottoposti a commit da transazioni concorrenti durante l'esecuzione della query. Ad ogni modo, la query vede gli effetti di update precedenti eseguite all'interno della propria transazione, anche se non sono ancora stati sottoposti a commit: questo può causare inconsistenza, rendendo così la modalità Read Committed inadatta a comandi che coinvolgono condizioni di ricerca complesse. Per ovviare a questo problema si utilizza il livello Serializable, che emula l'esecuzione di transazioni seriali, ovvero è come se le transazioni fossero state eseguite una dopo l'altra in maniera seriale invece che concorrentemente. I livelli di isolamento si possono impostare sia a livello di configurazione nel file postgresql.conf (modificando il parametro default_transaction_isolation ), sia runtime con il comando: SET default_transaction_isolation = serializable.

14 Il modello utilizzato da PostgreSQL per implementare l'isolamento nelle transazioni si basa sul MVCC (MultiVersion Concurrency Control). Concettualmente ogni transazione vede uno snapshot (ovvero un istantanea) del database e agisce su quello snapshot. Lo snapshot è costruito considerando solo le transazioni precedenti la corrente che hanno effettuato il commit. Il vantaggio principale dell'uso del modello di controllo concorrente MVCC piuttosto che i meccanismi di lock tradizionali (comunque gestiti da Postgres), è che nel MVCC i lock acquisiti per interrogare dati (lettura), non vanno in conflitto con i lock acquisiti per scrivere dati, e così la lettura non blocca mai la scrittura e la scrittura non blocca mai la lettura. Se MVCC non fornisce il comportamento desiderato è possibile prevenire i problemi di concorrenza attraverso l uso appropriato di lock espliciti. PostgreSQL supporta diversi tipi di locking, sia a livello di tabella sia a livello di riga: Share (condivisi): prevalentemente comandi di lettura che possono anche aggiornare, ovvero ACCESS SHARE (pura lettura) o ROW SHARE (lettura/modifica, es. SELECT FOR UPDATE) Exclusive (esclusivi): scrittura o alterazione della struttura, ovvero ACCESS EXCLUSIVE (alterazione, ALTER TABLE) o ROW EXCLUSIVE (scrittura, INSERT/UPDATE) L'uso di lock espliciti può incrementare la probabilità di deadlock, in cui due (o più) transazioni mantengono entrambe lock che gli altri vogliono. Postgres riconosce automaticamente situazioni di deadlock e le risolve annullando una delle transazioni coinvolte, permettendo all'altra/e di completarsi (è difficile predire esattamente quale transazione sarà annullata). Postgres fornisce inoltre dei mezzi per la creazione di lock che hanno significati definiti dall'applicazione. Questi vengono chiamati lock consultivi, e dato che il sistema non impone il loro utilizzo è compito dell'applicazione usarli correttamente. I lock consultivi possono essere utili per strategie di locking che sono poco maneggevoli per il modello MVCC. Una volta acquisito, un lock consultivo viene tenuto fino a che non viene rilasciato esplicitamente o se la sessione termina. A differenza dei lock standard, i lock consultivi non rispettano la semantica transazionale: un lock acquisito durante una transazione che successivamente è sottoposto a rollback sarà ancora trattenuto seguendo il rollback, e anche un unlock entra in vigore anche se le la transazione chiamante successivamente fallisce. Un elenco completo dei lock consultivi legati è presente nella vista di sistema pg_locks. Le transazioni seguono la numerazione delle tuple: ogni transazione è identificata da un numero intero positivo e progressivo denominato XID. Lo XID è un intero a 4 byte (32 bit). L'età di una transazione è stabilita in modo relativo rispetto ad un'altra transazione: uno XID minore indica una transazione iniziata prima e quindi più vecchia. Lo stato delle transazioni avviate (ed eventualmente completate) è memorizzato in modo permanente in un log chiamato pg_clog. Le transazioni possono essere in uno dei seguenti quattro stati (identificati quindi da 2 bit): In progress (transazione avviata ma non completata) Committed (transazione completata con successo) Aborted (transazione completata con rollback forzato o manuale) Subcommitted (sottotransazione/savepoint passato con successo) Le transazioni sono memorizzate secondo l'ordine dato dal loro XID. Ne consegue che, sapendo la dimensione della pagina dati, sapendo che il blocco di una singola transazione è lungo 2 bit, e sapendo l'id della transazione è possibile risalire al dato circa il suo stato.

15 Internamente il database deve registrare non solo le informazioni utente (i dati veri e propri) ma anche i metadati per la gestione dell'mvcc. Ogni tupla viene quindi estesa con 4 campi particolari, usati per i controlli del sistema MVCC: xmin: indica il minimo valore di transazione che ha accesso ai dati (sostanzialmente la transazione che ha creato la tupla) xmax: indica il massimo valore di transazione che ha accesso ai dati (sostanzialmente l'id dell'ultima transazione che ha cancellato/modificato la tupla) cmin: indica il minimo valore di comando che ha accesso ai dati cmax: indica il massimo valore di comando che ha accesso ai dati Esempio: La tupla con xmin e xmax impostati ha subito una delete (o un update) e quindi non è più valida. Tutte le transazioni successive alla numero 20 non potranno vedere quella tupla, che però esiste ancora nel database. Di conseguenza il database può rimanere pieno di tuple non più valide: per questo motivo si può eseguire (manualmente o automaticamente) un comando di utilità, denominato VACUUM, che controlla una tabella o un database alla ricerca delle tuple che non sono più visibili da nessuna transazione e le cancella. In questo modo i dati si ricompattano e il database riduce il suo spazio: L'esecuzione di vacuum è un'operazione pesante, perché il sistema deve acquisire un lock esclusivo sull'oggetto. Vacuum può essere usato per eliminare le tuple espirate (vacuum full), oppure per aggiornare le statistiche di sistema (vacuum analyze). Può essere abilitato di default nel file postgresql.conf.

16 Per mantenere le informazioni sull'andamento delle transazioni si utilizza il Write Ahead Log (WAL). E' fisicamente archiviato all'interno della directory pg_xlog, e a differenza dei log in pg_clog non mantiene solo lo stato finale di una transazione, ma anche le informazioni (progressive) sui dati toccati. La teoria vuole che il WAL sia scritto prima dei dati, ma questo produrrebbe un sovraccarico di scritture. Per ovviare al problema Postgres divide i WAL log in segmenti (LSN). A questo punto i log WAL sono mantenuti in memoria, e ogni volta che si scrive una pagina di dati sporca la si fa precedere dalla scrittura di tanti segmenti di log fino al raggiungimento del numero LSN corrispondente alla pagina. Analogamente, durante un recovery tutte le transazioni con XID inferiori al LSN che si sta attualmente analizzando sono da considerarsi stabili (ripristinate completamente). La scrittura del WAL avviene secondo lo schema seguente: 1) acquisizione di un PIN e del lock sulla pagina dati da modificare (pin indica che la pagina non deve essere scartata dalla memoria) 2) modifica della pagina dati 3) la pagina viene marcata come dirty (sporca) 4) si richiama xloginsert per inserire la pagina di log e si imposta il LSN nella pagina dati al valore risultante dall'insert Le pagine WAL contengono modifiche in modo incrementale. Il sistema mantiene dei checkpoints, ossia ogni n transazioni forza una scrittura di una pagina dati completa nel WAL: alla prima modifica di una pagina sotto la condizione LSN < checkpoint si scrive la pagina dati completa nel WAL. Postgres può sfruttare i log WAL per effettuare un backup del sistema ad un determinato momento. L'idea è quella di archiviare i log e di indicare al sistema che deve effettuare nuovamente le transazioni archiviate. Una volta in possesso dei log è possibile ordinare al database di fare un ReDo delle transazioni. Questa procedura viene detta Point In Time Recovery (PITR) ed è composta dai seguenti passi: 1) stop del postmaster (e quindi del cluster) 2) pulizia delle directory del cluster, in particolare pg_xlog 3) copia dei log dentro a pg_xlog 4) creazione di un file recovery.conf nella root del cluster 5) avvio del postmaster (e quindi del cluster)

17 SICUREZZA L accesso alla base di dati viene permesso attraverso un sistema di autenticazione. I sistemi di autenticazione consentiti possono essere diversi e dipendono dalla configurazione di Postgres fatta all atto della compilazione dei sorgenti. Il file di configurazione pg_hba.conf (Hostbased authentication), che si trova nella directory del cluster ( data ), serve per controllare il sistema di autenticazione una volta installato Postgres. L autenticazione degli utenti può avvenire in modo incondizionato ( trust ), dove ci si fida del nome fornito come utente del DBMS senza richiedere altro, o può essere semplicemente disabilitata nel senso di impedire qualunque accesso incondizionatamente. L accesso può essere controllato attraverso l abbinamento di una parola d ordine agli utenti di Postgres. Il formato del file pg_hba.conf può essere semplificato nei due modelli sintattici seguenti, tenendo conto che esistono comunque altri casi: Nel primo caso si intendono controllare gli accessi provenienti da programmi clienti avviati nello stesso sistema locale, utilizzando un socket di dominio Unix per il collegamento; nel secondo si fa riferimento ad accessi attraverso la rete (connessioni TCP). Il campo base_di_dati serve a indicare il nome del database per il quale autorizzare l accesso; in alternativa si può usare la parola chiave all, in modo da specificare tutte le basi di dati in una sola volta. Il campo utente_dbms serve a indicare il nome dell utente del DBMS da autorizzare; in alternativa si può usare la parola chiave all, in modo da rendere indifferente chi sia l utente. I campi indirizzo_ip e maschera_degli_indirizzi rappresentano un gruppo di indirizzi di nodi che hanno diritto di accedere a quella base di dati determinata. Il campo autenticazione_utente rappresenta il tipo di autenticazione attraverso una parola chiave (tra le più importanti: trust, reject, password, crypt, ident, sameuser). L ultimo campo autenticazione_utente dipende dal penultimo. Nel caso di autenticazione ident, si utilizza quasi sempre la parola chiave sameuser per indicare a Postgres che i nomi usati dagli utenti nei sistemi remoti da cui possono accedere, coincidono con quelli predisposti per la gestione del DBMS. Nel caso di autenticazione password, l ultimo campo potrebbe rappresentare il nome del file di testo contenente le parole d ordine. Ad esempio: host all all trust concede a tutti gli utenti di accedere localmente, ma tramite un socket di dominio Internet (l indirizzo e normalmente quello di ogni nodo di rete, dal punto di vista locale), senza bisogno di alcun riconoscimento. Un altro esempio: local all all ident sameuser concede a tutti gli utenti di accedere localmente (tramite un socket di dominio Unix) a qualunque base di dati, sulla base del riconoscimento fatto dal sistema operativo (si intende che ci si affida ai privilegi che ha ottenuto il programma usato per accedere). Infine: host mydb pippo password concede all utente pippo di accedere alla base di dati mydb, da un nodo della rete qualunque tra quelli che hanno indirizzi del tipo *.*, attraverso l indicazione di una parola d ordine, che viene trasmessa in chiaro. Quando si creano delle tabelle in un database, tutti gli altri utenti che sono stati registrati nel sistema del DBMS, potrebbero accedervi e fare le modifiche che vogliono. Per controllare questi accessi, l utente proprietario delle relazioni (di solito è colui che le ha create), può usare le istruzioni GRANT e REVOKE. La prima permette a un gruppo di utenti di eseguire operazioni determinate, la seconda toglie dei privilegi.

18 L esempio: REVOKE ALL ON Presenze, Indirizzi FROM PUBLIC; GRANT ALL ON Presenze, Indirizzi TO tizio; toglie a tutti gli utenti (PUBLIC) tutti i privilegi sulle relazioni delle presenze e degli indirizzi; successivamente vengono ripristinati tutti i privilegi solo per l utente tizio. È possibile anche effettuare copie di sicurezza di un database o dell intero cluster, utilizzando i comandi: pg_dump e pg_dump_all. Queste producono un file SQL che contiene i comandi per la creazione del database,dello schema e dei dati. Grazie poi al comando pg_restore posso ricostruire il database o lo schema o i dati partendo da quel file. È possibile usare le funzionalità di backup interne a Postgres (con pg_hotbackup ) per produrre hot backup a sè stanti, sfruttando il meccanismo del WAL. Questi sono backup che non possono essere usati per recuperi di istanti nel tempo, sono tipicamente molto più veloci a svolgere backup e ripristino rispetto ai dump fatti con pg_dump. STORED PROCEDURES Postgres permette di costruire delle Stored Procedures interne al database in vari linguaggi. Il capostipite è il linguaggio procedurale (pl/) pgsql che è già presente nel sistema, ma previa installazione nel database è possibile programmare le proprie procedure anche nei seguenti linguaggi: pl/java pl/python pl/perl pl/tcl pl/php pl/ruby pl/r Prendendo ad esempio pgsql, la sintassi per creare una stored procedures è la seguente:

19 CREATE FUNCTION nome_funzione RETURNS tipo_funzione AS $$ [ <<label>> ] [ DECLARE declarations ] BEGIN statements END [ label ]; $$ LANGUAGE plpgsql; dove ogni dichiarazione e ogni istruzione all'interno di un blocco è terminata da un punto e virgola. Una label è necessaria solo se si vuole identificare il blocco per usarlo in altre istruzioni, o per qualificare i nomi delle variabili dichiarate nel blocco. PosgreSQL permette di automatizzare delle operazioni attraverso i Trigger, ovvero funzioni attivate da eventi di insert,update e delete sulle tabelle. La sintassi per la creazione dei trigger è: CREATE TRIGGER nome_trigger { BEFORE AFTER } { event [ OR... ] } ON table [ FOR [ EACH ] { ROW STATEMENT } ] [ WHEN ( condition ) ] EXECUTE PROCEDURE nome_funzione ( arguments ) Postgres offre sia trigger a livello di riga (perriga) che trigger a livello di funzione (peristruzione). Se è del tipo perriga, la funzione trigger viene invocata una volta per ogni riga che è coinvolta dall'istruzione che ha lanciato il trigger. Al contrario, se è peristruzione viene invocato solo una volta quando un'istruzione adatta viene eseguita, a prescindere dal numero di righe coinvolte dall'istruzione. Postgres inoltre mette a disposizione un potente sistema di regole, che è integrato nell elaborazione delle istruzioni SQL. Il sistema di regole di Postgres opera a valle della fase di parsing e a monte di quella di ottimizzazione. La sintassi generale è: CREATE RULE nameas ON event TO table[ WHERE condition] DO [ALSO INSTEAD] {NOTHING command (command;command...)} È possibile inoltre impostare cursori per restituire in modo efficiente grandi insiemi di righe da funzioni. La sintassi generale è: DECLARE nome_cursore [ [ NO ] SCROLL ] CURSOR [ ( arguments ) ] FOR query; La clausola FOR può essere sostituita da IS per compatibilità con Oracle. Sei viene specificato SCROLL, il cursore sarà capace di scorrere all'indietro, no altrimenti; se non appare nessuna delle due specifiche, dipenderà dalla query se saranno permesse ricerche all'indietro. Se specificato, arguments è un elenco separato da virgole di coppie name datatype che definisce i nomi da sostituire con i valori dei parametri nella

20 query data. Le operazioni per manipolare i cursori sono le stesse di SQLServer (clausole OPEN, FETCH INTO, MOVE, CLOSE, ecc...). INTERFACCIA Come già detto durante la fase di installazione, posso connettermi al database in 2 modi: da terminale usando il client psql, oppure sfruttando il client grafico pgadmin. Ma è possibile anche scaricare altri applicativi a interfaccia grafica che svolgono gli stessi compiti due programmi precedenti (un esempio è phpgadmin). L interfaccia a riga di comando di psql è la seguente (nell esempio mi sono connesso a un database): Per interagire con questo tipo di interfaccia bisogna utilizzare i comandi classici di SQL per poter creare quello che voglio o formulare query, oppure utilizzare quelli forniti da psql che cominciano con il carattere / e consentono di conoscere la struttura del database e dei suoi oggetti. Ad esempio: \d fornisce l'elenco degli oggetti nel database, \d nome_tabella fornisce la struttura di una tabella, \df fornisce l'elenco delle stored procedure, ecc

21 Se invece voglio utilizzare l interfaccia grafica di pgadmin per interagire con la base di dati, tutto risulterà più facile e visivamente preferibile rispetto al terminale. La schermata principale di pgadmin (nell esempio sono connesso a un database) è la seguente: Risulterà anche più intuitivo creare nuovi database o oggetti, oppure fare query e sfruttare al meglio tutte le altre utilità supportate da Postgres.

22 PRESTAZIONI Il miglioramento delle prestazioni di un database server è il cosiddetto tuning, e in Postgres abbiamo visto che avviene per esempio attraverso l uso di clausole come EXPLAIN, ANALYZE, VACUUM, l utilizzo dello Shared Buffer Cache per velocizzare l accesso ai dati e l uso degli indici. Ma le prestazioni di un database server dipendono anche dal sistema operativo sul quale esso gira, e quindi è strettamente collegato alla CPU. Quando la dimensione del database supera i 5 GigaByte, le prestazioni delle macchine con cpu a 32 bit decadono rapidamente e quindi è fortemente consigliato l'uso di macchine a 64 bit. Il vantaggio di una macchina a 64 bit, è che si può avere un grandissimo spazio di indirizzamento di memoria, e il sistema operativo può supportare file system molto estesi, può fornire migliori prestazioni con grandi database, può supportare memoria (RAM) molto maggiore, ha maggiori funzionalità, ecc.. Siccome nelle prestazioni incidono anche il bilanciamento del carico e la possibilità di adattarsi e risolvere eventuali malfunzionamenti o errori, assume un ruolo rilevante la replicazione del database server o clustering. In pratica più server di database possono lavorare insieme per consentire a un secondo server di rilevare rapidamente in caso di errore il server primario (high availability), o per consentire a computer diversi di servire gli stessi dati (bilanciamento del carico). Per garantire scritture e letture coerenti su tutti i server replicati è importante il concetto di sincronizzazione: i server che possono modificare i dati in lettura/scrittura vengono chiamati server primari o master, mentre i server che tengono traccia delle modifiche nel master sono chiamati server di standby o slave. Alcune soluzioni sono sincrone, ovvero una modifica di dati delle transazioni non è considerata completata fino a quando tutti i server hanno completato la transazione. In caso di lentezza delle sincrone, si possono utilizzare soluzioni asincrone che consentono un certo ritardo tra il momento del commit e la sua propagazione agli altri server, ma così facendo aumenta la possibilità che alcune transazioni potrebbero andare perse nel passaggio ad un server slave. Una soluzione che adotta Postgres è il warm standby : ci crea un cluster HA (high availability) in cui uno o più server sono in standby e pronti a prendere il posto del server primario in caso di suoi malfunzionamenti.

23 Esistono tante altre soluzioni adottate da Postgres grazie a vari moduli aggiuntivi, tra i più importanti: Slony1: consente la replicazione asincrona Master/MultiSlave con granularita' a livello di tabella. Quindi è possibile configurare tabelle che vengono replicate dal Master verso uno o più Slave su cui i dati sono accessibili in lettura. L'implementazione è basata su trigger e trasmissione asicrona. PGCluster: supporta il multi master e la replicazione sincrona, ma rispetto al precedente ha un peso computazionale maggiore. pgpool: supporta il bilanciamento del carico e la replica mediante l implementazione di un proxy che duplica tutti gli aggiornamenti a tutti gli slave (fa da middlewere).

24 Tenendo conto delle seguenti caratteristiche della mia macchina operativa: misuro le performance di Postgres 9.1, effettuando i seguenti benchmark: EMP7: utilizzando il client pgadmin ed eseguendo 10 volte la query del test Emp7 si calcola un tempo medio circa pari a 17,6 secondi. TPC B : è costituito da un unico tipo di transazione che esegue selects, updates e inserts su quattro tabelle distinte nel sistema create sfruttando il programma pgbench (tabelle: accounts, tellers, branches e history). Si misura il numero di transazioni al secondo. Per ogni run identica posso ottenere risultati diversi (non è costante nei numeri). Ecco un esempio di output generato:

25 Nell esempio, per un singolo cliente vengono svolte 10 transazioni e facendo anche più run in media si hanno circa 30 transazioni al secondo. Cambiando i valori di c per il numero di clienti e t per il numero delle transazioni per cliente, ottengo risultati diversi. In particolare tenendo costante il numero di clienti (es: 10) e aumentando man mano il numero di transazioni per cliente, ottengo un aumento delle transazioni al secondo:

26 Posso anche pensare di cambiare il fattore di scala s, mettendo così in relazione il numero di transazioni al secondo con le dimensioni del database. In genere ottengo un andamento simile al seguente:

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1 IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Mac Application Manager 1.3 (SOLO PER TIGER)

Mac Application Manager 1.3 (SOLO PER TIGER) Mac Application Manager 1.3 (SOLO PER TIGER) MacApplicationManager ha lo scopo di raccogliere in maniera centralizzata le informazioni piu salienti dei nostri Mac in rete e di associare a ciascun Mac i

Dettagli

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione IMPLEMENTAZIONE DEL FILE SYSTEM 9.1 Implementazione del File System Struttura del File System Implementazione Implementazione delle Directory Metodi di Allocazione Gestione dello spazio libero Efficienza

Dettagli

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati

Informatica Generale Andrea Corradini. 19 - Sistemi di Gestione delle Basi di Dati Informatica Generale Andrea Corradini 19 - Sistemi di Gestione delle Basi di Dati Sommario Concetti base di Basi di Dati Il modello relazionale Relazioni e operazioni su relazioni Il linguaggio SQL Integrità

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

PostgreSQL - amministrazione

PostgreSQL - amministrazione PostgreSQL - amministrazione ITPUG - Pisa - 08/05/2009 Gabriele Bartolini Flavio Casadei Della Chiesa Luca Ferrari Marco Tofanari Associazione Italiana PostgreSQL Users Group www.itpug.org Pisa, 8 Maggio

Dettagli

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque? NOSQL Data Model HBase si ispira a BigTable di Google e perciò rientra nella categoria dei column store; tuttavia da un punto di vista logico i dati sono ancora organizzati in forma di tabelle, in cui

Dettagli

Introduzione all Architettura del DBMS

Introduzione all Architettura del DBMS Introduzione all Architettura del DBMS Data Base Management System (DBMS) Un DBMS è uno strumento per la creazione e la gestione efficiente di grandi quantità di dati che consente di conservarli in modo

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

La Metodologia adottata nel Corso

La Metodologia adottata nel Corso La Metodologia adottata nel Corso 1 Mission Statement + Glossario + Lista Funzionalià 3 Descrizione 6 Funzionalità 2 Schema 4 Schema 5 concettuale Logico EA Relazionale Codice Transazioni In PL/SQL Schema

Dettagli

Organizzazione degli archivi

Organizzazione degli archivi COSA E UN DATA-BASE (DB)? è l insieme di dati relativo ad un sistema informativo COSA CARATTERIZZA UN DB? la struttura dei dati le relazioni fra i dati I REQUISITI DI UN DB SONO: la ridondanza minima i

Dettagli

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione

DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE. SQL è più di un semplice linguaggio di interrogazione SQL DDL, VINCOLI D INTEGRITÁ, AGGIORNAMENTI E VISTE SQL è più di un semplice linguaggio di interrogazione! Linguaggio di definizione dati (Data-definition language, DDL):! Crea/distrugge/modifica relazioni

Dettagli

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti

Servizi Remoti. Servizi Remoti. TeamPortal Servizi Remoti 20120300 INDICE 1. Introduzione... 3 2. Consultazione... 4 2.1 Consultazione Server Fidati... 4 2.2 Consultazione Servizi Client... 5 2.3 Consultazione Stato richieste... 5 3. Amministrazione... 6 3.1

Dettagli

Database e reti. Piero Gallo Pasquale Sirsi

Database e reti. Piero Gallo Pasquale Sirsi Database e reti Piero Gallo Pasquale Sirsi Approcci per l interfacciamento Il nostro obiettivo è, ora, quello di individuare i possibili approcci per integrare una base di dati gestita da un in un ambiente

Dettagli

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it MODELLO CLIENT/SERVER Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena daino@unisi.it POSSIBILI STRUTTURE DEL SISTEMA INFORMATIVO La struttura di un sistema informativo

Dettagli

Backup e Restore di un database PostgreSQL Sandro Fioravanti INFN-LNF

Backup e Restore di un database PostgreSQL Sandro Fioravanti INFN-LNF SPARC-CS-12/001 20 Gennaio 2012 Backup e Restore di un database PostgreSQL Sandro Fioravanti INFN-LNF Abstract Vengono descritte le procedure di backup e restore dei dati memorizzati in un database di

Dettagli

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Gestione Rifiuti Funzioni di Esportazione e Importazione Airone Funzioni di Esportazione Importazione 1 Indice AIRONE GESTIONE RIFIUTI... 1 FUNZIONI DI ESPORTAZIONE E IMPORTAZIONE... 1 INDICE...

Dettagli

Manuale Terminal Manager 2.0

Manuale Terminal Manager 2.0 Manuale Terminal Manager 2.0 CREAZIONE / MODIFICA / CANCELLAZIONE TERMINALI Tramite il pulsante NUOVO possiamo aggiungere un terminale alla lista del nostro impianto. Comparirà una finestra che permette

Dettagli

Il database management system Access

Il database management system Access Il database management system Access Corso di autoistruzione http://www.manualipc.it/manuali/ corso/manuali.php? idcap=00&idman=17&size=12&sid= INTRODUZIONE Il concetto di base di dati, database o archivio

Dettagli

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino Integration Services Project SQL Server 2005 Integration Services Permette di gestire tutti i processi di ETL Basato sui progetti di Business Intelligence di tipo Integration services Project SQL Server

Dettagli

EXPLOit Content Management Data Base per documenti SGML/XML

EXPLOit Content Management Data Base per documenti SGML/XML EXPLOit Content Management Data Base per documenti SGML/XML Introduzione L applicazione EXPLOit gestisce i contenuti dei documenti strutturati in SGML o XML, utilizzando il prodotto Adobe FrameMaker per

Dettagli

Tecnologia di un Database Server (centralizzato) Introduzione generale

Tecnologia di un Database Server (centralizzato) Introduzione generale Introduzione Basi di Dati / Complementi di Basi di Dati 1 Tecnologia di un Database Server (centralizzato) Introduzione generale Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

GESGOLF SMS ONLINE. Manuale per l utente

GESGOLF SMS ONLINE. Manuale per l utente GESGOLF SMS ONLINE Manuale per l utente Procedura di registrazione 1 Accesso al servizio 3 Personalizzazione della propria base dati 4 Gestione dei contatti 6 Ricerca dei contatti 6 Modifica di un nominativo

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Data Base. Master "Bio Info" Reti e Basi di Dati Lezione 6

Data Base. Master Bio Info Reti e Basi di Dati Lezione 6 Data Base 1 Sommario I concetti fondamentali. Database Relazionale.. Query e SQL MySql, Creazione di un db in MySQL con PHPmyAdmin Creazione database e delle Tabelle Query Inserimento Ricerca Modifica

Dettagli

Definizione di domini

Definizione di domini Definizione di domini Come nei linguaggi ad alto livello (es. C) è possibile definire nuovi domini (tipi di dati) a partire da quelli predefiniti, anche se il costruttore è più limitato. create domain

Dettagli

Manuale per la configurazione di AziendaSoft in rete

Manuale per la configurazione di AziendaSoft in rete Manuale per la configurazione di AziendaSoft in rete Data del manuale: 7/5/2013 Aggiornamento del manuale: 2.0 del 10/2/2014 Immagini tratte da Windows 7 Versione di AziendaSoft 7 Sommario 1. Premessa...

Dettagli

Il web server Apache Lezione n. 3. Introduzione

Il web server Apache Lezione n. 3. Introduzione Procurarsi ed installare il web server Apache Introduzione In questa lezione cominciamo a fare un po di pratica facendo una serie di operazioni preliminari, necessarie per iniziare a lavorare. In particolar

Dettagli

Ottimizzazione delle interrogazioni (parte I)

Ottimizzazione delle interrogazioni (parte I) Ottimizzazione delle interrogazioni I Basi di Dati / Complementi di Basi di Dati 1 Ottimizzazione delle interrogazioni (parte I) Angelo Montanari Dipartimento di Matematica e Informatica Università di

Dettagli

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito)

IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito) IBM SPSS Statistics per Linux - Istruzioni di installazione (Licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Statistics versione 21 con licenza per sito. Questo documento

Dettagli

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo)

Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo) Istruzioni di installazione di IBM SPSS Modeler Text Analytics (utente singolo) Le seguenti istruzioni sono relative all installazione di IBM SPSS Modeler Text Analytics versione 15 mediante un licenza

Dettagli

Access. P a r t e p r i m a

Access. P a r t e p r i m a Access P a r t e p r i m a 1 Esempio di gestione di database con MS Access 2 Cosa è Access? Access e un DBMS che permette di progettare e utilizzare DB relazionali Un DB Access e basato sui concetti di

Dettagli

MANUALE EDICOLA 04.05

MANUALE EDICOLA 04.05 MANUALE EDICOLA 04.05 Questo è il video che si presenta avviando il programma di Gestione Edicola. Questo primo video è relativo alle operazioni di carico. CARICO Nello schermo di carico, in alto a sinistra

Dettagli

Capitolo 13. Interrogare una base di dati

Capitolo 13. Interrogare una base di dati Capitolo 13 Interrogare una base di dati Il database fisico La ridondanza è una cosa molto, molto, molto brutta Non si devono mai replicare informazioni scrivendole in più posti diversi nel database Per

Dettagli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Mon Ami 3000 Varianti articolo Gestione di varianti articoli Prerequisiti Mon Ami 3000 Varianti articolo Gestione di varianti articoli L opzione Varianti articolo è disponibile per le versioni Azienda Light e Azienda Pro e include tre funzionalità distinte: 1. Gestione

Dettagli

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico Introduzione alle basi di dati Introduzione alle basi di dati Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS Gestione delle

Dettagli

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone

BASI DI DATI per la gestione dell informazione. Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone BASI DI DATI per la gestione dell informazione Angelo Chianese Vincenzo Moscato Antonio Picariello Lucio Sansone Libro di Testo 22 Chianese, Moscato, Picariello e Sansone BASI DI DATI per la Gestione dell

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

MANUALE PARCELLA FACILE PLUS INDICE

MANUALE PARCELLA FACILE PLUS INDICE MANUALE PARCELLA FACILE PLUS INDICE Gestione Archivi 2 Configurazioni iniziali 3 Anagrafiche 4 Creazione prestazioni e distinta base 7 Documenti 9 Agenda lavori 12 Statistiche 13 GESTIONE ARCHIVI Nella

Dettagli

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito)

IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito) IBM SPSS Statistics per Mac OS - Istruzioni di installazione (Licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Statistics versione 21 con licenza per sito. Questo documento

Dettagli

Laboratorio di Basi di Dati e Web

Laboratorio di Basi di Dati e Web Laboratorio di Basi di Dati e Web Docente: Alberto Belussi Lezione 1 SQL Structured Query Language SQL è stato definito nel 1973 ed è oggi il linguaggio più diffuso per i DBMS relazionali Il linguaggio

Dettagli

Lorenzo Sarti sarti@dii.unisi.it Materiale didattico http://www.dii.unisi.it/~ sarti

Lorenzo Sarti sarti@dii.unisi.it Materiale didattico http://www.dii.unisi.it/~ sarti Lorenzo Sarti sarti@dii.unisi.it Materiale didattico http://www.dii.unisi.it/~ sarti Obiettivi esercitazioni Utilizzare nella pratica un DBMS Apprendere il linguaggio SQL Apprendere come si accede ad un

Dettagli

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1

Gestione delle transazioni. Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Gestione delle transazioni Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke 1 Transazioni v L esecuzione concorrente dei programmi utente è essenziale per le buone prestazioni del DBMS Poiché

Dettagli

GERARCHIE RICORSIVE - SQL SERVER 2008

GERARCHIE RICORSIVE - SQL SERVER 2008 GERARCHIE RICORSIVE - SQL SERVER 2008 DISPENSE http://dbgroup.unimo.it/sia/gerarchiericorsive/ L obiettivo è quello di realizzare la tabella di navigazione tramite una query ricorsiva utilizzando SQL SERVER

Dettagli

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base... 45 Variabili, operatori e commenti... 47 Array...

Indice generale. Capitolo 3 Introduzione a PHP...43 Sintassi e istruzioni di base... 45 Variabili, operatori e commenti... 47 Array... Prefazione...xiii A chi si rivolge il libro... xiv Struttura e contenuti del libro... xiv Dove trovare aiuto... xvii Le newsletter di SitePoint... xviii I vostri commenti... xviii Convenzioni adottate

Dettagli

Database. Si ringrazia Marco Bertini per le slides

Database. Si ringrazia Marco Bertini per le slides Database Si ringrazia Marco Bertini per le slides Obiettivo Concetti base dati e informazioni cos è un database terminologia Modelli organizzativi flat file database relazionali Principi e linee guida

Dettagli

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL. Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL. 2ELHWWLYL GD UDJJLXQJHUH SHU JOL VWXGHQWL alla fine dell esercitazione gli studenti dovranno essere in grado di: 1. utilizzare

Dettagli

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE

ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE ATOLLO BACKUP GUIDA INSTALLAZIONE E CONFIGURAZIONE PREMESSA La presente guida è da considerarsi come aiuto per l utente per l installazione e configurazione di Atollo Backup. La guida non vuole approfondire

Dettagli

Il Software. Il software del PC. Il BIOS

Il Software. Il software del PC. Il BIOS Il Software Il software del PC Il computer ha grandi potenzialità ma non può funzionare senza il software. Il software essenziale per fare funzionare il PC può essere diviso nelle seguenti componenti:

Dettagli

19. LA PROGRAMMAZIONE LATO SERVER

19. LA PROGRAMMAZIONE LATO SERVER 19. LA PROGRAMMAZIONE LATO SERVER Introduciamo uno pseudocodice lato server che chiameremo Pserv che utilizzeremo come al solito per introdurre le problematiche da affrontare, indipendentemente dagli specifici

Dettagli

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL

Basi di dati. Il Linguaggio SQL. K. Donno - Il Linguaggio SQL Basi di dati Il Linguaggio SQL Data Definition Language (DDL) Data Definition Language: insieme di istruzioni utilizzate per modificare la struttura della base di dati Ne fanno parte le istruzioni di inserimento,

Dettagli

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass 0_Iniziare con GRASS Avvio di Grass e creazione della cartella del Database di GRASS Per chi ha la Virtual Machine: avviare Grass da terminale, andando su Applicazioni Accessori Terminale e scrivere grass

Dettagli

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere

Procedura per creare un archivio storico remoto nelle 24 ore giornaliere Procedura per creare un archivio storico remoto nelle 24 ore giornaliere La seguente procedura ha lo scopo di illustrare il metodo di creazione di un archivio storico fotografico nell arco delle 24 ore

Dettagli

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Sistema operativo Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base Architettura a strati di un calcolatore

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Capitolo 4 Pianificazione e Sviluppo di Web Part

Capitolo 4 Pianificazione e Sviluppo di Web Part Capitolo 4 Pianificazione e Sviluppo di Web Part Questo capitolo mostra come usare Microsoft Office XP Developer per personalizzare Microsoft SharePoint Portal Server 2001. Spiega come creare, aggiungere,

Dettagli

1) GESTIONE DELLE POSTAZIONI REMOTE

1) GESTIONE DELLE POSTAZIONI REMOTE IMPORTAZIONE ESPORTAZIONE DATI VIA FTP Per FTP ( FILE TRANSFER PROTOCOL) si intende il protocollo di internet che permette di trasferire documenti di qualsiasi tipo tra siti differenti. Per l utilizzo

Dettagli

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE 1/6 MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE Per prima cosa si ringrazia per aver scelto ImmobiPhone e per aver dato fiducia al suo autore. Il presente documento istruisce l'utilizzatore sull'uso del programma

Dettagli

File system II. Sistemi Operativi Lez. 20

File system II. Sistemi Operativi Lez. 20 File system II Sistemi Operativi Lez. 20 Gestione spazi su disco Esiste un trade-off,tra spreco dello spazio e velocità di trasferimento in base alla dimensione del blocco fisico Gestione spazio su disco

Dettagli

L architettura di un DBMS

L architettura di un DBMS L architettura di un DBMS sources: Lucidi del corso di Lucidi del corso di Laboratorio di Basi di dati e sistemi informativi, Montesi, Magnani, Corso di laurea in Informatica per il management, Scienze

Dettagli

Il Sistema Operativo

Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al meglio le risorse del Sistema

Dettagli

GRUPPO CAMBIELLI. Posta elettronica (Webmail) Consigli di utilizzo

GRUPPO CAMBIELLI. Posta elettronica (Webmail) Consigli di utilizzo GRUPPO CAMBIELLI Posta elettronica (Webmail) Consigli di utilizzo Questo sintetico manuale ha lo scopo di chiarire alcuni aspetti basilari per l uso della posta elettronica del gruppo Cambielli. Introduzione

Dettagli

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Manuale Amministratore Legalmail Enterprise Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise Pagina 2 di 16 Manuale Amministratore Legalmail Enterprise Introduzione a Legalmail Enterprise...3

Dettagli

1. BASI DI DATI: GENERALITÀ

1. BASI DI DATI: GENERALITÀ 1. BASI DI DATI: GENERALITÀ BASE DI DATI (DATABASE, DB) Raccolta di informazioni o dati strutturati, correlati tra loro in modo da risultare fruibili in maniera ottimale. Una base di dati è usualmente

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Progettaz. e sviluppo Data Base

Progettaz. e sviluppo Data Base Progettaz. e sviluppo Data Base! Introduzione ai Database! Tipologie di DB (gerarchici, reticolari, relazionali, oodb) Introduzione ai database Cos è un Database Cos e un Data Base Management System (DBMS)

Dettagli

Transazioni - Parte 1

Transazioni - Parte 1 Basi di dati II Lezione 3 09/10/2008 Caputo Domenico Cosimo, Francesco Pichierri Transazioni - Parte 1 Le transazioni hanno a che fare con la programmabilità delle basi di dati. Prima di trattarle è necessaria

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti. SH.MedicalStudio Presentazione SH.MedicalStudio è un software per la gestione degli studi medici. Consente di gestire un archivio Pazienti, con tutti i documenti necessari ad avere un quadro clinico completo

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Introduzione al data base

Introduzione al data base Introduzione al data base L Informatica è quella disciplina che si occupa del trattamento automatico dei dati con l ausilio del computer. Trattare i dati significa: raccoglierli, elaborarli e conservarli

Dettagli

Come modificare la propria Home Page e gli elementi correlati

Come modificare la propria Home Page e gli elementi correlati Come modificare la propria Home Page e gli elementi correlati Versione del documento: 3.0 Ultimo aggiornamento: 2006-09-15 Riferimento: webmaster (webmaster.economia@unimi.it) La modifica delle informazioni

Dettagli

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO Descrizione Nell ambito della rilevazione dei costi, Solari con l ambiente Start propone Time&Cost, una applicazione che contribuisce a fornire

Dettagli

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. *+33(GLWRU GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain. Il programma si basa su un architettura di tasti funzionali presenti

Dettagli

Cosa è un foglio elettronico

Cosa è un foglio elettronico Cosa è un foglio elettronico Versione informatica del foglio contabile Strumento per l elaborazione di numeri (ma non solo...) I valori inseriti possono essere modificati, analizzati, elaborati, ripetuti

Dettagli

Progettazione di una base di dati Ufficio della Motorizzazione

Progettazione di una base di dati Ufficio della Motorizzazione Corso di Gestione dell Informazione Studenti NON frequentanti A.A. 2008/2009 1 Scopo del progetto Progettazione di una base di dati Ufficio della Motorizzazione Si vuole realizzare un applicazione base

Dettagli

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0

NOTE OPERATIVE. Prodotto Inaz Download Manager. Release 1.3.0 Prodotto Inaz Download Manager Release 1.3.0 Tipo release COMPLETA RIEPILOGO ARGOMENTI 1. Introduzione... 2 2. Architettura... 3 3. Configurazione... 4 3.1 Parametri di connessione a Internet... 4 3.2

Dettagli

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel 2000 1 Una tabella Pivot usa dati a due dimensioni per creare una tabella a tre dimensioni, cioè una tabella

Dettagli

DBMS e Linguaggi di programmazione nell'era di Internet

DBMS e Linguaggi di programmazione nell'era di Internet DBMS e Linguaggi di programmazione nell'era di Internet Crippa Francesco fcrippa@tiscalinet.it Crippa Francesco (GPL) 1 Programma del corso DBMS nati per il WEB: MySQL Postgres Il cuore del WWW, il web

Dettagli

Al giorno d oggi, i sistemi per la gestione di database

Al giorno d oggi, i sistemi per la gestione di database Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,

Dettagli

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi

. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare

Dettagli

Ti consente di ricevere velocemente tutte le informazioni inviate dal personale, in maniera assolutamente puntuale, controllata ed organizzata.

Ti consente di ricevere velocemente tutte le informazioni inviate dal personale, in maniera assolutamente puntuale, controllata ed organizzata. Sommario A cosa serve InfoWEB?... 3 Quali informazioni posso comunicare o ricevere?... 3 Cosa significa visualizzare le informazioni in maniera differenziata in base al livello dell utente?... 4 Cosa significa

Dettagli

Sistemi di gestione delle basi di dati. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

Sistemi di gestione delle basi di dati. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma Sistemi di gestione delle basi di dati 1 Cos è un DBMS? Una collezione integrata molto grande di dati Modella organizzazioni del mondo reale Entità (ad esempio studenti, corsi) Relazioni (ad esempio, Madonna

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

Corso di Amministrazione di Reti A.A. 2002/2003

Corso di Amministrazione di Reti A.A. 2002/2003 Struttura di Active Directory Corso di Amministrazione di Reti A.A. 2002/2003 Materiale preparato utilizzando dove possibile materiale AIPA http://www.aipa.it/attivita[2/formazione[6/corsi[2/materiali/reti%20di%20calcolatori/welcome.htm

Dettagli

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I

Dettagli

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1 MECCANISMI E POLITICHE DI PROTEZIONE 13.1 Protezione Obiettivi della Protezione Dominio di Protezione Matrice di Accesso Implementazione della Matrice di Accesso Revoca dei Diritti di Accesso Sistemi basati

Dettagli

Lezione 8. Metadati, Viste e Trigger

Lezione 8. Metadati, Viste e Trigger Lezione 8 Metadati, Viste e Trigger Pag.1 Metadati e catalogo di sistema I metadati sono dati a proposito dei dati (quali tabelle esistono?, quali campi contengono?, quante tuple contengono?, ci sono vincoli

Dettagli

ORACOLO Gestione questionari.

ORACOLO Gestione questionari. ORACOLO Gestione questionari. Oracolo è un software di gestione questionari e test nato per raccolta dati ad uso scientifico. Oracolo è adatto a raccogliere dati su questionari personalizzabili di qualunque

Dettagli

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software di sistema e software applicativo I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche Software soft ware soffice componente è la parte logica

Dettagli

Funzioni non documentate Openoffice.org. 3 Base mini-howto

Funzioni non documentate Openoffice.org. 3 Base mini-howto Funzioni non documentate Openoffice.org. 3 Base mini-howto Augusto Scatolini (webmaster@comunecampagnano.it) Ver. 1.0 gennaio 2009 Come risolvere il problema del contatore che inizia da 0 (zero) Come importare

Dettagli

Soluzione dell esercizio del 2 Febbraio 2004

Soluzione dell esercizio del 2 Febbraio 2004 Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito)

IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito) IBM SPSS Statistics per Windows - Istruzioni di installazione (Licenza per sito) Le seguenti istruzioni sono relative all installazione di IBM SPSS Statistics versione 21 con licenza per sito. Questo documento

Dettagli

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori. Release 5.20 Manuale Operativo ORDINI PLUS Gestione delle richieste di acquisto In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori. La gestione

Dettagli

Installazione e caratteristiche generali 1

Installazione e caratteristiche generali 1 Installazione e caratteristiche generali 1 Introduzione SIGLA Ultimate e SIGLA Start Edition possono essere utilizzati solo se sono soddisfatti i seguenti prerequisiti: Microsoft.Net Framework 3.5 (consigliato

Dettagli

Domande frequenti su Phoenix FailSafe

Domande frequenti su Phoenix FailSafe Domande frequenti su Phoenix FailSafe Phoenix Technologies Ltd, leader riconosciuto per la produzione di piattaforme software, strumenti e applicazioni per sistemi strategici di livello mondiale, introduce

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo

Sistema Operativo. Fondamenti di Informatica 1. Il Sistema Operativo Sistema Operativo Fondamenti di Informatica 1 Il Sistema Operativo Il Sistema Operativo (S.O.) è un insieme di programmi interagenti che consente agli utenti e ai programmi applicativi di utilizzare al

Dettagli