Introduzione a PostgreSQL

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Introduzione a PostgreSQL"

Transcript

1 Introduzione a PostgreSQL (il piu' avanzato database OpenSource al mondo) Ing. Luca Ferrari, PhD fluca1978@gmail.com Italian PostgreSQL Users Group ITPug

2 Synopsis Questa presentazione vuole introdurre PostgreSQL, il piu' avanzato database OpenSource al mondo. Verranno trattati diversi temi, fra i quali i principali sono: La comunità internazionale e nazionale La storia del progetto, lo stato attuale e gli sviluppi futuri Installazione e utilizzo di base del sistema Accenni al funzionamento interno Transazioni Window Functions e CTE Cool Features Partitioning 2 di 139

3 Database Un database è un contenitore di dati (generalmente strutturati). Perché occorre usare un database? Principio di delega: il database si occupa solo dei dati, e li gestisce nel modo migliore indipendentemente dalle applicazioni che ne hanno bisogno. Fruibilità: usando un database i dati vengono svincolati dalla applicazione, e quindi i dati possono essere accessibili da diverse applicazioni. 3 di 139

4 Vantaggi nell'uso di un database Il database si occupa della gestione degli accessi allo spazio di memorizzazione (disco) Il database organizza i dati in modo da garantire il miglior accesso agli stessi Il database mantiene i dati coerenti (non significa corretti, ma non sbagliati) Il database gestisce gli accessi concorrenti Il database consente backup, ripristino, replicazione, Non si reinventa la ruota! 4 di 139

5 Tipologie di database I database possono essere classificati in base alle loro caratteristiche in diversi insiemi ortogonali: Relational Database Object Database Embedded (es. BerkelyDB, Derby) Server (es. MySQL, PostgreSQL) Document Oriented (CouchDB, Haddop)... 5 di 139

6 Database maggiormente affermati I database maggiormenti affermati sono quelli di tipo relazionale, con tuple disposte per righe (esistono anche database per colonne!). Il linguaggio (dichiarativo) standard per l'interazione con tali database è lo Structured Query Language (SQL). 6 di 139

7 Database relazionali I dati sono correlati fra loro sulla base del loro valore. I Relational Database (RDBMS) sfruttano le foreign keys (chiavi esterne) per imporre i vincoli di integrità referenziali. Ovviamente una chiave esterna deve identificare univocamente una tupla nell'entità referenziata. 7 di 139

8 Introduzione a PostgreSQL 8 di 139

9 Introduzione a PostgreSQL PostgreSQL è un ORDBMS (Object Relational Database Management System) di classe enterprise E' un prodotto Open-Source mantenuto da un team mondiale di sviluppatori ed esperti E' conforme agli standard SQL (SQL 2003) supportandone caratteristiche sintattiche e semantiche 9 di 139

10 Storia Il prof. Michael Stonebreaker dell'university of Berkely crea un database denominato Ingres. Lascia poi l'università per creare un'azienda che si occupi del business Ingres. Successivamente torna all'università con l'intenzione di creare un nuovo database, sfruttando quanto imparato dal progetto Ingres. 1986: 1986 il prof. Stonebreaker è a capo di un progetto finanziato da DARPA e ARO per la creazione di POSTGRES; 1988: 1988 la prima versione di POSTGRES; 1990: 1990 POSTGRES v : 1991 POSTGRES v : 1994 Andrew Yu e Jolly Chen aggiungono il supporto per l SQL; il pacchetto viene rilasciato con il nome di POSTGRES95; 1996: 1996 continua lo sviluppo, si cambia nome in POSTGRESQL v.6; 2006: 2006 viene rilasciata la versione : 2007 primo PGDay in Italia (international) 2008: 2008 viene rilasciata la versione 8.3 secondo PGDay in Italia (international) - ITPUG 2009: 2009 viene rilasciata la versione 8.4 terzo PGDay in Italia (National) 2010: 2010 viene rilasciata la versione di 139

11 La nascita del Core Team La nascita del Core Team Date: Mon, 08 Jul :12: (EDT) Date: Mon, 08 Jul :12: (EDT) From: "Marc G. Fournier" From: "Marc G. Fournier" Subject: [PG95]: Developers interested in improving PG95? Subject: [PG95]: Developers interested in improving PG95? To: Postgres 95 Users To: Postgres 95 Users Hi... A while back, there was talk of a TODO list and development moving forward on Hi... A while back, there was talk of a TODO list and development moving forward on Postgres95... at which point in time I volunteered to put up a cvs archive and sup server Postgres95... at which point in time I volunteered to put up a cvs archive and sup server so that making updates (and getting at the "newest source code") was easier to do... so that making updates (and getting at the "newest source code") was easier to do Just got the sup server up and running, and for those that are familiar with sup, the... Just got the sup server up and running, and for those that are familiar with sup, the following should work (ie. I can access the sup server from my machines using this): following should work (ie. I can access the sup server from my machines using this): Thomas Lockhart (ritirato), Jan Wieck, Tom Lane, Marc Fournier Vadim Mikheev, Bruce Momjian 11 di 139

12 Caratteristiche principali Modello client-server: i dati sono gestiti in modo centralizzato (server) e messi a disposizione di più fruitori (client) Avanzato supporto per lo standard SQL2003: garantisce la portabilità di applicazioni Concorrenza e Multi-utenza: supporta connessioni e query multiple contemporaneamente Integrità referenziale: garantisce la coerenza dei dati rispetto alle business rules Transazioni: esecuzione di più istruzioni in modo coerente (ACID rules) Sub-query: possibilità di innestare le query Indici: diverse modalità di accesso rapido ai dati (anche per controllo di coerenza) Replica: possibilità di sincronizzare due o più istanze fra loro 12 di 139

13 Caratteristiche principali Query planner: le query sono analizzate per individuare il miglior percorso di accesso ai dati Triggers: reazione agli eventi di inserimento, cancellazione, aggiornamento di tuple Rules: possibilità di ordinare la riscrittura di query Stored procedures: funzioni memorizzate presso il server Ereditarietà: relazione padre-figlio fra le tabelle Sequenze: produzione di valori auto-incrementati Tipi di dato: possibilità di definire un tipo di dato personalizzato Tablespaces: controllo sullo storage fisico Partizionamento: possiblità di separare i dati e organizzarli secondo le esigenze fisiche di storage Connettività da diversi linguaggi: Perl, Java, C, Python, Ruby, PHP,... Linguaggi integrati: PL/Perl, PL/Java, PL/PGSQL, Common Table Expressions: CTE (clausola WITH) 13 di 139

14 Licenza BSD like PostgreSQL Database Management System (formerly known as Postgres, then as Postgres95) Portions Copyright (c) , The PostgreSQL Global Development Group Portions Copyright (c) 1994, The Regents of the University of California Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. 14 di 139

15 Un problema di diffusione? It is a simple, permissive non copyleft free software license, compatible with the GNU GPL. We urge you not to use the original BSD license for software you write. 15 di 139

16 16 di 139

17 Esiste anche il planet italiano: 17 di 139

18 18 di 139

19 Users' Group Italiano di PostgreSQL Fornisce un front end per le aziende e le istituzioni che vogliano usare PostgreSQL. Si occupa della diffusione di PostgreSQL e della sua ideologia. Definisce una serie di chapter regionali per la localizzazione sul territorio. 19 di 139

20 20 di 139

21 PostgreSQL Weekly News 21 di 139

22 Community 22 di 139

23 Installazione, concetti base e primo utilizzo 23 di 139

24 Numeri di versione Il Il primo primo numero numero è è un un major major number number e e indica il settore di mercato in cui si indica il settore di mercato in cui si colloca la release. colloca la release. Ad esempio la 7.x.x era denominata no Ad esempio la 7.x.x era denominata no crash, la 8.x.x era quella con il port crash, la 8.x.x era quella con il port Windows. Windows. Il terzo numero è un minor Il terzo numero è un minor number e indica il patch level number e indica il patch level della release. della release. Richiede un nuovo initdb. Non richiede initdb. Il secondo numero è un major number e Il secondo numero è un major number e indica il numero annuale di release. indica il numero annuale di release. Deve Deve essere essere combinato combinato con con il il primo primo numero numero per per fare fare riferimento riferimento ad ad una una release specifica. release specifica. 24 di 139

25 Installazione Su Linux distribuzioni Debian-like: apt get install postgresql apt get install postgresql doc apt get install postgresql contrib Potrebbe essere necessario inizializzare la directory che conterrà i dati con initdb. Su *BSD: cd /usr/ports/databases/postgresql84server && make install E' ovviamente possibile compilare dai sorgenti, per avere un ambiente ottimizzato. Il demone PostgreSQL gestisce un cluster di database, ovvero un insieme di più database possono risiedere sullo stesso host e possono essere gestiti dallo stesso processo. 25 di 139

26 template1, template0 Appena installato il cluster mette a disposizione un database vuoto, usato come template per la creazione di altri database: template1. Tutte le caratteristiche di template1 possono essere modificate dall'utente, e saranno riflesse in ogni nuovo database creato. Il database template0 rappresenta una copia di sicurezza di template1. 26 di 139

27 Connessione al database: psql Si può usare il client testuale psql: In modo analogo ad una shell Unix, il simbolo # identifica un prompt di amministratore, mentre un carattere > un prompt di utente normale. 27 di 139

28 Password prompt degli strumenti testuali Tutti gli strumenti testuali (psql, pg_dump, pg_dumpall, ) leggono un file particolare $HOME/.pgpass che puo' contenere l'associazione server, database, username e password. <server>:<port>:<database>:<username>:<password> dbserver:5432:raydb:luca:xxx dbserver:5432:ordinidb:luca:xxx backupserver:5432:*:luca:xxx Se viene trovata l'associazione, allora la password non viene chiesta al prompt dei comandi (comodo per l'automazione di script). 28 di 139

