Un RDBMS libero: PostgreSQL Federico Campoli (neo@thezion.net) Un RDBMS libero: PostgreSQL Pagina 1



Documenti analoghi
Un RDBMS libero: PostgreSQL. Pagina 1

Lorenzo Sarti Materiale didattico sarti

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

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

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

Studi di Settore. Nota Operativa 22/4/2013

L architettura di un DBMS

Informatica Generale Andrea Corradini Sistemi di Gestione delle Basi di Dati

Lezione 9. Applicazioni tradizionali

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Database & FreeBSD. Come configurare il sistema operativo ottimizzando le prestazioni sul DB. GufiCon#3 Milano, 12 Ottobre 2002

Configurazione avanzata di IBM SPSS Modeler Entity Analytics

Indice. Introduzione PARTE PRIMA L ARCHITETTURA DEI DATABASE 1

Installazione e caratteristiche generali 1

Installazione MS SQL Express e utilizzo con progetti PHMI

GovPay 2.0. Manuale Installazione

Dispensa di database Access

Introduzione all Architettura del DBMS

Informatica DR KLOE Calcolo

Database e reti. Piero Gallo Pasquale Sirsi

Volumi di riferimento

Il web server Apache Lezione n. 3. Introduzione

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

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

Il DBMS Oracle. Express Edition. Donatella Gubiani e Angelo Montanari

15J0460A300 SUNWAY CONNECT MANUALE UTENTE

Transazioni - Parte 1

Tracciamento delle attività in Moodle

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

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

Installazione di GFI WebMonitor

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

Coordinazione Distribuita

1. BASI DI DATI: GENERALITÀ

Introduzione a Oracle 9i

Manuale per la configurazione di AziendaSoft in rete

Guida all Installazione del ProxyFatturaPA

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

GERARCHIE RICORSIVE - SQL SERVER 2008

Il client deve stampare tutti gli eventuali errori che si possono verificare durante l esecuzione.

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

Basi di dati. Corso di Laurea in Ingegneria Informatica Canale di Ingegneria delle Reti e dei Sistemi Informatici - Polo di Rieti

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

Caratteristiche principali. Contesti di utilizzo

Come Installare SQL Server 2008 R2 Express Edition With Tools

PostgreSQL - amministrazione

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

Capitolo 1 Oracle: la società e il software Terminologia Oracle Corporation: la storia L offerta corrente 12 1.

Guida all installazione di Easy

A. Bardine - Introduzione a PostgreSQL. PostgreSQL è un software relazionale e ad oggetti per la gestione di basi di dati

Gestione rifiuti VeLieRO

DBMS (Data Base Management System)

Iniziamo la panoramica sul funzionamento dell'svn sulla suite S.A.

DATABASE.

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

SOMMARIO COSA SERVE... 2 PRIMA DI INIZIARE... 2 COME PROCEDERE LATO SERVER... 3 COME PROCEDERE LATO CLIENT... 3

SPSS Statistics per Windows - Istruzioni di installazione per (Licenza per utenti singoli)

IL FITOFOR: UNO STRUMENTO PER LA GESTIONE DELLE INFORMAZIONI FITOSANITARIE. Marino Vignoli, Elisa Moneti, M. Miozzo DREAM - Italia

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

COMPILAZIONE DI UN APPLICAZIONE. 1) Compilare il file (o i file se più d uno) che contengono il testo del programma. compilatore

Informatica I per la. Fisica

Sistemi avanzati di gestione dei Sistemi Informativi

crazybrain snc Presentazione_VisualFTP.pdf Pag. 1 VisualFTP Presentazione del prodotto Web partner:

FAQ DI INSTALLAZIONE DI INAZIENDA Rev.2

Architettura di storage

Fate doppio click sul file con nome postgresql-8.0.msi e impostate le varie voci come riportato nelle immagini seguenti:

Installazione di GFI LANguard Network Security Scanner

