Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Uno sguardo da vicino alle funzionalità di PostgreSQL

Le principali funzionalità di PostgreSQL esaminate con PgAdmin III, il suo software di amministrazione open source
Le principali funzionalità di PostgreSQL esaminate con PgAdmin III, il suo software di amministrazione open source
Link copiato negli appunti

Dopo aver visto in due precedenti articoli le procedure di installazione su Windows e su Linux di PostgreSQL, cerchiamo di render conto delle nuove funzionalità di questo database, tanto potente quanto complesso. Lo faremo da una posizione privilegiata, ossia dal tool di amministrazione PgAdmin III, disponibile, su un sistema Windows con PosgreSQL installato, dal percorso Start / Tutti i programmi / PostgreSQL 8.1.

PgAdmin III è il tool visuale più completo per l'amministrazione del RDBMS e dei singoli database. A prima vista può lasciare un po' disorientati (specialmente se prima d'ora abbiamo avuto a che fare solo con MySQL) ma il problema non è tanto rappresentato da PgAdmin, quanto dalle numerose funzionalità di PostgreSQL e dalla sua struttura particolare e unica.

Al primo avvio ci si presenterà una schermata come quella visibile in figura 1: PgAdmin non è ancora connesso al servizio e non si vedono i database disponibili.

Figura 1. PgAdmin III al primo avvio

PgAdmin III al primo avvio

Cliccando con il tasto destro del mouse sulla connessione già configurata, PostgreSQL Database Server 8.1 (localhost:5432), e selezionando Connect ci verrà chiesta la password di postgres (l'amministratore del RDBMS). Possiamo anche configurare una nuova connessione locale (ma prima dovremmo creare almeno un altro utente del database locale) o ad un database remoto.

Una volta eseguito il login con l'utente amministratore troveremo già presente un database di test, creato al momento dell'installazione, il cui nome è postgres. Decidiamo, tanto per vedere quanto sia semplice, di creare un database tutto nostro cliccando con il tasto destro sull'icona Databases; lo chiameremo myTest, impostiamo anche in questo caso la codifica UTF-8. Il database appartiene all'utente che lo ha creato ed  è sempre possibile assegnare ruoli e privilegi in un secondo momento.

La figura 2 illustra il database e tutti gli oggetti che gli appartengono, di seguito esamineremo i principali con una panoramica che consentirà di conoscere meglio le funzionalità avanzate disponibili in postgreSQL.

Il database con gli oggetti che gli appartengono

Casts

PostgreSQL, come ogni RDBMS, tenta di effettuare il casting automatico dei tipi quando deve effettuare operazioni che coinvolgono tipi di dato differenti tra loro. Con l'istruzione CREATE CAST è possibile definire delle modalità di conversione personalizzate tra i tipi di dato, le regole di casting aggiuntive sono visibili in PgAdmin all'interno del contenitore Casts.

Languages

Si tratta dei linguaggi con cui è possibile creare le Stored procedures e di cui abbiamo parlato in precedenza. Nel nostro caso abbiamo installato esclusivamente PL/pgSQL, quello di default.

Schemas - Prima parte

Gli schemi sono prima di tutto una risposta ad una limitazione di PostgreSQL: poichè non è possibile effettuare query che coinvolgano più database (ad esempio un'istruzione Select che esegua una Join tra tabelle di database differenti) è previsto che un database sia suddivisibile in schemi. Ogni schema rappresenta una diversa entità all'interno del database (ha le proprie tabelle, le proprie stored procedures e così via) ma si possono eseguire query che coinvolgano tabelle di schemi differenti. Ogni database contiene almeno uno schema di default denominato public.

Tutti gli oggetti che esamineremo nei prossimi paragrafi appartengono agli schemi e non ai database come quelli appena descritti.

Aggregates

In questo "contenitore" finiscono le funzioni di aggregazione aggiuntive che l'utente può creare per estendere quelle già presenti nel database, esempi di funzioni di aggregazione predefinite sono SUM(), AVG(), COUNT() e così via.

Conversions

Funzioni di conversione personalizzate tra character sets differenti.

Domains

PostgreSQL supporta i vincoli (constraints) di colonna e di tabella. Quando un vincolo è utilizzabile da più tabelle, anzichè definirlo per la singola tabella , possiamo assegnarlo come domain in modo che diventi universale. Nel caso di un vincolo sulla validità dell'input, se ad esempio dovessimo utilizzare in più tabelle un campo atto a contenere codici di avviamento postale (Cap),  anzichè effettuare un controllo di validità sul Cap assegnandolo alla singola tabella, posso creare un tipo di dato Cap e contestualmente assegnarvi il controllo di validità. Per esempio:

CREATE DOMAIN cap AS TEXT CHECK( VALUE ~ '^d{5}$' );

Al momento di creare la tabella assegnerò al campo il tipo di dato "cap", come si fa con qualsiasi altro tipo di dato predefinito (integer, varchar e così via).

Schemas - Seconda parte

Continuiamo la nostra descrizione degli schemi di PostgreSQL, già descritti e introdotti nella pagina precedente.

Functions, Operators, Operator Classes

Sono funzionalità aggiuntive con cui è possibile estendere il RDBMS, di solito fanno riferimento ad un compilato in linguaggio C. È possibile aggiungere funzioni di vario tipo e nuovi operatori. Difficilmente avremo la necessità di estendere il database programmando in C poichè l'abbondanza di moduli di terze parti rende superfluo mettere mano a funzionalità così complesse.

Procedures e Triggers

Abbiamo già detto cosa siano le Stored Procedures, i Triggers sono stored procedures particolari che vengono innescate automaticamente al verificarsi di determinati eventi.

Sequences

PostgreSQL non prevede il tipo di dato "autoincrement" come MySQL, in origine quindi non era possibile definire un campo il cui valore si incrementava automaticamente all'aggiunta di un nuovo record. L'unico modo era definire una sequenza, ovvero una sorta di generatore automatico che doveva essere richiamato quando si isneriva un valore nel campo da incrementare. A partire dalla release 7.3 tuttavia è stato introdotto il tipo di dato Serial che pur non essendo un vero "autoincrement" genera automaticamente la sequenza e la assegna come valore di default del campo.

In sostanza dichiarare un campo come "serial"

CREATE TABLE tablename (
 colname SERIAL
);

equivale al vecchio sistema

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
colname integer DEFAULT nextval('tablename_colname_seq') NOT NULL
);

Tables

Sono l'unico aspetto che dovrebbe essere già familiare agli utenti di MySQL, tuttavia ogni database nasce già con delle tabelle predefinite che non devono essere toccate.

Types

Sono i tipi di dati che vanno ad integrare o estendere quelli predefiniti, possono essere creati in svariati linguaggi, solitamente in C. Si tratta di un modo diverso di definire nuovi tipi di dati rispetto all'utilizzo dei domains.

Views

Le Viste sono una sorta di query memorizzate in tabelle virtuali, per questo vengono definite anche "pseudo-tabelle". Si rivelano utili in diverse situazioni, in modo particolare quando si vuole concedere agli utenti l'accesso a determinati dati e solo a quelli.

Conclusioni

Abbiamo esaminato l'installazione di PostgreSQL in Windows e illustrato quali siano gli aspetti che potrebbero disorientare chi fino ad oggi abbia utilizzato esclusivamente MySQL. PostgreSQL , da sempre un RDBMS completissimo, rappresenta una valida alternativa a MySQL in ogni ambito di applicazione sia per la licenza molto permissiva da cui è protetto, sia per il fatto che MySQL è impegnato in una corsa continua all'aggiunta di nuove funzionalità (già presenti da tempo in PostgreSQL) che comporta frequentemente delle incompatibilità con il passato.

Nei prossimi articoli scenderemo in profondità nell'utilizzo delle funzionalità avanzate senza distinzione tra ambiente Windows e Unix-like.

Ti consigliamo anche