29 Connessione al database: pgadmin3 pgadmin3 è un client grafico basato sulle librerie wxwidgets, grazie alle quali funziona su piattaforma Linux, Unix, Microsoft, Apple 29 di 139

30 Connessione al database: phpgadmin Client Web basato su PHP 30 di 139

31 Creazione di un nuovo utente Una volta collegati al database template1 è possibile creare un nuovo utente tramite CREATE USER E' possibile creare l'utente da una shell usando il comando create_user 31 di 139

32 Creazione di un database Una volta collegati al database template1 è possibile creare un nuovo database con CREATE DATABASE. 32 di 139

33 Creazione di un database Si può anche usare lo script createdb direttamente da shell. 33 di 139

34 Creazione di una semplice tabella Ci si collega al database linuxdaydb e si impartiscono i comandi necessari: CREATE TABLE Si noti la creazione dell'indice sulla chiave primaria e sul vincolo unique. Viene inoltre creata una sequenza in automatico per il campo serial. 34 di 139

35 Popolamento del database 35 di 139

36 Introspezione I comandi \ di psql consentono di effettuare introspezione sulla struttura del database. 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 \df nome_funzione fornisce il codice sorgente della funzione 36 di 139

37 Introspezione: esempio 37 di 139

38 Cluster di database PostgreSQL è un demone che gestische un cluster di database. E' possibile vedere i database che una istanza gestisce mediante i comandi \list (da prompt psql) o flag -l da linea di comando psql. 38 di 139

39 postgresql.conf Il file postgresql.conf contiene parametri fondamentali configurazione del server. Alcuni interessanti sono: per la listen_address = 'localhost' {*, ip address} specifica per quali interfacce il server deve accettare connessioni log_statement = 'none' {none, all, ddl, mod} consente di abilitare il logging dei comandi SQL eseguiti dal server, utile per il debugging o il monitoring dell'attività del server shared_buffers = 24MB {almeno 16k a connessione} indica la memoria disponibile per PostgreSQL in cui conservare le pagine dati work_mem = 1MB è la memoria usata per il sorting (clausole ORDER BY) 39 di 139

40 postgresql.conf: ottimizzatore e costi # Definiscono quali metodi l'ottimizzatore può usare per l'accesso ai dati # (ad esempio si potrebbe voler impedire di usare il seqscan...) enable_bitmapscan = on enable_hashagg = on enable_hashjoin = on enable_indexscan = on enable_mergejoin = on enable_nestloop = on enable_seqscan = on enable_sort = on enable_tidscan = on # Costi (relativi) di accesso alle operazioni. Sostanzialmente sono # espressi in una scala arbitraria, si noti che il costo della pagina # è superiore a quello di un'operazione di CPU (es. sorting) seq_page_cost = 1.0 # measured on an arbitrary scale random_page_cost = 4.0 # same scale as above cpu_tuple_cost = 0.01 # same scale as above cpu_index_tuple_cost = # same scale as above 40 di 139

41 pg_hba.conf Il file pg_hba.conf (host base access) contiene le regole per l'accesso al server PostgreSQL da parte dei client della rete. Occorre specificare il database, la maschera di rete dei client (o l'indirizzo ip) e il metodo di accesso (trust, md5,...): # TYPE DATABASE USER CIDR ADDRESS METHOD local all all trust host all all /32 md5 host linuxdaydb linux /24 md5 host all all ::1/128 md5 41 di 139

42 Monitorare i processi PostgreSQL usa uno schemi a processi; oltre al server (chiamato postmaster) esiste un processo per ogni connessione utente. Unitamente vi sono dei processi per il WAL, per il BGWRITER e per lo STATISTIC COLLECTOR. 42 di 139

43 Monitorare le query in esecuzione E' possibile interrogare il catalogo di sistema visualizzare le attività in corso nel database: per In alternativa ogni processo backend collegato ad un client compare nella lista processi con il nome di postgres e ha una descrizione che rappresenta l'attività del processo in quel momento. 43 di 139

44 Statistiche usate dall'ottimizzatore La pseudo-tabella pg_stats contiene le informazioni sui valori che compaiono nelle colonne di una tabella. L'indice valuta questi valori, il loro istogramma e decide se vale la pena usare l'indice per la clausola di selezione indicata. 44 di 139

45 Creazione di tipi personalizzati E' possibile creare dei tipi di dato personalizzati, in modo da rendere più strutturata la definizione di una tabella. I tipi possono essere usati in ogni oggetto del database. 45 di 139

46 Creazione di array E' possibile inserire in una tabella un array di tipi (anche personalizzati) usando il costrutto []. Gli array possono anche diventare multi-dimensionali. L'indice dell'array parte sempre da 1! 46 di 139