Configurazione avanzata di IBM SPSS Modeler Entity Analytics

Manuale Terminal Manager 2.0

Scheda di Notifica Manuale d'uso

Scritto da Super Administrator Lunedì 08 Ottobre :55 - Ultimo aggiornamento Martedì 23 Aprile :27

Indice Introduzione Elementi di base dei database Il linguaggio SQL (Structured Query Language)

Software di interfacciamento sistemi gestionali Manuale di installazione, configurazione ed utilizzo

Presentazione di virtual desktop client + LTSP server

Il software di gestione immobiliare più facile da usare. Modulo Web v5.2.

e/fiscali - Rel e/fiscali Installazione

Esercizio 2. Client e server comunicano attraverso socket TCP

Schedulatore per la comunicazione con le Porte di Dominio

SurfCop. Informazioni sul prodotto

Introduzione a Dev-C++

1.1 Installazione di ARCHLine.XP

Come installare e configurare il software FileZilla

Organizzazione degli archivi

Indice GAMMA. Guida utente

Plugin di integrazione con Wordpress

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

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

Licenza per sito Manuale dell amministratore

Intel One Boot Flash Update Utility Guida dell utente

Transmission Control Protocol

Product Shipping Cost Guida d'installazione ed Utilizzo

Database Manager Guida utente DMAN-IT-01/09/10

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

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

Application Server per sviluppare applicazioni Java Enterprise

Progetto: Servizio location based per la ricerca di punti di interesse

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

ARCHIVIA PLUS VERSIONE SQL SERVER

Transcript:

Un RDBMS libero: PostgreSQL by Federico Campoli (neo@thezion.net) Un RDBMS libero: PostgreSQL Pagina 1

Generalita' sui database Panoramica su PostgreSQL Installazione database via ricompilazione Amministrazione dell'istanza Confronto tra Postgres e altri database Le novita' della versione 8.1 Un RDBMS libero: PostgreSQL Pagina 2

Generalita' sui database relazionali Generalita' sui database Pagina 3

DATABASE RELAZIONALE Relational DataBase Management System (RDBMS) I dati sono rappresentati tramite tabelle I database relazionali vengono gestiti attraverso un linguaggio di alto livello, SQL (Structured Query Language). L'RDBMS si occupa dell'archiviazione e dell'integrita' dei dati Generalita' sui database Pagina 4

Il linguaggio SQL SQL, Structured Query Language Permette di agire sull'rdbms in maniera totalmente trasparente Consiste in un insieme ristretto di parole chiave in inglese Esistono vari dialetti a seconda dell'rdbms Attraverso l'sql l'rdbms opera sui dati senza che l'utente debba sapere come ne avviene la gestione Generalita' sui database Pagina 5

Panoramica su PostgreSQL Storia del database relazionale Struttura e funzionamento istanza Il catalogo di sistema Esecuzione di una query Caratteristiche di PostgreSQL Panoramica su PostgreSQL Pagina 6

Nasce nel 1977 all'universita' di Berkeley col nome di INGRES Si evolve nel 1986 come The Berkeley POSTGRES Project Leader del progetto e' il Professor Michael Stonebraker Nel 1994 Andrew Yu and Jolly Chen integrano un interprete SQL al progetto che viene rilasciato col nome Postgres95 Il motore di Postgres95 viene scritto interamente in ANSI C Postgres95 1.0.x e' il 30-50% piu veloce di POSTGRES 4,2 Postgres95 viene rilasciato come progetto open source Dal 1996 viene adottato il nome PostgreSQL Panoramica su PostgreSQL Pagina 7

Postmaster Istanza PostgreSQL Cluster database Panoramica su PostgreSQL Pagina 8

