Tutorial su http://www.postresql.org
SQL 99 compliant (tra cui transazioni)
Supporto ad estensioni (funzioni, operatori, funzioni aggregate, index methods, tipi di dati estesi)
Gestione del partizionamento (fisico sui dischi), gestioni di tipi di dato complessi
Gestione delle sequenze: campi che prendono automaticamente un valore in base ad un'espressione (tipo campo contatore, ma più flessibile). Il tipo di dato è serial (di default somma 1, ma posso definire come voglio: CREATE SEQUENCE SequenceName INCREMENT BY increment, più altre opzioni come [MINVALUE MinValue] [MAXVALUE MaxValue] [START StartValue] [CYCLE] (ripropone a ciclo i valori)). In realtà usa un campo int il suo default value è il valore di una funzione
Gestione degli array (SCONSIGLIATO: viola i principi dei DB relazionali!)
Il server è un servizio (postmaster)
Il servizio viene avviato con un utente apposito (che non deve essere un amministratore di sistema)
Basato sul concetto di cluster: uno storage fisico dei database (solo uno alla volta).
Per creare un nuovo cluster:
- Creare una cartella (utente PostgreSQL deve avere permessi di lett/scr)
- Initdb –D cartella
Comandi
Comandi per il server iniziano con "\"
\? help sui comandi
\h help su SQL
\l Lista dei DB
\d Descrittore (\dt elenco tabelle, \df elenco delle funzioni)
\z lista di accesso a tabelle, viste e sequenze con privilegi di accesso
Comandi SQL si scrivono normali
Ereditarietà
Potrei ereditare una tabella da un'altra (lo fa solo Postgre, però ammazza la portabilità): CREATE TABLE (campi diversi) INHERITS TabellaBase;
Esempio Capitali eredità Città. Inserendo una capitale automaticamente sarà presente anche la città corrispondente automaticamente (ed eliminandola viene eliminata anche dalla classe base, sembra scontato, ma non lo è!)!
IN PRATICA
Connessione dal client:
psql TemplateName [-h host] [-U utente]
Appena lanciato lo script di inizializzazione crea 2 database: Template0 e Template1
Ogni DB in PostgreSQL viene creato a partire da un Template (che può essere personalizzato aggiungendo delle tabelle di uso comune ad esempio)
Crea postgresql.conf -> Configurazione generale del cluster. pg_hba.conf -> gestione della politica degli accessi (funziona in maniera simile alla configurazione di un firewall)
(fare partire il server)
Script di creazione degli utenti (createuser)
Script di creazione di un database (createdb)
Manipolare una sequenza:
Nextval(sequenceName)
Currval(sequenceName)
Setval(sequenceName, value[, bool]) Il valore bool indica se il valore inserito influenza nextval
Manipolare le connessioni
Editando il file pg_hba.conf
Ho le connessioni di tipo: local (locali), host (via rete), hostssl (via rete, ma solo con SLL), hostnossl
Sono definite a livello di database e utente (posso definirle in generale per un utente e/o DB)
Posso anche ulteriormente filtrare per un Ip e una mask
Dump/Restore di un DB
Pg_dump [opzioni] nomeDB > filename
Pg_dumpall consente il dump dell'intero cluster
Restore: Psql nomeDB < filename
Nessun commento:
Posta un commento