47 Selezione/update dei valori di un array 47 di 139

48 Funzionamento interno 48 di 139

49 Layout fisico Tutti gli oggetti del database si trovano nella directory $PGDATA. Al suo interno vi sono diverse sotto-directory: base: contiene tutti i database e gli oggetti del database pg_clog: contiene lo stato delle transazioni in corso pg_xlog: contiene i log WAL pg_twophase: contiene le informazioni sul 2-ph commit pg_tblspc: contiene dei link ai tablespace definiti 49 di 139

50 Layout fisico: identificare gli oggetti Dal catalogo di sistema è possibile identificare i vari oggetti su disco: 50 di 139

51 Funzionamento interno Ad ogni connessione il processo postmaster effettua una fork e crea un processo postgres (backend) per gestire la connessione. Il parser analizza la query sintatticamente Il Traffic Cop decide se il comando è standard o di manutenzione (es. vacuum). Il rewriter considera le regole e riscrive la query corretta (es. query su una vista). L'ottimizzatore, tramite un algoritmo genetico, calcola il percorso migliore. L'executor esegue la query. 51 di 139

52 Shared Memory Tutti i processi postgres condividono una zona di memoria (shared memory) che contiene le pagine dati caricate. 52 di 139

53 Transazioni 53 di 139

54 Livelli di isolamento delle transazioni PostgreSQL supporta i quattro livelli di isolamento standard, ma internamente implementa tutto con solo due livelli: serializable e read committed (il default). La ragione di questa scelta implementativa è da ricercarsi nell'uso di MVCC! Livello di isolamento Read uncommitted Read committed Repeatable read Serializable Dirty Read Nonrepeatable Read Phantom Read Supportato in PostgreSQL Possibile Impossibile Impossibile Impossibile Possibile Possibile Impossibile Impossibile Possibile Possibile Possibile Impossibile NO SI NO SI Dirty Read: si leggono dati non ancora committati da un'altra transazione Nonrepeatable read: dati letti in precedenza sono ora modificati dal commit di un'altra transazione. Phantom Read: il set di dati che soddisfa una certa condizione è ora cambiato. Read Committed: ogni comando vede uno snapshot dei dati già committati prima dell'inizio del comando stesso. Non sono visibili tuple committate da transazioni concorrenti se il co0mmit avviene durante il comando stesso. Nel caso di update concorrente la transazione attende la fine delle altre transazioni e rivaluta la riga prima di procedere. Serializable: ogni transazione agisce emulando la serializzazione, ossia vede solo i dati che hanno subito commit all'inizio della transazione. Lo snapshot in questo caso non cambia per nessun comando della transazione. Read Committed isolamento a livello di comando Serializable isolamento a livello di transazione 54 di 139

55 Transazioni Le transazioni sono attivate con i classici comandi BEGIN e COMMIT/ROLLBACK; le transazioni possono essere innestate (sottotransazioni). Anche i SAVEPOINT sono implementati come sottotransazioni. Livello Base (gestione di un singolo comando) StartTransactionCommand CommitTransactionCommand AbortTransactionCommand Livello Utente (gestione BEGIN/END) BeginTransactionBlock EndTransactionBlock UserAbortTransactionBlock DefineSavepoint/RollbackSavepoint ReleaseSavepoint Livello Gestione (backend) StartTransaction/CommitTransaction/AbortTransaction StartSubTransaction/CommitSubTransaction/AbortSubTransaction 55 di 139

56 Transazione e Savepoint: esempio Lo stato di una transazione (committed, in progress, aborted, subcommitted) viene memorizzato su disco all'interno della directory pg_clog. 56 di 139

57 Numerazione delle transazioni 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 piu' vecchia. 57 di 139

58 Wraparound In un sistema con molte transazioni si puo' assistere ad un wraparound: due transazioni finiscono con l'avere lo stesso XID, e quindi non possono piu' essere comparate! Considerando un bit di segno, questa eventualità si verifica ogni 231 transazioni, superato il quale si ha una inversione di segno e le transazioni piu' vecchie appaiono come piu' giovani! Siccome le transazioni nel futuro non possono essere visibili (READ_COMMITTED), al wraparound si ottiene la perdita dei dati! Vacuum analizza l'età di ogni tupla (XMIN), se questo è maggiore di una soglia vicina al wraparound (min_freeze_age) allora resetta lo XMIN ad un valore di default FROZENXID. FROZENXID è l'id piu' vecchio presente nel sistema (valore numerico 3), così da apparire sempre nel passato e non essere piu' sottoposto a Vacuum. 58 di 139

59 Quanto manca al wraparound? La funzione age(..) fornisce l'età di una tupla, ovvero quante transazioni fa la tupla è stata aggiornata. Il parametro min_freeze_age determina dopo quante transazioni si deve forzare un Vacuum. 59 di 139

60 Transazioni e log: pg_clog Il log pg_clog memorizza (in modo permanente) lo stato delle transazioni avviate (ed eventualmente completate) nel sistema. Le transazioni possono essere in uno dei seguenti quattro stati (quindi richiedendo 2 bit): In progress (transazione avviata ma non completata) Committed (transazione completata con successo) Aborted (transazione completata con rollback forzato o manuale) Sub committed (sottotransazione/savepoint passato con successo) I dati di pg_clog sono mappate in memoria, così da accelerare l'accesso ai dati. L'unico caso in cui si richiede di rileggere lo stato da disco è per una transazione idle da diverso tempo. 60 di 139

61 pg_clog in dettaglio Pagina pg_clog Pagina pg_clog Le transazioni sono memorizzate secondo l'ordine dato dal loro XID (identificativo del numero di transazione). 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. Si tenga presente che in un byte ci sono le informazioni di 4 transazioni (1 byte = 2 bit * 4). n_pagina_pg_clog = ceiling( XID / ( page_size * 4 ) ) byte_interno_alla_pagina = round( XID mod( page_size * 4 ) / 4 ) offset_nel_byte = ( XID mod 4 ) 1 Qualora lo stato di transazione non sia già in cache, la lettura da disco (funzione TransactionLogFetch) mette in cache il dato. Solitamente si tiene solo uno stato in cache (ossia una sola porzione di log), viceversa la scrittura dello stato di una transazione (functione TransactionLogUpdate) può accettare anche piu' XID contemporaneamente ( ad esempio transazioni annidate). 61 di 139

62 Locking PostgreSQL supporta diversi tipi di locking: Share: prevalentemente comandi di lettura (che possono anche aggiornare) ACCESS SHARE (pura lettura) ROW SHARE (lettura/modifica, es. SELECT FOR UPDATE) Exclusive: scrittura o alterazione della struttura ACCESS EXCLUSIVE (alterazione, ALTER TABLE) ROW EXCLUSIVE (scrittura, INSERT/UPDATE) 62 di 139

63 Multi Version Concurrency Control 63 di 139

64 MVCC PostgreSQL utilizza il Multi-Version Concurrency Control per implementare l'isolamento nelle transazioni. Concettualmente ogni transazione vede uno snapshot del database e agisce su quello snapshot. Lo snapshot è costruito considerando solo le transazioni precedenti la corrente che hanno effettuato il commit. Presuppone un livello di isolamento read-committed. E' concettualmente simile alle tecniche COW (Copy On Write, come ad esempio ZFS). 64 di 139