Postmaster Processo padre che si occupa del funzionamento dell'rdbms Necessita, per essere avviato di un cluster database su filesystem Il posmaster resta in attesa di connessioni socket o TCP Le connessioni TCP sono opzionali e vanno abilitate allo startup Ogni richiesta di connessione al postmaster provoca l'avvio di un processo server (postgres) dedicato per la connessione avviatasi Le comunicazioni tra postmaster, cluster database e processi server avvengono via semafori e chiamate ipc Panoramica su PostgreSQL Pagina 9

Cluster database Directory su filesystem formattata per ospitare l'istanza Viene inizializzata con il programma initdb L'owner deve essere lo stesso del processo postmaster All'interno del cluster e' presente il file di inizializzazione postgresql.conf Per funzionare al meglio deve risiedere su filesystem con blocchi da 8k Al suo interno risiede il catalogo di sistema e i template dei database e i database utente Panoramica su PostgreSQL Pagina 10

Il catalogo di sistema Il catalogo di sistema e' costituito da un insieme di tabelle comuni a tutti database del cluster e dal dizionario dati Il dizionario dati si occupa del parsing dei comandi SQL (parser stage) e viene adoperato dal planner per la risoluzione del piano di esecuzione L'owner delle tabelle e' l'utente postgres che e' anche il super user del cluster database Gli utenti non privilegiati possono visualizzarne i dati attraverso delle viste di sistema Le viste di sistema vengono utilizzate per ottenere informazioni sul funzionamento del cluster. Panoramica su PostgreSQL Pagina 11

Le viste di sistema(cenni) pg_user vista di sistema che opera sulla tabella pg_shadow fornisce informazioni sugli utenti pg_tables tabella di sistema, fornisce informazioni sulle tabelle del cluster pg_settings tabella di sistema, fornisce informazioni sui parametri runtime dell'istanza pg_database tabella di sistema, fornisce informazioni sui database presenti nel cluster pg_statistic tabella di sistema, contiene le statistiche degli oggetti del cluster. Viene aggiornata durante le operazioni di analyze degli oggetti del cluster. Panoramica su PostgreSQL Pagina 12

Esecuzione di una query Il client si connette al database server Il processo server riceve la query che viene passata al parser Il parser costruisce il query tree Il planner/optimizer verifica i possibili piani di esecuzione L'executor processa il piano selezionato dal planner/optimizer e restituisce i risultati al processo server. Panoramica su PostgreSQL Pagina 13

Caratteristiche di PostgreSQL Data dictionary e catalogo di sistema Transazionale (richiede apertura esplicita delle transazioni) Funzionalita' di subquery Trigger Supporto per piu' linguaggi procedurali Possibilita' di implementare funzioni attraverso routine esterne scritte in C Viste Funzioni Cursori Trigger Multiversion Concurrency Control Panoramica su PostgreSQL Pagina 14

Installazione database via ricompilazione Installazione di Postgresql Pagina 15

Perche' ricompilare? Ricompilando si ottiene codice ottimizzato per il processore su cui dovrà girare il software. Si può adoperare sempre l'ultima release senza essere legati al rilascio dei pacchetti binari In fase di configurazione e' possibile specificare alcuni parametri che danno al database caratteristiche speciali come il supporto per il Python o la readline Installazione di Postgresql Pagina 16

Installazione via compilazione (1) Download dei sorgenti dal sito www.postgresql.org Creare un utente postgres e un gruppo postgres Decomprimere i sorgenti in una directory di appoggio e cambiarne l'ownership a postgres.postgres Diventare utente postgres e avviare la configurazione del source tree con./configure Qualora mancassero librerie necessarie alla compilazione installarle secondo le istruzioni della distribuzione che si sta utilizzando (rpm,dpkg, compilazione). Installazione di Postgresql Pagina 17

Installazione via compilazione (2) Compilare il database con make Al termine della compilazione eseguire il regression test con make check Installare il database con make install Creare una directory con ownership postgres.postgres e inizializzarla con initdb -D <data_dir> Impostare le variabili di ambiente PATH e PGDATA per il corretto startup del processo postmaster Installazione di Postgresql Pagina 18

