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 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 l'operatore 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

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

Il linguaggio SQL: transazioni

Il linguaggio SQL: transazioni Il linguaggio SQL: transazioni Sistemi Informativi T Versione elettronica: 4.8.SQL.transazioni.pdf Cos è una transazione? Una transazione è un unità logica di elaborazione che corrisponde a una serie di

Dettagli

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL

Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone. SQL: il DDL Basi di Dati prof. Letizia Tanca lucidi ispirati al libro Atzeni-Ceri-Paraboschi-Torlone SQL: il DDL Parti del linguaggio SQL Definizione di basi di dati (Data Definition Language DDL) Linguaggio per modificare

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Il test valuta la capacità di pensare?

Il test valuta la capacità di pensare? Il test valuta la capacità di pensare? Per favore compili il seguente questionario senza farsi aiutare da altri. Cognome e Nome Data di Nascita / / Quanti anni scolastici ha frequentato? Maschio Femmina

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

Database, SQL & MySQL. Dott. Paolo PAVAN Maggio 2002

Database, SQL & MySQL. Dott. Paolo PAVAN Maggio 2002 Database, SQL & MySQL Dott. Paolo PAVAN Maggio 2002 1 Struttura RDBMS MYSQL - RDBMS DATABASE TABELLE 2 Introduzione ai DATABASE Database Indica in genere un insieme di dati rivolti alla rappresentazione

Dettagli

Le funzionalità di un DBMS

Le funzionalità di un DBMS Le funzionalità di un DBMS Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: DBMS.pdf Sistemi Informativi L-A DBMS: principali funzionalità Le

Dettagli

Rational Asset Manager, versione 7.1

Rational Asset Manager, versione 7.1 Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Rational Asset Manager, versione 7.1 Versione 7.1 Guida all installazione Note Prima di utilizzare queste informazioni e il prodotto

Dettagli

Basi di Dati. S Q L Lezione 5

Basi di Dati. S Q L Lezione 5 Basi di Dati S Q L Lezione 5 Antonio Virdis a.virdis@iet.unipi.it Sommario Gestione eventi Gestione dei privilegi Query Complesse 2 Esercizio 9 (lezione 4) Indicare nome e cognome, spesa e reddito annuali

Dettagli

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese

Inter Process Communication. Laboratorio Software 2008-2009 C. Brandolese Inter Process Communication Laboratorio Software 2008-2009 C. Brandolese Introduzione Più processi o thread Concorrono alla relaizzazione di una funzione applicativa Devono poter realizzare Sincronizzazione

Dettagli

Import Dati Release 4.0

Import Dati Release 4.0 Piattaforma Applicativa Gestionale Import Dati Release 4.0 COPYRIGHT 2000-2005 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati.questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

Un client su arduino invia i dati acquisiti ad un database

Un client su arduino invia i dati acquisiti ad un database Un client su arduino invia i dati acquisiti ad un database PROBLEMA Si vogliono inviare, periodicamente, i dati acquisiti da alcuni sensori ad un database presente su di un server. Arduino con shield Ethernet

Dettagli

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1

Cross Software ltd Malta Pro.Sy.T Srl. Il gestionale come l'avete sempre sognato... Pag. 1 Il gestionale come l'avete sempre sognato... Pag. 1 Le funzionalità di X-Cross La sofisticata tecnologia di CrossModel, oltre a permettere di lavorare in Internet come nel proprio ufficio e ad avere una

Dettagli

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo

Appunti di Sistemi Operativi. Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Appunti di Sistemi Operativi Enzo Mumolo e-mail address :mumolo@units.it web address :www.units.it/mumolo Indice 1 Cenni su alcuni algoritmi del Kernel di Unix 1 1.1 Elementi di Unix Internals.................................

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Il Concetto di Processo