65 MVCC: implementazione 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 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 transazione che ha accesso ai dati 65 di 139

66 MVCC: esempio Sostanzialmente il sistema controlla se la tupla è ancora visibile per l'id di transazione corrente (xmin <= transaction_id <= xmax) && (xmin committed) && (! (xmax committed locked)) e se è visibile per il comando corrente all'interno delle transazione (cmin <= command_id <= cmax) && (xmin committed xmin == current_transaction) && (! (xmax committed locked)) Il test è in realtà più complesso! (lock, xmax nullo se abort, commit) 66 di 139

67 MVCC: approccio visuale xmin cmin xmax cmax 20 talkspk talksid 1 pg01 2 pg02 3 pg03 descrizione PostgreSQL PostgreSQL/Python PostgreSQL/JDBC docente Luca Ferrari Luca Ferrari Luca Ferrari La riga 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 riga, che però esiste ancora nel database. Problema: il database rimane pieno di righe non più valide! 67 di 139

68 Vacuum Il sistema esegue (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 (ossia che hanno un xmax inferiore al prossimo id di transazione) e le cancella. In questo modo i dati si ricompattano e il database riduce il suo spazio. 68 di 139

69 Vacuum 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). Ogni volta che vacuum esegue, lo xmin di tutte le tuple visibili viene resettato (freeze) così da prevenire problemi ad un successivo wrap-around. Può essere abilitato di default nel file postgresql.conf: autovacuum = on 69 di 139

70 Vacuum: esecuzione 70 di 139

71 Informazioni di visibilità Un'operazione di Vacuum sposta e compatta le tuple, arrivando anche a cancellare quelle espirate. Come ci si comporta con l'indice che puntava a quelle tuple? L'indice non contiene il riferimento alla tupla ma solo alla pagina dati le tuple cancellate (espirate) non comportano modifiche all'indice Le tuple spostate da Vacuum comportano un nuovo aggiornamento dell'indice. 71 di 139

72 HOT Heap Only Tuples A partire dalla versione 8.3 il sistema consente anche il microvacuum, ovvero un vacuum limitato ad una sola pagina dati. Quando viene aggiornata una tupla, e l'aggiornamento non necessità di una modifica all'indice (ossia si modificano solo le colonne fuori dagli indici): La tupla vecchia viene marcata come expired; La nuova tupla viene inserita; La tupla vecchia contiene un puntatore alla tupla nuova. Seguendo i link si trova rapidamente la tupla piu' ricente nella pagina dati. 72 di 139

73 MicroVacuum Il sistema può operare un vacuum ridotto (microvacuum) all'interno della pagina dati, rimuovendo le tuple expired e i relativi link alla tupla piu' recente. In questo modo la pagina dati rimane sempre ordinata e non c'è bisogno di grossi carichi per un vacuum globale. 73 di 139

74 WAL Il Write Ahead Log mantiene le informazioni sull'andamento delle transazioni. 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 PostgreSQL divide i WAL log in segments (LSN). A questo punto i log WAL sono mantenuti in memoria, e ogni volta che si scrive una pagina di dati sporca si fa precedere la scrittura 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). 74 di 139

75 WAL: funzionamento in breve 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 di dati 3) la pagina viene marcata come dirty 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 (delta). Problema: ci si fida delle scritture del sistema operativo? 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. 75 di 139

76 Log in azione! 76 di 139

77 Come viene trattata una query? Nel file di configurazione è possibile abilitare dei parametri per visualizzare come una singola query viene trattata. La query viene tradotta in un AST (Abstract Syntax Tree) Vengono risolti gli alias e la query viene riscritta La query viene passata all'ottimizzatore per la creazione del piano di esecuzione 77 di 139

78 Vedere come viene trattata una query :19:46 CEST STATEMENT: SELECT description FROM skill; :19:46 CEST LOG: rewritten parse tree: :19:46 CEST DETAIL: ( {QUERY :commandtype 1 :intoclause <> :hasaggs false :haswindowfuncs false :hassublinks false :hasdistincton false :hasrecursive false :ctelist <> :rtable ( {RTE :alias <> :eref {ALIAS :aliasname skill :colnames ("skillpk" "skillid" "description" "skillfamilypk") } :rtekind 0 :relid :inh true :infromcl true :requiredperms 2 78 di 139

79 Pagine dati 79 di 139

80 Pagine dati Le pagine dati rappresentano una astrazione rispetto al blocco dati memorizzato su disco Una pagina dati ha sempre la stessa struttura in memoria All'interno di una pagina dati la singola tupla è acceduta per mezzo di un offset, ma indirettamente per consentire una migliore gestione. E' come se le foglie dell'indice fossere contenuto nella pagina dati stessa! 80 di 139

81 Struttura di una pagina dati Page Header Data pd_lsn pd_tli pd_lower pd_upper pd_special pd_pagesize_version pd_linp[ ] linp0 linp1 linp2 linp3 linp4 linp5... linpn La pagina contiene una serie di puntatori lineari (linear pointer linp) che indirizzano le tuple contenute nella pagina stessa. L'offset della tupla 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. pd_lower indica il punto minimo di inizio tuple (ossia dove finiscono i linp), tuplen pd_upper il punto massimo di fine tuplen 1. tuple. Il range delle tuple è quindi. identificato da pd_lower e pd_upper.. Le tuple sono organizzate a stack: ogni tuple0 nuovo tupla viene inserita in fondo Special space subito prima delle altre (crescita verso l'alto) mentre il linp viene inserito all'inizio dopo gli altri (crescita verso 81 di 139

82 pd_lsn: sincronizzazione con il WAL Ogni pagina dati include un campo importante: pd_lsn (Log Sequence Number). Tale campo contiene il valore di segmento del log WAL corrispondente all'ultima transazione che ha toccato la pagina. Questo numero serve a permettere la gestione delle transazioni: la pagina dati può essere scaricata su disco solo dopo che il log WAL è stato scritto almeno fino al segmento indicato dal pd_lsn. Così facendo, il bgwriter è sicuro che in caso di crash la transazione sia stata scritta nel WAL e la pagina possa essere ricreata. 82 di 139

83 Gestione dei buffer Le pagine dati vengono caricate in memoria condivisa in zone dette buffer Ogni processo utente può accedere ai buffer (e quindi alle pagine dati) rispettando alcune regole per evitare corse critiche Siccome portare una pagina da disco ad un buffer richiede tempo, il sistema contiene un flag IO_IN_PROGRESS per indicare che la pagina/buffer sarà presto disponibile 83 di 139

84 Locking dei buffer Ogni buffer contiene due astrazioni utili per il locking, la loro combinazione permette la gestione di piu' casi: Buffer Content Lock: è un lock esplicito di tipo esclusivo, lavora a livello di tupla Page Pin: è un contatore del numero di processi che stanno agendo sulla pagina dati, lavora a livello di pagina I possibili casi sono: Uno scan e un'analisi della visibilità di una tupla richiede un pin e un lock Un Vacuum richiede un pin esclusivo (pin = 1) e un lock esclusivo sulla tupla da cancellare. E' possibile che altri processi prendano il pin nel frattempo (pin > 1) ma non che vedano la tupla o possano iniziare lo scan su di essa E' possibile rilasciare il lock mantenendo il pin (tupla interessata da altro scan). La tupla non può essere rimossa (pin > 1) e se la sua visibilità cambia ciò non rappresenta un problema poiché la visibilità è legata allo scan Cambiare i dati di visibilità XMIN/XMAX richiede un pin e un lock esclusivo, per evitare che altri processi possano fare scan sulla tupla 84 di 139

85 Ottenere un nuovo buffer Ottenere un nuovo buffer risulta facile nel caso ci sia spazio di memoria, mentre richiede di scartare delle pagine qualora la memoria condivisa sia piena. In una simile situazione si procede come segue: Si sceglie un buffer fra quelli disponibili seguendo il puntatore NextVictimBuf (algoritmo clock-skew). Se il buffer ha un pin oppure è stato appena rimosso il suo pin (contatore unpin > 0) allora non può essere scelto, si passa oltre. Se il buffer non ha pin e ha contatore di unpin pari a zero (pin = unpin = 0) allora può essere scaricato: entra in gioco il BackgroundWriter Il BackgroundWriter acquisisce un pin e scrive le pagine su disco 85 di 139

86 Point In Time Recovery 86 di 139

87 Point In Time Recovery (PITR) PostgreSQL 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. 0) impostazione del comando di archivio dei log (postgresql.conf): archive_command = 'cp i %p /backup/wal//%f ' 1) informare il database che si inizia il backup: SELECT pg_start_backup('backup_pitr'); 2) archiviazione della directory PGDATA (tar,...) 3) informare il database che il backup è finito: SELECT pg_stop_backup(); 87 di 139