Installazione via compilazione (3) Avviare il database system con pg_ctl postgres@debianworkstation:~$ pg_ctl start postmaster successfully started postgres@debianworkstation:~$ LOG: could not create IPv6 socket: Address family not supported by protocol LOG: database system was shut down at 2004-11-09 23:24:17 CET LOG: checkpoint record is at 0/A7DBB4 LOG: redo record is at 0/A7DBB4; undo record is at 0/0; shutdown TRUE LOG: next transaction ID: 797; next OID: 17151 LOG: database system is ready Installazione di Postgresql Pagina 19

Amministrazione dell'istanza L'istanza viene amministrata sia come processo che come servizio Il processo viene avviato chiamando direttamente postmaster passandogli il parametro datadir Il servizio (piu' funzionale in un contesto server) viene gestito dal programma pg_ctl che permette di avviare o di arrestare il database. Se la variabile di ambiente PGDATA e' valorizzata richiede, come parametro, solo il comando da eseguire. Amministrazione istanza Pagina 20

Amministrazione dell'istanza pg_ctl start avvia l'istanza pg_ctl stop ferma l'istanza L'opzione -m indica la modalita' di shutdown che puo' avvenire in 3 modalita' smart attende che le connessioni siano terminate per chiudere l'istanza fast chiude le connessioni esegue il rollback delle transazioni non committate e poi chiude l'istanza immediate termina tutti i processi server e il postmaster lasciando il cluster dirty. Dopo uno shutdown immediate durante lo startup si ha il recovery dell'istanza kill -9 postmaster e' male! Amministrazione istanza Pagina 21

Access PostgreSQL e altri... Non e' un database server Non ha dizionario dati Instabile sopra le 10 connessioni concorrenti Ha foreign keys Ha viste (query) Ha un SDK per interfacce form Non permette una gestione ottimale dello spazio disco Non possiede funzioni di replica Backup solo a freddo (copia file mdb) Lock in lettura a livello di riga PostgreSQL vs $nome_db Pagina 22

Mysql PostgreSQL e altri... Ha un demone server in ascolto su connessioni TCP Non ha dizionario dati Non ha problemi con connessioni multiple Foreign keys attivabili solo con tabelle innodb Non ha viste Non ha nessun tipo di linguaggio procedurale o SDK Datadir unica Backup sottoforma di comandi SQL Lock in lettura a livello di riga PostgreSQL vs $nome_db Pagina 23

Oracle PostgreSQL e altri... Database Server Ha dizionario dati Non ha problemi con connessioni multiple Foreign keys Possiede le Viste Linguaggio procedurale PL/SQL Tablespaces Modalita' di backup a caldo e freddo automatizzato Lock in scrittura PostgreSQL vs $nome_db Pagina 24

PostgreSQL PostgreSQL e altri... Connessioni su socket unix e TCP Ha dizionario dati Non ha problemi con connessioni multiple Foreign keys Possiede le Viste Linguaggi procedurali PL/pgSQL, PL/Tcl, PL/Perl, PL/Python Tablespace Backup con export dati o con PITR (Modalita' archivelog) Multiversion Concurrency Control PostgreSQL vs $nome_db Pagina 25

Le novita' della versione 8.1.x Log Archiver Windows port Point In Time Recovery Contraint Exclusion (Table Partitioning) Procedure Autovacuum 2 phase commit Tablespaces Bitmap Index Savepoints nelle transazioni Le novita' della versione 8.1 Pagina 26

Le tablespaces Una tablespace e' una locazione logica interna al database dove collocare oggetti eterogenei. Alla locazione logica fa da controparte una locazione fisica univoca. E' quindi possibile scegliere dove posizionare gli oggetti di database singolarmente. Per creare una tablespace (necessita di diritti superuser) CREATE TABLESPACE tablespacename [ OWNER username ] LOCATION 'directory'; Una volta creata la tablespace non e' possibile cambiare la LOCATION. E' pero' possibile cambiare l'owner e il nome con i comandi ALTER TABLESPACE name RENAME TO newname; ALTER TABLESPACE name OWNER TO newowner; Le novita' della versione 8.1 Pagina 27

Savepoints nelle transazioni I savepoints sono una sorta di bookmark all'interno delle transazioni. Prima della versione 8 postgresql supportava solo questa sintassi per le transazioni. BEGIN; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; UPDATE accounts SET balance = balance + 300.00 WHERE name = 'Bianconiglio'; COMMIT; (o ROLLBACK;) Il rollback poteva essere eseguito solo su tutto il blocco transazionale. Le novita' della versione 8.1 Pagina 28

Savepoints nelle transazioni Dalla versione 8 in poi e' possibile avere una sintassi del genere BEGIN; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; SAVEPOINT Bianconiglio; UPDATE accounts SET balance = balance + 300.00 WHERE name = 'Bianconiglio'; ROLLBACK TO Bianconiglio; UPDATE accounts SET balance = balance - 300.00 WHERE name = 'Bianconiglio'; COMMIT; Le novita' della versione 8.1 Pagina 29

Bitmap Index Un indice bitmap e' una mappa di bit che descrive le occorrenze dei singoli valori presenti in una colonna Bitmap su Colonna Sesso Nome Sesso M F Federico M 1 0 Luigi M 1 0 Anna F 0 1 Maurizio M 1 0 Sabrina F 0 1 Elena F 0 1 Pregi Velocissimo negli join Estremamente compatto Utilissimo per sostituire gli indici compositi Difetti Richiede tempo e risorse per la creazione Negli update letteralmente sdraia il server Le novita' della versione 8.1 Pagina 30

Bitmap Index PostgreSQL introduce gli indici bitmap dalla versione 8.1 La sua implementazione e' quantomai originale NEL CLUSTER DATABASE NON ESISTONO INDICI BITMAP NE E' POSSIBILE CREARLI L'ottimizzatore nella risoluzione del piano, SE RITIENE OPPORTUNO, e' in grado di trasformare al volo un indice B-TREE in un bitmap con un costo accettabile. In questo modo si riduce drasticamente la necessita' di avere indici compositi sulle colonne. Le novita' della versione 8.1 Pagina 31

Webografia http://www.postgresql.org/ http://www.psql.it/ http://pgfoundry.org/projects/my2postgres/ http://www.google.com Un RDBMS libero: PostgreSQL Pagina 32

Tu sei libero: * di riprodurre, distribuire, comunicare al pubblico, esporre in pubblico, rappresentare, eseguire e recitare quest'opera * di modificare quest'opera Alle seguenti condizioni: Devi attribuire la paternità dell'opera nei modi indicati dall'autore o da chi ti ha dato l'opera in licenza. Non puoi usare quest'opera per fini commerciali. sa Se alteri o trasformi quest'opera, o se la usi per crearne un'altra, puoi distribuire l'opera risultante solo con una licenza identica a questa. * Ogni volta che usi o distribuisci quest'opera, devi farlo secondo i termini di questa licenza, che va comunicata con chiarezza. * In ogni caso, puoi concordare col titolare dei diritti d'autore utilizzi di quest'opera non consentiti da questa licenza. Le utilizzazioni consentite dalla legge sul diritto d'autore e gli altri diritti non sono in alcun modo limitati da quanto sopra. Questo è un riassunto in linguaggio accessibile a tutti del Codice Legale. Testo integrale della licenza disponibile all'indirizzo http://creativecommons.org/licenses/by-nc-sa/2.5/it/legalcode Licenza Pagina 33

Un RDBMS libero: PostgreSQL by Federico Campoli (neo@thezion.net) Un RDBMS libero: PostgreSQL Pagina 34