Saranno rilasciate slide a cura del docente. Le slide saranno disponibile all’inizio del corso. Gli esempi pratici saranno tutti eseguiti mediante terminale interattivo psql, ove possibile. Il docente preparerà le macchine virtuali necessarie a mostrare gli esempi e i concetti illustrati nel corso. Sarà, inoltre, erogato un test, a fine corso, basato su una serie di domande di valutazione a risposta singola e/o multipla.
PostGreSQL Ver.12 e 9.6
obiettivi
argomenti
info
Modalità
Virtual classroom
Durata
Modalità
Virtual classroom
Durata
Obiettivi
Il corso, oltre ad affrontare gli aspetti teorici, prevede l’analisi approfondita di interessanti casi di studio e di esercitazioni pratiche mirate al raggiungimento di una completa padronanza degli argomenti e di una piena autonomia nell’operatività.
Argomenti Trattati
AMMINISTRAZIONE AVANZATA DI UN CLUSTER POSTGRESQL
- Introduzione alla configurazione di PostgreSQL, file e viste (cataloghi) relativi.
- Tecniche per l’individuazione degli errori di configurazione.
- Principali parametri di configurazione e loro significato, nonché dimensionamento in base alla dimensione (attesa o misurata) del cluster.
RUOLI, UTENTI, AUTORIZZAZIONI, PERMESSI E SICUREZZA
- Saranno presentati i concetti di ruolo come utente e gruppo, nonché la configurazione necessaria alla gestione dei permessi a livello di database e di singolo oggetto.
- Si discuterà dei meccanismi di gestione degli account.
MONITORAGGIO
- Saranno mostrati i principali cataloghi di sistema per tenere traccia delle attività del cluster.
- Verranno illustrati alcuni tool utili per l’analisi a posteriori e dinamica del sistema in esecuzione, con esempi di query per ricavare le informazioni di eventuali processi bloccati, lock, e anomalie.
INDICI E PLANNER
- Verrà mostrato il funzionamento del query planner, con particolare riferimento all’eventuale utilizzo di indici.
- Dopo aver classificato e illustrato i vari tipi di indici messi a disposizione, nonché il loro contesto di utilizzo, si passerà all’analisi di alcune query per comprendere come individuare eventuali punti critici e tuning da operare sulle query “lente”.
- Si mostreranno i cataloghi di sistema relativi all’individuazione di indici non utilizzati e/o mancanti.
BACKUP E RESTORE
- Saranno illustrate le principali opzioni di backup e restore native, nonché la possibilità di utilizzare strumenti di backup esterni con particolare riferimento a pgBackRest e BarMan.
WAL, TRANSIZIONI, MVCC E VACUUM
- Si spiegherà il funzionamento dei Write Ahead Logs (WALs), il loro utilizzo in caso di crash-recovery e la configurazione relativa nel cluster.
- Si mostrerà il funzionamento del Multi Version Concurrency Control (MVCC) e come questo possa impattare su un database attivo.
- Da ultimo si valuterà come risolvere i problemi causati da un eccessivo “bloat” di tabelle ed indici mediante VACUUM manuale e automatico, nonché la configurazione delle soglie e l’analisi del funzionamento.
REPLICA E ALTA DISPONIBILITÀ
- Verranno mostrate le due tipologie correntemente supportate da PostgreSQL:
- replica fisica
- replica logica
- Per ciascuna saranno fornite configurazioni ed esempi, nonché si discuterà delle casistiche di utilizzo.
SCALABILITÀ E SHARDING
- Si introdurranno tools esterni quali:
- pgbouncer per la gestione delle connessioni rimbalzate su più host
- PL/Proxy per lo sharding mediante codice installato sul server
- partizionamento dichiarativo per realizzare lo sharding fra più istanze PostgreSQL fra loro collegabili.
AUDITING E LOGGING
- Differenza fra auditing e logging.
- Parametri di configurazione per il logging e loro utilizzo.
- Verrà trattato e discusso il meccanismo di auditing, con particolare riferimento all’estensione pgaudit che consente una configurazione molto granulare per l’auditing delle sessioni utente/applicazione.
SERVER SIDE PROGRAMMING
- Verranno illustrati concetti relativi alla definizione di funzioni e procedure, con particolare riferimento al linguaggio plpgSQL, ma saranno anche mostrati esempi didattici in altri linguaggi.
- Si discuteranno casi particolari di istruzioni SQL come UPSERT, query RETURNING, alcuni cenni a Common Table Expressions.
- Sarà discusso approfonditamente l’aspetto delle viste, normali e materializzate, nonché i trigger tradizionali e quelli ad eventi.
Info aggiuntive
Verranno trattate differenti versioni di PostgreSQL, con particolare riferimento alla versione 12 nonché la precedente versione 9.6. Saranno mostrate le maggiori differenze fra le varie versioni e le modalità possibili per l’aggiornamento e la migrazione da una versione ad un’altra.
La piattaforma di riferimento sarà Unix, in particolare FreeBSD e Fedora Linux.
Saranno forniti cenni a vari tools utili per la gestione del cluster, nonché all’interfacciamento con lo stesso.