Il Concetto di Processo Processi e Thread Il Concetto di Processo Il processo è un programma in esecuzione. È l unità di esecuzione all interno del S.O. Solitamente, l esecuzione di un processo è sequenziale (le istruzioni vengono

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

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

Descrizioni VHDL Behavioral

Descrizioni VHDL Behavioral 1 Descrizioni VHDL Behavioral In questo capitolo vedremo come la struttura di un sistema digitale è descritto in VHDL utilizzando descrizioni di tipo comportamentale. Outline: process wait statements,

Dettagli

CA RC/Update for DB2 for z/os

CA RC/Update for DB2 for z/os SCHEDA PRODOTTO CA RC/Update for DB2 for z/os CA RC/Update for DB2 for z/os CA RC/Update for DB2 for z/os (CA RC/Update) è uno strumento di gestione di dati e oggetti DB2 che consente agli amministratori

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN)

Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) Estensione di un servizo di messaggistica per telefonia mobile (per una società di agenti TuCSoN) System Overview di Mattia Bargellini 1 CAPITOLO 1 1.1 Introduzione Il seguente progetto intende estendere

Dettagli

12.5 UDP (User Datagram Protocol)

12.5 UDP (User Datagram Protocol) CAPITOLO 12. SUITE DI PROTOCOLLI TCP/IP 88 12.5 UDP (User Datagram Protocol) L UDP (User Datagram Protocol) é uno dei due protocolli del livello di trasporto. Come l IP, é un protocollo inaffidabile, che

Dettagli

SISSI IN RETE. Quick Reference guide guida di riferimento rapido

SISSI IN RETE. Quick Reference guide guida di riferimento rapido SISSI IN RETE Quick Reference guide guida di riferimento rapido Indice generale Sissi in rete...3 Introduzione...3 Architettura Software...3 Installazione di SISSI in rete...3 Utilizzo di SISSI in Rete...4

Dettagli

Piattaforma Applicativa Gestionale. Import dati. Release 7.0

Piattaforma Applicativa Gestionale. Import dati. Release 7.0 Piattaforma Applicativa Gestionale Import dati Release 7.0 COPYRIGHT 2000-2012 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati. Questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

Applicazione: Share - Sistema per la gestione strutturata di documenti

Applicazione: Share - Sistema per la gestione strutturata di documenti Riusabilità del software - Catalogo delle applicazioni: Gestione Documentale Applicazione: Share - Sistema per la gestione strutturata di documenti Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

IT-BOOK. Domini Hosting Web marketing E-mail e PEC

IT-BOOK. Domini Hosting Web marketing E-mail e PEC 5 giugno 09 IT-BOOK Configurazioni e cartatteristiche tecniche possono essere soggette a variazioni senza preavviso. Tutti i marchi citati sono registrati dai rispettivi proprietari. Non gettare per terra:

Dettagli

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it

FIRESHOP.NET. Gestione Utility & Configurazioni. Rev. 2014.3.1 www.firesoft.it FIRESHOP.NET Gestione Utility & Configurazioni Rev. 2014.3.1 www.firesoft.it Sommario SOMMARIO Introduzione... 4 Impostare i dati della propria azienda... 5 Aggiornare il programma... 6 Controllare l integrità

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Guida ai Servizi Internet per il Referente Aziendale

Guida ai Servizi Internet per il Referente Aziendale Guida ai Servizi Internet per il Referente Aziendale Indice Indice Introduzione...3 Guida al primo accesso...3 Accessi successivi...5 Amministrazione dei servizi avanzati (VAS)...6 Attivazione dei VAS...7

Dettagli

Dal modello concettuale al modello logico

Dal modello concettuale al modello logico Dal modello concettuale al modello logico Traduzione dal modello Entita - Associazione al modello Relazionale Ciclo di sviluppo di una base di dati (da parte dell utente) Analisi dello scenario Modello

Dettagli

HORIZON SQL CONFIGURAZIONE DI RETE

HORIZON SQL CONFIGURAZIONE DI RETE 1-1/9 HORIZON SQL CONFIGURAZIONE DI RETE 1 CARATTERISTICHE DI UN DATABASE SQL...1-2 Considerazioni generali... 1-2 Concetto di Server... 1-2 Concetto di Client... 1-2 Concetto di database SQL... 1-2 Vantaggi...

Dettagli

CA Process Automation