88 PITR: ripristino Una volta in possesso dei log è possibile ordinare al database di fare un re-do delle transazioni: 1) stop 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: restore_command = cp /backup/wal/%f "%p" recovery_target_time= :33:59 5) avvio del cluster 88 di 139

89 PITR: esempio Si crea una grossa tabella, si effettua il backup PITR e si cancella la tabella. Si ferma PostgreSQL, si cancellano gli xlog dal backup ripristinato e si crea il file recovery.conf (che sarà poi eliminato automaticamente). 89 di 139

90 PITR: esempio Al riavvio il database trova il file recovery.conf e inizia a ripetere le transazioni presenti nei WAL. Il risultato è che si trovano tutte le tabelle che erano state cancellate! 90 di 139

91 Indici 91 di 139

92 Indici PostgreSQL consente l'utilizzo di diversi tipi di indice, anche lossy (che necessitano di un recheck). 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 costo_indice = costo_seq * num_page_index // costo di acceso indice + (cpu_index_cost + index_tuple_cost) * num_index_tuple // costo di analisi delle tuple indice 92 di 139

93 Indici B-tree: sono il default, vengono usati per query di uguaglianza e range con operatori <, =, >. Su indice multi-colonna solo l'uguaglianza limita le pagine di indice, gli altri operatori vengono rivalutati al volo. Viene usato nel caso di pattern matching solo all'inizio del valore! Bitmap: si costruisce una mappa di bit dove per ogni tupla si indica con un bit se soddisfa (1) o non soddisfa (0) la condizione. Le mappe possono poi essere unite con operatori logici per ridurre il set di risultati velocemente. Hash: utili solo per uguaglianze strette GIST: Generalized Index Search Tree, fornisce una interfaccia per l'integrazione di indici user-defined (es. indici R-Tree, per similarità, ecc.). L'utente deve fornire l'implementazione di 7 funzioni C (consistent, union, picksplit, compress, decompress, same, penalty) GiN: indice inverso per la ricerca full-text (su colonne tsvector). E' più veloce che un generico GiST e non è lossy. Utilizzano una coppia <chiave, posting_list> con i posting_list pointer che puntano ai documenti che contengono la chiave. L'idea è che conviene fare la comparazione sulla chiave che sul documento. 93 di 139

94 Indici in PostgreSQL PostgreSQL memorizza gli indici in modo disgiunto dalla relazione alla quale puntano (indici secondari ) Un indice viene memorizzato e gestito come una normale relazione, e quindi è Presente nel catalogo di sistema Acceduto e gestito dal buffer manager Ogni indice memorizza una coppia <key, TIDs> dove i Tuple Identifier sono coppie <numero_blocco_dati, offset_linp> per recuperare la pagina dati e la tupla all'interno della pagina dati 94 di 139

95 Indici e MVCC A causa di MVCC di una tupla ne possono esistere piu' versioni (teoricamente una valida e le altre espirate o che stanno espirando) L'indice memorizza la chiave comune a tutte le versioni di una tupla e i TID di ogni versione di una tupla Di conseguenza l'indice sa come recuperare ogni versione temporale di una tupla! L'indice non contiene le informazioni di validità di una tupla (XMIN, XMAX, CMIN, CMAX)! 95 di 139

96 Indici e MVCC (2) Perché un indice non contiene le informazioni di visibilità di una tupla? Una tupla potrebbe essere recuperata tramite scansione sequenziale o un altro indice, e quindi le informazioni di visibilità andrebbero replicate per ogni indice (spreco di spazio)! Piu' indici possono essere combinati assieme per ridurre il numero di tuple da recuperare, indipendentemente dalla loro visibilità, e quindi è bene controllare la visibilità delle tuple trovate solo alla fine! La separazione tra indice e informazioni di visibilità può creare alcuni disallineamenti fra indici e tuple: INSERT la tupla viene inserita prima nella pagina dati e poi nell'indice. Ciò significa che non è immediatamente visibile, ma ciò è coerente con il livello di isolamento READ_COMMITTED VACUUM la tupla viene cancellata prima dall'indice, in modo da non essere piu' visibile ad altri processi (resta la scansione sequenziale) 96 di 139

97 Indici e MVCC (3) La separazione fra indice e tuple dati puo' causare una corsa critica nel passaggio (fly) dall'indice al dato (ad esempio se la tupla viene modificata/rimossa da un altro processo) Quando si accede ad una pagina indice si aggiunge un PIN alla pagina dell'indice, così da notificare gli altri processi che le tuple indicizzate non possono essere modificate (si ricordi che Vacuum cancella prima la tupla dall'indice) 97 di 139

98 Cool Features cosa si può fare con PostgreSQL 98 di 139

99 Utilities pg_dump: effettua un dump di un database on-line, producendo un file SQL (eventualmente compresso) che contiene i comandi per la creazione del database, dello schema e dei dati pg_restore: ricostruisce un database, uno schema o i dati partendo da un file di dump vacuumdb: effettua il vacuum su un database reindex: ricostruisce gli indici copy, \copy: bulk loading di grosse moli di dati (il default usato da pg_dump) Initdb: inizializza una directory da usare per il cluster (crea le cartelle pg_clog, pg_xlog, base,...) 99 di 139

100 Cool Features: replicazione Slony: sistema masterslaves Pgpool: replica le modifiche a tutti i nodi, e le interrogazioni a solo un nodo Pgcluster: analizza un cluster e replica le modifiche 100 di 139

