Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L

1,195 views

Published on

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,195
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
32
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Laboratorio Di Basi Di Dati 03 Il D B M S Postgre S Q L

  1. 1. Corso di Basi di Dati e Laboratorio PostgreSQL Alfio Ferrara - Stefano Montanelli A.A. 2005/2006 Basi di Dati e Laboratorio 1 Introduzione • PgSQL – http://www.postgresql.org – DBMS relazionale Open Source (licenza GPL) – Applicazione Client – Server – La distribuzione consiste in un server e una applicazione client da riga di comando (pgsql) – Disponibili diversi script di amministrazione (initdb, pgdump, …) A.A. 2005/2006 Basi di Dati e Laboratorio 2 Supporto allo standard • Postgres supporta ampiamente lo standard SQL99 • Complex queries, Foreign keys, Triggers, Views, Transactional integrity, Multiversion concurrency control • Estensioni • Data types • Functions • Operators • Aggregate functions • Index methods • Procedural languages A.A. 2005/2006 Basi di Dati e Laboratorio 3 1
  2. 2. Avvio del servizio • Il servizio è avviato dall’istruzione: – postmaster -D /path/cluster -i Avvio del servizio Accetta connessioni non locali Directory di memorizzazione fisica • Il server può gestire più database e essere associato a un cluster specifico A.A. 2005/2006 Basi di Dati e Laboratorio 4 Inizializzare un cluster • Creare una directory (/path/cluster) con su cui l’utente amministratore (postgres) abbia i permessi in lettura/scrittura – initdb -D /path/cluster • Si possono creare utenti e database senza utilizzare il client psql – createuser test / dropuser test – createdb testdb / dropdb testdb A.A. 2005/2006 Basi di Dati e Laboratorio 5 Stato iniziale • Inizialmente sono presenti i database template0 e template1 • Essi sono utilizzati come template per la creazione di nuovi database • È possibile creare un proprio template come base per la generazione di nuovi database A.A. 2005/2006 Basi di Dati e Laboratorio 6 2
  3. 3. Uso del client psql • psql template1[-h host -U utente] – Se omesso viene assunto l’utente corrente e se omesso il db si assume che il db abbia lo stesso nome dell’utente • I comandi sono distinti in due tipologie: – Comandi del client: preceduti da – Comandi SQL • Help in linea – ?[comando]: help sui comandi del client – h[comando]: help su sql • Altri comandi utili – l lista dei db, d descrittore, dt elenco tabelle, etc. A.A. 2005/2006 Basi di Dati e Laboratorio 7 SELECT • Il comando SELECT oltre che per normali query è utilizzato anche per attivare le funzioni postgres • Esempi: – SELECT current_date; – SELECT 2 + 4; A.A. 2005/2006 Basi di Dati e Laboratorio 8 Creazione di utenti e db CREATE USER name [ [ WITH ] option [ ... ] ] SYSID uid | CREATEDB | NOCREATEDB | CREATEUSER | NOCREATEUSER | IN GROUP groupname [, ...] | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'abstime' CREATE DATABASE name [ [ WITH ] [ OWNER [=] dbowner ] [ TEMPLATE [=] template ] [ ENCODING [=] encoding ] [ TABLESPACE [=] tablespace ] ] A.A. 2005/2006 Basi di Dati e Laboratorio 9 3
  4. 4. Creazione di tabelle • La creazione di tabelle è conforme allo standard, ad eccezione dell’uso di tipi di dato particolari o funzioni • Un esempio di estensione dello standard è costituito dalla capacità di tabelle PSQL di ereditare da altre tabelle A.A. 2005/2006 Basi di Dati e Laboratorio 10 Esempio di inheritance Postgresql tutorial (www.postgresql.org) CREATE TABLE cities ( name text, population real, altitude int ); CREATE TABLE capitals ( state char(2) ) INHERITS (cities); A.A. 2005/2006 Basi di Dati e Laboratorio 11 Array • Postgres supporta anche un tipo di dato array • Permette l’uso di attributi multivalore e pertanto è da evitare perché non produce schemi normalizzati A.A. 2005/2006 Basi di Dati e Laboratorio 12 4
  5. 5. Funzioni e estensioni • Postgres implementa un numero molto vasto di funzioni e tipi di dato complessi • Ricordiamo: – Gestione della concorrenza e transazioni – Estensioni procedurali di SQL – Gestione del partizionamento A.A. 2005/2006 Basi di Dati e Laboratorio 13 Esempio: gestione di sequenze CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ] • La sequenza viene poi manipolata con – Nextval(sequenza) – Currval(sequenza) – Setval(sequenza,valore[,booleano*]) – * Determina se il nuovo valore influenza nextval A.A. 2005/2006 Basi di Dati e Laboratorio 14 Informazioni di catalogo e di sistema • Il catalogo è strutturato secondo tre schemi: – Pg_catalog: database di sistema (utenti, etc.) – Information_schema: contiene i metadati – Public: schema di default dei nuovi db • Esempi: – SELECT * from pg_catalog.pg_user; – SELECT * from information_schema.tables; A.A. 2005/2006 Basi di Dati e Laboratorio 15 5
  6. 6. Controllo dell’accesso • Il controllo dell’accesso si effettua per mezzo del file – pg_hba.conf • Il file viene collocato nel cluster dallo script initdb sulla base del default • Modificando il file è possibile definire diverse politiche di accesso con regole analoghe a quelle dei firewall A.A. 2005/2006 Basi di Dati e Laboratorio 16 Sintassi local database user auth-method [auth-option] host database user CIDR-address auth-method [auth-option] hostssl database user CIDR-address auth-method [auth-option] hostnossl database user CIDR-address auth-method [auth-option] host database user IP-address IP-mask auth-method [auth-option] hostssl database user IP-address IP-mask auth-method [auth-option] hostnossl database user IP-address IP-mask auth-method [auth-option] – Local: unix socket – Host: TCP/IP – SSL: uso di connessioni protette – Auth-method: trust | reject | md5 | … – Auth-option: opzioni dei diversi metodi A.A. 2005/2006 Basi di Dati e Laboratorio 17 Esempi #Tutti gli utenti su tutti i db # TYPE DATABASE USER CIDR-ADDRESS METHOD local all all trust # Lo stesso per TCP/IP # TYPE DATABASE USER CIDR-ADDRESS METHOD host all all 127.0.0.1/32 trust #Lo stesso ma specificando gli indirizzi via IP-MASK # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD host all all 127.0.0.1 255.255.255.255 trust A.A. 2005/2006 Basi di Dati e Laboratorio 18 6
  7. 7. Esempi # Consenti ad un utente da host 192.168.12.10 di connettersi al database # quot;postgresquot; se l’utente fornisce la password corretta # TYPE DATABASE USER CIDR-ADDRESS METHOD host postgres all 192.168.12.10/32 md5 A.A. 2005/2006 Basi di Dati e Laboratorio 19 Dump e restore • Copiare e salvare un database – pg_dump [opzioni] nomedb > file – pg_dumpall consente il dump delll’intero cluster • Le opzioni dello script consentono di determinare se effettuare il dump del solo schema o anche dei dati e di determinare l’utente • Restore – Psql nomedb < file • Occorre creare il database vuoto e eventuali utenti associati al db A.A. 2005/2006 Basi di Dati e Laboratorio 20 Dump • Il dump può essere diviso su più file – pg_dump dbname | split -b 1m - filename – cat filename* | psql dbname • Oppure compresso – pg_dump dbname | gzip > filename.gz – cat filename.gz | gunzip | psql dbname A.A. 2005/2006 Basi di Dati e Laboratorio 21 7

×