CA Process Automation CA Process Automation Glossario Release 04.2.00 La presente documentazione, che include il sistema di guida in linea integrato e materiale distribuibile elettronicamente (d'ora in avanti indicata come

Dettagli

DNS cache poisoning e Bind

DNS cache poisoning e Bind ICT Security n. 19, Gennaio 2004 p. 1 di 5 DNS cache poisoning e Bind Il Domain Name System è fondamentale per l'accesso a internet in quanto risolve i nomi degli host nei corrispondenti numeri IP. Se

Dettagli

Manuale dell'utente di Symantec Backup Exec System Recovery Granular Restore Option

Manuale dell'utente di Symantec Backup Exec System Recovery Granular Restore Option Manuale dell'utente di Symantec Backup Exec System Recovery Granular Restore Option Manuale dell'utente di Symantec Backup Exec System Recovery Granular Restore Option Il software descritto nel presente

Dettagli

PHP: form, cookies, sessioni e. Pasqualetti Veronica

PHP: form, cookies, sessioni e. Pasqualetti Veronica PHP: form, cookies, sessioni e mysql Pasqualetti Veronica Form HTML: sintassi dei form 2 Un form HTML è una finestra contenente vari elementi di controllo che consentono al visitatore di inserire informazioni.

Dettagli

EndNote Web è un servizio online per la gestione di bibliografie personalizzate integrabili nella redazione di testi: paper, articoli, saggi

EndNote Web è un servizio online per la gestione di bibliografie personalizzate integrabili nella redazione di testi: paper, articoli, saggi ENDNOTE WEB EndNote Web è un servizio online per la gestione di bibliografie personalizzate integrabili nella redazione di testi: paper, articoli, saggi EndNote Web consente di: importare informazioni

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

UBUNTU SERVER. Installazione e configurazione di Ubuntu Server. M. Cesa 1

UBUNTU SERVER. Installazione e configurazione di Ubuntu Server. M. Cesa 1 UBUNTU SERVER Installazione e configurazione di Ubuntu Server M. Cesa 1 Ubuntu Server Scaricare la versione deisiderata dalla pagina ufficiale http://www.ubuntu.com/getubuntu/download-server Selezioniare

Dettagli

Supporto alle decisioni e strategie commerciali/mercati/prodotti/forza vendita;

Supporto alle decisioni e strategie commerciali/mercati/prodotti/forza vendita; .netbin. è un potentissimo strumento SVILUPPATO DA GIEMME INFORMATICA di analisi dei dati con esposizione dei dati in forma numerica e grafica con un interfaccia visuale di facile utilizzo, organizzata

Dettagli

Configurazione avanzata di IBM SPSS Modeler Entity Analytics

Configurazione avanzata di IBM SPSS Modeler Entity Analytics Configurazione avanzata di IBM SPSS Modeler Entity Analytics Introduzione I destinatari di questa guida sono gli amministratori di sistema che configurano IBM SPSS Modeler Entity Analytics (EA) in modo

Dettagli

Dal punto di vista organizzativo sono possibili due soluzioni per il sistema di rete.

Dal punto di vista organizzativo sono possibili due soluzioni per il sistema di rete. Premessa. La traccia di questo anno integra richieste che possono essere ricondotte a due tipi di prove, informatica sistemi, senza lasciare spazio ad opzioni facoltative. Alcuni quesiti vanno oltre le

Dettagli

Modulo 2 - Appendice 3 L'editor vi e cenni su sed

Modulo 2 - Appendice 3 L'editor vi e cenni su sed 1 Modulo 2 - Appendice 3 L'editor vi e cenni su sed Laboratorio di Sistemi Operativi I Anno Accademico 2008-2009 Copyright 2005-2007 Francesco Pedullà, Massimo Verola Copyright 2001-2005 Renzo Davoli,

Dettagli

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guida introduttiva Acronis Backup & Recovery 10 Advanced Server Virtual Edition Guida introduttiva Questo documento descrive come installare e iniziare a utilizzare Acronis Backup & Recovery 10 Advanced Server Virtual Edition.

Dettagli

BPEL: Business Process Execution Language

BPEL: Business Process Execution Language Ingegneria dei processi aziendali BPEL: Business Process Execution Language Ghilardi Dario 753708 Manenti Andrea 755454 Docente: Prof. Ernesto Damiani BPEL - definizione Business Process Execution Language

Dettagli

Sizing di un infrastruttura server con VMware

Sizing di un infrastruttura server con VMware Sizing di un infrastruttura server con VMware v1.1 Matteo Cappelli Vediamo una serie di best practices per progettare e dimensionare un infrastruttura di server virtuali con VMware vsphere 5.0. Innanzitutto

Dettagli

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it

VIRTUALIZE IT. www.digibyte.it - digibyte@digibyte.it il server? virtualizzalo!! Se ti stai domandando: ma cosa stanno dicendo? ancora non sai che la virtualizzazione è una tecnologia software, oggi ormai consolidata, che sta progressivamente modificando

Dettagli

Web Conferencing Open Source

Web Conferencing Open Source Web Conferencing Open Source A cura di Giuseppe Maugeri g.maugeri@bembughi.org 1 Cos è BigBlueButton? Sistema di Web Conferencing Open Source Basato su più di quattordici componenti Open-Source. Fornisce

Dettagli

Zabbix 4 Dummies. Dimitri Bellini, Zabbix Trainer Quadrata.it

Zabbix 4 Dummies. Dimitri Bellini, Zabbix Trainer Quadrata.it Zabbix 4 Dummies Dimitri Bellini, Zabbix Trainer Quadrata.it Relatore Nome: Biografia: Dimitri Bellini Decennale esperienza su sistemi operativi UX based, Storage Area Network, Array Management e tutto

Dettagli

Codici sorgenti di esempio per l'invio di email da pagine WEB per gli spazi hosting ospitati presso ITESYS SRL.

Codici sorgenti di esempio per l'invio di email da pagine WEB per gli spazi hosting ospitati presso ITESYS SRL. Data: 8 Ottobre 2013 Release: 1.0-15 Feb 2013 - Release: 2.0 - Aggiunta procedura per inviare email da Windows con php Release: 2.1-20 Mar 2013 Release: 2.2-8 Ottobre 2013 - Aggiunta procedura per inviare

Dettagli

Zeroshell come client OpenVPN

Zeroshell come client OpenVPN Zeroshell come client OpenVPN (di un server OpenVpn Linux) Le funzionalità di stabilire connessioni VPN di Zeroshell vede come scenario solito Zeroshell sia come client sia come server e per scelta architetturale,

Dettagli

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi

APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO. Francesco Marchione e Dario Richichi APPLICAZIONE WEB PER LA GESTIONE DELLE RICHIESTE DI ACQUISTO DEL MATERIALE INFORMATICO Francesco Marchione e Dario Richichi Istituto Nazionale di Geofisica e Vulcanologia Sezione di Palermo Indice Introduzione...

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a:

Talento LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) L'UTILIZZO DI ALTRI SERVIZI INTERNET. In questa lezione imparerete a: Lab 4.1 Utilizzare FTP (File Tranfer Protocol) LAB 4.1 - UTILIZZARE FTP (FILE TRANSFER PROTOCOL) In questa lezione imparerete a: Utilizzare altri servizi Internet, Collegarsi al servizio Telnet, Accedere

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