101 Cool Features: DBI Link Sviluppato principalmente da David Fetter, implementa parzialmente la specifica di SQL:2003 SQL/MED (Management of External Data). Consente di accedere da un database PostgreSQL a data che risiede in un altro database (anche di tipo diverso) in modo trasparente. Sostanzialmente si effettua una query verso una normale tabella PostgreSQL, che in realtà è collegata ad una fonte dati remota (es. database Oracle). Si basa su Perl, e viene eseguito da PL/Perl. 101 di 139

102 Cool Features: PostGIS PostGIS è un contrib che consente l'utilizzo di sistemi GIS. E' conforme alle specifiche OpenGIS "Simple Features Specification for SQL". Esiste anche un client basato su Eclipse (udig) 102 di 139

103 Cool Features: Full Text Search FTS utilizza i tsvector come tipi di dati sui quali fare le ricerche. Le ricerche vengono specificate tramite 103 di 139

104 Cool Features: TOAST TOAST (The Oversized-Attribute Storage Technique) è una tecnica per la memorizzazione trasparente di dati che non possono essere contenuti in una singola riga. L'idea è di dividere il dato largo in pezzi (chunks) che vengono memorizzati off-line in una tabella separata (TOAST-table). Questo viene fatto ogni volta che la compressione del dato non permette la sua memorizzazione in linea. Il sistema ricollega all'esigenza i dati TOAST-ati. TOAST può memorizzare i dati con quattro specifiche: PLAIN: nessuna compressione o off-line, dati non TOAST-abili EXTENDED: compressione e off-line (default) EXTERNAL: no compressione, off-line MAIN: compressione, no off-line (finché c'è spazio) 104 di 139

105 Partitioning (tramite ereditarietà e trigger) 105 di 139

106 Partitioning Il partitioning è una tecnica per la divisione fisica dei dati pur mantenendoli logicamente uniti. L'idea è quella di posizionare dati differenti su supporti fisici (o posizioni) differenti, mantenendo l'accesso ai dati trasparente alla suddivisione dei dati stessi. Ad esempio si immagini di avere una tabella che riassume i movimenti di magazzino. Siccome tale tabella può diventare molto grande nel tempo, è opportuno separare fisicamente i dati in base, ad esempio, alla data cui questi fanno riferimento. 106 di 139

107 Partitioning: esempio di tabella CREATE TABLE movmag ( CREATE TABLE movmag ( movmagpk serial NOT NULL, movmagpk serial NOT NULL, data date, data date, descrizione character varying DEFAULT 20, descrizione character varying DEFAULT 20, qta real ) qta real ) CREATE TABLE movmag2007 ( CREATE TABLE movmag2007 ( Ereditato: movmagpk integer NOT NULL DEFAULT nextval('movmag_movmagpk_seq'::regclass), Ereditato: movmagpk integer NOT NULL DEFAULT nextval('movmag_movmagpk_seq'::regclass), Ereditato: data date, Ereditato: data date, Ereditato: descrizione character varying DEFAULT 20, Ereditato: descrizione character varying DEFAULT 20, Ereditato: qta real, Ereditato: qta real, CONSTRAINT date_2007 CHECK CONSTRAINT date_2007 CHECK (data >= ' '::date AND data <= ' '::date) (data >= ' '::date AND data <= ' '::date) ) INHERITS (movmag) ) INHERITS (movmag) CREATE TABLE movmag2008 ( CREATE TABLE movmag2008 ( Ereditato: movmagpk integer NOT NULL DEFAULT nextval('movmag_movmagpk_seq'::regclass), Ereditato: movmagpk integer NOT NULL DEFAULT nextval('movmag_movmagpk_seq'::regclass), Ereditato: data date, Ereditato: data date, Ereditato: descrizione character varying DEFAULT 20, Ereditato: descrizione character varying DEFAULT 20, Ereditato: qta real, Ereditato: qta real, CONSTRAINT date_2008 CHECK CONSTRAINT date_2008 CHECK (data >= ' '::date AND data <= ' '::date) (data >= ' '::date AND data <= ' '::date) ) INHERITS (movmag) ) INHERITS (movmag) 107 di 139

108 Partitioning con un trigger CREATE OR REPLACE FUNCTION _inserimento_movimento_magazzino() RETURNS trigger AS $BODY$ BEGIN controllo la data di inserimento IF NEW.data >= ' '::date AND NEW.data <= ' ' THEN RAISE INFO 'Inserimento in tabella movimento 2007'; INSERT INTO movmag2007(data, descrizione, qta) VALUES (NEW.data, NEW.descrizione, NEW.qta); non inserisco nulla nella tabella originale RETURN NULL; ELSIF NEW.data >= ' '::date AND NEW.data <= ' '::date THEN RAISE INFO 'Inserimento in tabella movimento 2008'; INSERT INTO movmag2008(data, descrizione, qta) VALUES (NEW.data, NEW.descrizione, NEW.qta); non inserisco nulla nella tabella originaria RETURN NULL; ELSE inserimento nella tabella trash, errore! RAISE WARNING 'Inserimento nella tabella trash, controllare i vincoli!'; INSERT INTO movmag_trash(data, descrizione, qta) VALUES (NEW.data, NEW.descrizione, NEW.qta); non inserisco nulla nella tabella originaria RETURN NULL; END IF; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE; 108 di 139

109 Funzionamento del trigger CREATE TRIGGER tr_inserimento BEFORE INSERT ON movmag FOR EACH ROW EXECUTE PROCEDURE _inserimento_movimento_magazzino(); 109 di 139

110 Partitioning con una rule CREATE OR REPLACE RULE inserimento_2007 AS ON INSERT TO movmag WHERE new.data >= ' '::date AND new.data <= ' '::date DO INSTEAD INSERT INTO movmag2007 (data, descrizione, qta) VALUES (new.data, new.descrizione, new.qta); CREATE OR REPLACE RULE inserimento_2008 AS ON INSERT TO movmag WHERE new.data >= ' '::date AND new.data <= ' '::date DO INSTEAD INSERT INTO movmag2008 (data, descrizione, qta) VALUES (new.data, new.descrizione, new.qta); In questo caso il trigger non scatta! 110 di 139

111 Partitioning: accesso ai dati Qualunque sia la scelta di partitioning effettuata, l'accesso ai dati è trasparente. Una volta interrogata la tabella movmag PostgreSQL va a cercare fra i dati di tutte le figlie: Vanno generati indici sulle varie tabelle per consentire un accesso ai dati veloce! 111 di 139

112 Explain: capire come lavora l'ottimizzatore 112 di 139

113 EXPLAIN Explain è un comando SQL che consente di analizzare le scelte dell'ottimizzatore per l'esecuzione di una query. Explain si basa sulle statistiche raccolte durante il funzionamento del database; le statistiche possono essere aggiornate anche eseguendo explain analyze. Leggere l'output di explain è un'arte! 113 di 139

114 Explain: primo esempio Il piano di esecuzione indica: Una scansione sequenziale sulla tabella (Seq Scan) La dimensione delle tuple ritornate (152 byte) Il numero di righe ritornate (440!) Il costo iniziale (0.00) e finale del piano (14.40) C'è qualche cosa che non va! 114 di 139

115 Explain: aggiornare le statistiche La tabella talks è stata appena creata, e le sue statistiche non sono aggiornate: l'ottimizzatore ipotizza che ci siano 440 righe al suo interno! Rifacendo il piano di esecuzione con le statistiche aggiornate si ha un valore migliore: 115 di 139

116 Explain per grosse quantità dati Eliminando i vincoli di unicità è possibile duplicare rapidamente le tuple all'interno di una tabella, arrivando fino a 6M tuple. 116 di 139

117 Explain: perché non usa l'indice? 117 di 139

118 Explain: l'ottimizzatore è furbo! La query è una banale SELECT * e quindi si sta chiedendo al database di restituire tutte le tuple della tabella. Non ha senso quindi usare un indice, perché tanto tutte le tuple devono essere restituite senza ordinamento e senza condizioni. La cosa cambia se si inseriscono clausole WHERE o ORDER BY. 118 di 139

119 Explain: utilizzo dell'indice 1) Si parte dal bitmap index scan (perché la condizione è di uguaglianza), quella che ha costo inziiale ) Dalla scansione in indice, si estraggono circa 2M di tuple (vuote senza dimensione si prendono i puntatori) 3) Si ricontrolla la condizione su ogni tupla delle pagine dati e si estraggono le 2M tuple di lunghezza 32 byte 119 di 139

120 Explain: ulteriore esempio Si supponga di aver aggiunto una colonna durata (tipo real) e di averla riempita con dati random. 1) Si parte dal bitmap index scan sulla clausola durata > 0 2) Si applica un filtro in memoria sulla clausola durata < 0.5 3) Si effettua un nuovo scan, questa volta delle tuple in memoria 4) Si effettua un ordinamento delle tuple 120 di 139