Client di Posta Elettronica PECMailer

Client di Posta Elettronica PECMailer Client di Posta Elettronica PECMailer PECMailer è un semplice ma completo client di posta elettronica, ovvero un programma che consente di gestire la composizione, la trasmissione, la ricezione e l'organizzazione

Dettagli

FileMaker Server 12. Guida introduttiva

FileMaker Server 12. Guida introduttiva FileMaker Server 12 Guida introduttiva 2007 2012 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker e Bento sono marchi di FileMaker,

Dettagli

Architettura dei Calcolatori

Architettura dei Calcolatori Architettura dei Calcolatori Sistema di memoria parte prima Ing. dell Automazione A.A. 2011/12 Gabriele Cecchetti Sistema di memoria parte prima Sommario: Banco di registri Generalità sulla memoria Tecnologie

Dettagli

Payment Card Industry (PCI) Data Security Standard

Payment Card Industry (PCI) Data Security Standard Payment Card Industry (PCI) Data Security Standard Procedure per la scansione di sicurezza Versione 1.1 Release: settembre 2006 Indice generale Finalità... 1 Introduzione... 1 Ambito di applicazione dei

Dettagli

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci

Manuale di Remote Desktop Connection. Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci Manuale di Remote Desktop Connection Brad Hards Urs Wolfer Traduzione: Luciano Montanaro Traduzione: Daniele Micci 2 Indice 1 Introduzione 5 2 Il protocollo Remote Frame Buffer 6 3 Uso di Remote Desktop