121 Explain: ulteriore esempio 1) Si parte dal sequential scan (perché non esiste indice sfruttabile), quella che ha costo inziiale ) Dalla scansione in indice, si estraggono circa 4M di tuple (complete di dati) 3) Si effettua un sort in memoria delle tuple restituite 121 di 139

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

Introduzione a PostgreSQL e phppgadmin

Introduzione a PostgreSQL e phppgadmin Introduzione a PostgreSQL e phppgadmin Gabriele Pozzani Informatica documentale 2011/2012 Corso di laurea in Scienze della comunicazione PostgreSQL il più avanzato database OpenSource al mondo Sviluppato

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

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

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

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

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

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

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 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

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

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

Dispensa di database Access

Dispensa di database Access Dispensa di database Access Indice: Database come tabelle; fogli di lavoro e tabelle...2 Database con più tabelle; relazioni tra tabelle...2 Motore di database, complessità di un database; concetto di

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

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

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere

Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report. Facoltà di Lingue e Letterature Straniere Abilità Informatiche A.A. 2010/2011 Lezione 9: Query Maschere Report Facoltà di Lingue e Letterature Straniere Le QUERY 2 Che cos è una Query? Una Query rappresenta uno strumento per interrogare un database.

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

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

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

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

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

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

PROGRAMMA DI CLASSE 5AI

PROGRAMMA DI CLASSE 5AI Istituto di Istruzione Superiore Euganeo Istituto tecnico del settore tecnologico Istituto professionale del settore servizi socio-sanitari Istituto professionale del settore industria e artigianato PROGRAMMA

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

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

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

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni Introduzione Ai Data Bases Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni I Limiti Degli Archivi E Il Loro Superamento Le tecniche di gestione delle basi di dati nascono

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

Lezione V. Aula Multimediale - sabato 29/03/2008

Lezione V. Aula Multimediale - sabato 29/03/2008 Lezione V Aula Multimediale - sabato 29/03/2008 LAB utilizzo di MS Access Definire gli archivi utilizzando le regole di derivazione e descrivere le caratteristiche di ciascun archivio ASSOCIAZIONE (1:1)

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

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

Guida Software GestioneSpiaggia.it

Guida Software GestioneSpiaggia.it Caratteristiche Guida Software GestioneSpiaggia.it 1. Gestione prenotazioni articoli (ombrellone, cabina, ecc ) ed attrezzature (sdraio, lettino ecc ) 2. Visualizzazione grafica degli affitti sia giornaliera

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

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

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

Gestione delle tabelle

Gestione delle tabelle Linguaggio SQL: fondamenti Creazione di una tabella Modifica della struttura di una tabella Cancellazione di una tabella Dizionario dei dati Integrità dei dati 2 Creazione di una tabella (1/3) Si utilizza

Dettagli

Sistemi avanzati di gestione dei Sistemi Informativi

Sistemi avanzati di gestione dei Sistemi Informativi Esperti nella gestione dei sistemi informativi e tecnologie informatiche Sistemi avanzati di gestione dei Sistemi Informativi Docente: Email: Sito: Eduard Roccatello eduard@roccatello.it http://www.roccatello.it/teaching/gsi/

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

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

Architettura di storage

Architettura di storage Architettura di storage Architettura di storage 27/11/08 /home/scotty/enrico/corso web/finale/architettura/arch1.odp page 1 Architettura di storage Cluster Databases Tabelle Indici Blocchi 27/11/08 /home/scotty/enrico/corso

Dettagli

Data Base Management System. Strumenti: Formato: Pro: Contro: Software specifico. Proprietario

Data Base Management System. Strumenti: Formato: Pro: Contro: Software specifico. Proprietario Data Base Management System Strumenti: Software specifico Formato: Pro: Proprietario Massima semplicità di inserimento e gestione Tipizzazione Validazione dei dati Contro: Creazione del database Programmazione

Dettagli

Introduzione ai database relazionali

Introduzione ai database relazionali Introduzione ai database relazionali Tabelle Un database (DB) è costituito da un insieme di file che memorizzano dati opportunamente organizzati Nei database relazionale tale organizzazione è costituita

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

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

Università Degli Studi Di Milano. PostgreSQL

Università Degli Studi Di Milano. PostgreSQL Università Degli Studi Di Milano PostgreSQL PgAdmin III è il tool visuale più completo per l'amministrazione del RDBMS e dei singoli database. A prima vista può lasciare un po' disorientati (specialmente

Dettagli

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE

SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE SOSEBI PAPERMAP2 MODULO WEB MANUALE DELL UTENTE S O. S E. B I. P R O D O T T I E S E R V I Z I P E R I B E N I C U L T U R A L I So.Se.Bi. s.r.l. - via dell Artigianato, 9-09122 Cagliari Tel. 070 / 2110311

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

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

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

Introduzione ORDBMS E. TINELLI LTW A. A. 2011-2012

Introduzione ORDBMS E. TINELLI LTW A. A. 2011-2012 Corso di Laurea Specialistica in Ingegneria Informatica Corso di Linguaggi e Tecnologie Web A. A. 2011 - PostgreSQL Eufemia TINELLI Introduzione PostgreSQL è un ORDBMS (Object Relational Database Management

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

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica Consiglio regionale della Toscana Regole per il corretto funzionamento della posta elettronica A cura dell Ufficio Informatica Maggio 2006 Indice 1. Regole di utilizzo della posta elettronica... 3 2. Controllo

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

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

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012

corso di Access MICROSOFT ACCESS Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012 1 MICROSOFT ACCESS 1 Docente: Andrea Mereu Università degli studi di Cagliari 16 aprile 9 maggio 2012 Che cos'è Access? 2 Access è un'applicazione database (DBMS), cioè un programma che serve a gestire

Dettagli

Le Basi di Dati. Le Basi di Dati

Le Basi di Dati. Le Basi di Dati Le Basi di Dati 20/05/02 Prof. Carlo Blundo 1 Le Basi di Dati Le Base di Dati (database) sono un insieme di tabelle di dati strutturate in maniera da favorire la ricerca di informazioni specializzate per

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

Sistemi per la gestione di database: MySQL ( )

Sistemi per la gestione di database: MySQL ( ) Sistemi per la gestione di database: MySQL ( ) Relational Database e Relational Database Management System Un database è una raccolta di dati organizzata in modo da consentire l accesso, il reperimento

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

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

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

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

FIRESHOP.NET. Gestione completa delle fidelity card & raccolta punti. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione completa delle fidelity card & raccolta punti. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione completa delle fidelity card & raccolta punti Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 3 La gestione delle fidelity card nel POS... 4 Codificare una nuova fidelity

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

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

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Ambiente Access La Guida di Access Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?) Guida in linea Guida rapida Assistente di Office indicazioni

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

Organizzazione delle informazioni: Database

Organizzazione delle informazioni: Database Organizzazione delle informazioni: Database Laboratorio Informatico di base A.A. 2013/2014 Dipartimento di Scienze Aziendali e Giuridiche Università della Calabria Dott. Pierluigi Muoio (pierluigi.muoio@unical.it)

Dettagli

Acronis License Server. Manuale utente

Acronis License Server. Manuale utente Acronis License Server Manuale utente INDICE 1. INTRODUZIONE... 3 1.1 Panoramica... 3 1.2 Politica della licenza... 3 2. SISTEMI OPERATIVI SUPPORTATI... 4 3. INSTALLAZIONE DI ACRONIS LICENSE SERVER...

Dettagli

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo

COLLI. Gestione dei Colli di Spedizione. Release 5.20 Manuale Operativo Release 5.20 Manuale Operativo COLLI Gestione dei Colli di Spedizione La funzione Gestione Colli consente di generare i colli di spedizione in cui imballare gli articoli presenti negli Ordini Clienti;

Dettagli

MySQL Database Management System

MySQL Database Management System MySQL Database Management System http://www.mysql.com/ DATABASE RELAZIONALI Un database è una collezione strutturata di informazioni. I database sono delle strutture nelle quali è possibile memorizzare

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

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

Il File System. Il file system

Il File System. Il file system Il File System Il file system Parte di SO che fornisce i meccanismi di accesso e memorizzazione delle informazioni (programmi e dati) allocate in memoria di massa Realizza i concetti astratti di file:

Dettagli

Capitolo 11 -- Silberschatz

Capitolo 11 -- Silberschatz Implementazione del File System Capitolo 11 -- Silberschatz Implementazione del File System File system: Definizione dell aspetto del sistema agli occhi dell utente Algoritmi e strutture dati che permettono

Dettagli

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino. www.playnet.it agg. Documento 1/03/2007 REGOLE DEL CLIENT Le regole del client sono un sistema di smistamento dei messaggi (arrivati) fra le varie cartelle di posta presenti sul server. Possono essere

Dettagli

progecad NLM Guida all uso Rel. 10.2

progecad NLM Guida all uso Rel. 10.2 progecad NLM Guida all uso Rel. 10.2 Indice Indice... 2 Introduzione... 3 Come Iniziare... 3 Installare progecad NLM Server... 3 Registrare progecad NLM Server... 3 Aggiungere e attivare le licenze...

Dettagli

Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query

Costruzione di Sit Web con PHP e MySQL. Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query Costruzione di Sit Web con PHP e MySQL Lezione 7 - Esercitazione - Introduzione a MySQL: le tabelle, i tpi di dato, le query Esercitazione In questa lezione si farà insieme una seconda esercitazione che

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

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

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi ControlloCosti Cubi OLAP I cubi OLAP Un Cubo (OLAP, acronimo di On-Line Analytical Processing) è una struttura per la memorizzazione e la gestione dei dati che permette di eseguire analisi in tempi rapidi,

Dettagli

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare

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

PORTALE CLIENTI Manuale utente

PORTALE CLIENTI Manuale utente PORTALE CLIENTI Manuale utente Sommario 1. Accesso al portale 2. Home Page e login 3. Area riservata 4. Pagina dettaglio procedura 5. Pagina dettaglio programma 6. Installazione dei programmi Sistema operativo

Dettagli

Il Sistema Operativo: il File System

Il Sistema Operativo: il File System Il Sistema Operativo: il File System Il File System è quella parte del S.O. che si occupa di gestire e strutturare le informazioni memorizzate su supporti permanenti (memoria secondaria) I file vengono

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

Access Control List (I parte)

Access Control List (I parte) - Laboratorio di Servizi di Telecomunicazioni Access Control List (I parte) Indice Cosa sono le ACL? Interfacce Inbound & Outbound Wildcard mask Configurare una ACL standard ACL extended Named ACL Posizionamento

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it

Excel. A cura di Luigi Labonia. e-mail: luigi.lab@libero.it Excel A cura di Luigi Labonia e-mail: luigi.lab@libero.it Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo

Dettagli

Introduzione alla consultazione dei log tramite IceWarp Log Analyzer

Introduzione alla consultazione dei log tramite IceWarp Log Analyzer Introduzione alla consultazione dei log tramite IceWarp Log Analyzer L Analizzatore di Log è uno strumento che consente un'analisi statistica e logica dei file di log generati dal server. Lo strumento

Dettagli

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA)

Il SOFTWARE DI BASE (o SOFTWARE DI SISTEMA) Il software Software Il software Il software è la sequenza di istruzioni che permettono ai computer di svolgere i loro compiti ed è quindi necessario per il funzionamento del calcolatore. Il software può

Dettagli

Licenza per sito Manuale dell amministratore

Licenza per sito Manuale dell amministratore Licenza per sito Manuale dell amministratore Le seguenti istruzioni sono indirizzate agli amministratori di siti con un licenza per sito per IBM SPSS Modeler 15. Questa licenza consente di installare IBM

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

. 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

FAQ DI INSTALLAZIONE DI INAZIENDA Rev.2

FAQ DI INSTALLAZIONE DI INAZIENDA Rev.2 FAQ DI INSTALLAZIONE DI INAZIENDA Rev.2 Con l avvento di Windows Vista ed Sql Server 2005, e quindi dei Pc con tali sistemi già preinstallati, il setup di Inazienda può diventare un operazione piuttosto

Dettagli

DATABASE RELAZIONALI

DATABASE RELAZIONALI 1 di 54 UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II DIPARTIMENTO DI DISCIPLINE STORICHE ETTORE LEPORE DATABASE RELAZIONALI Dott. Simone Sammartino Istituto per l Ambiente l Marino Costiero I.A.M.C. C.N.R.

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

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

Fattura Facile. In questo menù sono raggruppati, per tipologia, tutti i comandi che permettono di gestire la manutenzione degli archivi.

Fattura Facile. In questo menù sono raggruppati, per tipologia, tutti i comandi che permettono di gestire la manutenzione degli archivi. Fattura Facile Maschera di Avvio Fattura Facile all avvio si presenta come in figura. In questa finestra è possibile sia fare l accesso all archivio selezionato (Archivio.mdb) che eseguire la maggior parte

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