Dettagli

Test di comunicazione tra due LOGO! 0BA7: Master - Master

Test di comunicazione tra due LOGO! 0BA7: Master - Master Industry Test di comunicazione tra due LOGO! 0BA7: Master - Master Dispositivi utilizzati: - 2 LOGO! 0BA7 (6ED1 052-1MD00-0AB7) - Scalance X-208 LOGO! 0BA7 Client IP: 192.168.0.1 LOGO! 0BA7 Server IP:

Dettagli

Installazione LINUX 10.0

Installazione LINUX 10.0 Installazione LINUX 10.0 1 Principali passi Prima di iniziare con l'installazione è necessario entrare nel menu di configurazione del PC (F2 durante lo start-up) e selezionare nel menu di set-up il boot

Dettagli

GUIDA DELL UTENTE IN RETE

GUIDA DELL UTENTE IN RETE GUIDA DELL UTENTE IN RETE Memorizza registro di stampa in rete Versione 0 ITA Definizione delle note Nella presente Guida dell'utente viene utilizzata la seguente icona: Le note spiegano come intervenire

Dettagli

Energy risk management

Energy risk management Il sistema di supporto alle tue decisioni Energy risk management Un approccio orientato agli attori M.B.I. Srl, Via Francesco Squartini 7-56121 Pisa, Italia - tel. 050 3870888 - fax. 050 3870808 www.powerschedo.it

Dettagli

Come installare e configurare il software FileZilla

Come installare e configurare il software FileZilla Come utilizzare FileZilla per accedere ad un server FTP Con questo tutorial verrà mostrato come installare, configurare il software e accedere ad un server FTP, come ad esempio quello dedicato ai siti

Dettagli

Simplex Gestione Hotel

Simplex Gestione Hotel Simplex Gestione Hotel Revisione documento 01-2012 Questo documento contiene le istruzioni per l'utilizzo del software Simplex Gestione Hotel. E' consentita la riproduzione e la distribuzione da parte

Dettagli

ASTA IN GRIGLIA PRO. COSA PERMETTE DI FARE (per ora) Asta In Griglia PRO:

ASTA IN GRIGLIA PRO. COSA PERMETTE DI FARE (per ora) Asta In Griglia PRO: ASTA IN GRIGLIA PRO Asta in Griglia PRO è un software creato per aiutare il venditore Ebay nella fase di post-vendita, da quando l inserzione finisce con una vendita fino alla spedizione. Il programma

Dettagli

Le Reti Informatiche

Le Reti Informatiche Le Reti Informatiche modulo 10 Prof. Salvatore Rosta www.byteman.it s.rosta@byteman.it 1 Nomenclatura: 1 La rappresentazione di uno schema richiede una serie di abbreviazioni per i vari componenti. Seguiremo

Dettagli

Web conferencing software. Massimiliano Greco - Ivan Cerato - Mario Salvetti

Web conferencing software. Massimiliano Greco - Ivan Cerato - Mario Salvetti 1 Web conferencing software Massimiliano Greco - Ivan Cerato - Mario Salvetti Arpa Piemonte 2 Che cosa è Big Blue Button? Free, open source, web conferencing software Semplice ed immediato ( Just push

Dettagli

I.Stat Guida utente Versione 1.7 Dicembre 2010

I.Stat Guida utente Versione 1.7 Dicembre 2010 I.Stat Guida utente Versione 1.7 Dicembre 2010 1 Sommario INTRODUZIONE 3 I concetti principali di I.Stat 4 Organizzazione dei dati 4 Ricerca 5 GUIDA UTENTE 6 Per iniziare 6 Selezione della lingua 7 Individuazione

Dettagli

MANUALE DI INSTALLAZIONE GESTIONE FLOTTE /REMIND

MANUALE DI INSTALLAZIONE GESTIONE FLOTTE /REMIND Progettisti dentro e oltre l impresa MANUALE DI INSTALLAZIONE GESTIONE FLOTTE /REMIND Pag 1 di 31 INTRODUZIONE Questo documento ha lo scopo di illustrare le modalità di installazione e configurazione dell

Dettagli

ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE

ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE ORACLE BUSINESS INTELLIGENCE STANDARD EDITION ONE A WORLD CLASS PERFORMANCE Oracle Business Intelligence Standard Edition One è una soluzione BI completa, integrata destinata alle piccole e medie imprese.oracle

Dettagli

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi:

Routing (instradamento) in Internet. Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Routing (instradamento) in Internet Internet globalmente consiste di Sistemi Autonomi (AS) interconnessi: Stub AS: istituzione piccola Multihomed AS: grande istituzione (nessun ( transito Transit AS: provider

Dettagli

Esiste la versione per Linux di GeCo? Allo stato attuale non è prevista la distribuzione di una versione di GeCo per Linux.

Esiste la versione per Linux di GeCo? Allo stato attuale non è prevista la distribuzione di una versione di GeCo per Linux. FAQ su GeCo Qual è la differenza tra la versione di GeCo con installer e quella portabile?... 2 Esiste la versione per Linux di GeCo?... 2 Quali sono le credenziali di accesso a GeCo?... 2 Ho smarrito

Dettagli

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti

Middleware Laboratory. Dai sistemi concorrenti ai sistemi distribuiti Dai sistemi concorrenti ai sistemi distribuiti Problemi nei sistemi concorrenti e distribuiti I sistemi concorrenti e distribuiti hanno in comune l ovvio problema di coordinare le varie attività dei differenti

Dettagli

Lezione 15 File System

Lezione 15 File System Lezione 15 File System Sistemi Operativi (9 CFU), CdL Informatica, A. A. 2014/2015 Dipartimento di Scienze Fisiche, Informatiche e Matematiche Università di Modena e Reggio Emilia http://weblab.ing.unimo.it/people/andreolini/didattica/sistemi-operativi

Dettagli

FORM Il sistema informativo di gestione della modulistica elettronica.

FORM Il sistema informativo di gestione della modulistica elettronica. Studio FORM FORM Il sistema informativo di gestione della modulistica elettronica. We believe in what we create This is FORM power La soluzione FORM permette di realizzare qualsiasi documento in formato

Dettagli

Plesk Automation. Parallels. Domande tecniche più frequenti

Plesk Automation. Parallels. Domande tecniche più frequenti Parallels Plesk Automation Primo trimestre, 2013 Domande tecniche più frequenti Questo documento ha come scopo quello di rispondere alle domande tecniche che possono sorgere quando si installa e si utilizza

Dettagli

Manipolazione di testi: espressioni regolari

Manipolazione di testi: espressioni regolari Manipolazione di testi: espressioni regolari Un meccanismo per specificare un pattern, che, di fatto, è la rappresentazione sintetica di un insieme (eventualmente infinito) di stringhe: il pattern viene

Dettagli

INTERNET e RETI di CALCOLATORI A.A. 2014/2015 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

INTERNET e RETI di CALCOLATORI A.A. 2014/2015 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam. Laurea in INFORMATICA INTERNET e RETI di CALCOLATORI A.A. 2014/2015 Capitolo 4 Dynamic Host Configuration Protocol fausto.marcantoni@unicam.it Prima di iniziare... Gli indirizzi IP privati possono essere

Dettagli

RSYNC e la sincronizzazione dei dati

RSYNC e la sincronizzazione dei dati RSYNC e la sincronizzazione dei dati Introduzione Questo breve documento intende spiegare come effettuare la sincronizzazione dei dati tra due sistemi, supponendo un sistema in produzione (master) ed uno

Dettagli

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi

Inidirizzi IP e Nomi di Dominio. Domain Name System. Spazio dei Nomi Piatto. Gestione dello Spazio dei Nomi I semestre 03/04 Inidirizzi IP e Nomi di Dominio Domain Name System Prof. Vincenzo Auletta auletta@dia.unisa.it http://www.dia.unisa.it/professori/auletta/ Università degli studi di Salerno Laurea in Informatica

Dettagli

Virtualizzazione e installazione Linux

Virtualizzazione e installazione Linux Virtualizzazione e installazione Linux Federico De Meo, Davide Quaglia, Simone Bronuzzi Lo scopo di questa esercitazione è quello di introdurre il concetto di virtualizzazione, di creare un ambiente virtuale

Dettagli

NetMonitor. Micro guida all uso per la versione 1.2.0 di NetMonitor

NetMonitor. Micro guida all uso per la versione 1.2.0 di NetMonitor NetMonitor Micro guida all uso per la versione 1.2.0 di NetMonitor Cos è NetMonitor? NetMonitor è un piccolo software per il monitoraggio dei dispositivi in rete. Permette di avere una panoramica sui dispositivi

Dettagli

Creare una pen drive bottabile con Zeroshell oppure installarlo su hard disk. by Gassi Vito info@gassielettronica.com

Creare una pen drive bottabile con Zeroshell oppure installarlo su hard disk. by Gassi Vito info@gassielettronica.com Creare una pen drive bottabile con Zeroshell oppure installarlo su hard disk by Gassi Vito info@gassielettronica.com Questa breve guida pratica ci consentirà installare Zeroshell su pen drive o schede

Dettagli

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone

Mod. 4: L architettura TCP/ IP Classe 5 I ITIS G. Ferraris a.s. 2011 / 2012 Marcianise (CE) Prof. M. Simone Paragrafo 1 Prerequisiti Definizione di applicazione server Essa è un servizio che è in esecuzione su un server 1 al fine di essere disponibile per tutti gli host che lo richiedono. Esempi sono: il servizio

Dettagli

Il linguaggio SQL Basi di dati 1. Il linguaggio SQL. Angelo Montanari. Dipartimento di Matematica e Informatica Università di Udine

Il linguaggio SQL Basi di dati 1. Il linguaggio SQL. Angelo Montanari. Dipartimento di Matematica e Informatica Università di Udine Il linguaggio SQL Basi di dati 1 Il linguaggio SQL Angelo Montanari Dipartimento di Matematica e Informatica Università di Udine Il linguaggio SQL Basi di dati 2 Introduzione SQL (Structured Query Language)

Dettagli

Manuale installazione KNOS

Manuale installazione KNOS Manuale installazione KNOS 1. PREREQUISITI... 3 1.1 PIATTAFORME CLIENT... 3 1.2 PIATTAFORME SERVER... 3 1.3 PIATTAFORME DATABASE... 3 1.4 ALTRE APPLICAZIONI LATO SERVER... 3 1.5 ALTRE APPLICAZIONI LATO

Dettagli

Virtualizzazione con Microsoft Tecnologie e Licensing

Virtualizzazione con Microsoft Tecnologie e Licensing Microsoft Virtualizzazione con Microsoft Tecnologie e Licensing Profile Redirezione dei documenti Offline files Server Presentation Management Desktop Windows Vista Enterprise Centralized Desktop Application

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

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

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP

MIB PER IL CONTROLLO DELLO STATO DI UN SERVER FTP Università degli Studi di Pisa Facoltà di Scienze Matematiche,Fisiche e Naturali Corso di Laurea in Informatica Michela Chiucini MIB PER IL CONTROLLO DELLO STATO DI UN SERVER

Dettagli

RedDot Content Management Server Content Management Server Non sottovalutate il potenziale della comunicazione online: usatela! RedDot CMS vi permette di... Implementare, gestire ed estendere progetti

Dettagli

Algebra Relazionale. algebra relazionale

Algebra Relazionale. algebra relazionale Algebra Relazionale algebra relazionale Linguaggi di Interrogazione linguaggi formali Algebra relazionale Calcolo relazionale Programmazione logica linguaggi programmativi SQL: Structured Query Language

Dettagli

Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali

Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali Riusabilità del software - Catalogo delle applicazioni: Applicativo verticale Applicazione: DoQui/Index - Motore di gestione dei contenuti digitali Amministrazione: Regione Piemonte - Direzione Innovazione,

Dettagli

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP

Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Protocolli di rete Sommario Introduzione ai protocolli di rete Il protocollo NetBEUI Il protocollo AppleTalk Il protocollo DLC Il protocollo NWLink Il protocollo TCP/IP Configurazione statica e dinamica

Dettagli

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi

L evoluzione del software per l azienda moderna. Gestirsi / Capirsi / Migliorarsi IL GESTIONALE DEL FUTURO L evoluzione del software per l azienda moderna Gestirsi / Capirsi / Migliorarsi IL MERCATO ITALIANO L Italia è rappresentata da un numero elevato di piccole e medie aziende che

Dettagli