PostgreSQL: il database Open Source di fascia Enterprise piu' avanzato al mondo
1. PostgreSQL 9
il database Open Source di fascia Enterprise più avanzato al mondo
Gabriele Bartolini
file:///D:/Documenti-m.marzocchi/Dropbox/Slide-Codemotion/Codemotion/Talk/itpug/logo/logo.tif
Italian PostgreSQL Users' Group
file:///D:/Documenti-m.marzocchi/Dropbox/Slide-Codemotion/Codemotion/Talk/itpug/logo/logo_w_elephant.tif
www.postgresql.org
www.itpug.org
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
2. Parte I
Il progetto PostgreSQL
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
3. Postgres o PostgreSQL?
● Il nome ufficiale è PostgreSQL
● Postgres era il nome iniziale del progetto
● Con l'aggiunta del supporto SQL (1996) il progetto cambiò nome in PostgreSQL
● Postgres è accettato come sinonimo
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
4. PostgreSQL e le funzionalità chiave
● Open-Source Database Management System
● Conformità con gli standard (SQL:2008)
● Multi-Version Concurrency Control
– Multi-utente, progettato per la concorrenza
● Estensibilità:
– Tipi di dato
– Funzioni
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
6. 100% Open-Source e di Comunità
● Distribuito secondo una licenza in stile BSD
– The “PostgreSQL License” (TPL)
● http://www.opensource.org/licenses/postgresql
– Altamente permissiva
– Non soggetto a cambi di licenza
● sarà sempre open-source
– Non soggetto ad acquisizioni
● Un progetto di comunità
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
7. La storia di PostgreSQL (1/2)
● 1986 – 1993: University Postgres
– (Michael Stonebraker)
● 1994 – 1995: Postgres95
– (Jolly Chen e Andrew Yu)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
8. La storia di PostgreSQL (2/2)
● 1996 – oggi: PostgreSQL:
– Fase 1, 1996 – 1998: eliminazione dei crash
– Fase 2, 1998 – 2001: aderenza allo standard SQL
– Fase 3, 2001 – 2004: robustezza e stabilità
– Fase 4, dal 2004 in poi: funzionalità di classe
enterprise
● Contributo di centinaia di sviluppatori provenienti da tutto il mondo
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
10. Release di PostgreSQL
● Attuale release stabile: 9.0.3 (1 Febbraio 2011)
● Major release corrente: 9.0 (settembre 2010)
– 5 major release negli ultimi 5 anni
● Release più vecchia supportata: 8.1 (2005)
– Su piattaforma Windows: 8.2
● Major release supportate dalla comunità:
– 8.1, 8.2, 8.3, 8.4 e 9.0
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
11. L'evoluzione di PostgreSQL
● Aggiungere nuove funzionalità e migliorare le prestazioni
● Bisogni nati per scopi diversi:
– Commerciali
– Accademici
● Il più utilizzato in ambito PhD
– Interesse personale (in pieno spirito hacker)
● Presenza occasionale di committenti
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
12. Cicli di sviluppo
● Obiettivo:
Obiettivo una major release l'anno
● Le nuove funzionalità vengono proposte in più finestre temporali, chiamate
Commit fest
● Le proposte hanno la forma di vere e proprie patch complete di documentazione
● Review:
Review ad ogni patch viene assegnato un esperto che dovrà valutare se
applicare la patch al codice
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
13. Il rilascio di una versione di PostgreSQL
● Beta:
Beta viene rilasciata una versione per testing diffuso
● Fase di pre-rilascio: la comunità prepara gli annunci nelle principali lingue
(italiano incluso)
● Viene rilasciata la versione M.m.0
● Inizia il periodo di manutenzione che può durare diversi anni
– Attualmente almeno 5 anni
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
14. L'ecosistema “PostgreSQL”
● Comunità ● Aziende sponsor
– Sviluppatori – Sviluppatori
– Utenti ● Stakeholder esterni
● Utilizzatori – Aziende che
– Aziende e sponsorizzano lo
organizzazioni sviluppo di
funzionalità
– Consulenti
– Privati
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
15. La comunità in Italia e in Europa
● Associazione culturale ITPUG (Italian PostgreSQL Users' Group)
– http://www.itpug.org/
● Associazione PostgreSQL Europe
– http://www.postgresql.eu/
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
16. Chi ha già scelto PostgreSQL
● Skype
– Skype utilizza PostgreSQL per memorizzare i
profili dei propri utenti
● Afilias
– Secondo più grande servizio di registrazione
domini al mondo
● MyYearBook
– Social network (fra i 25 siti più visitati negli USA)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
17. Parte II
PostgreSQL 9
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
18. Architettura
● Client / Server
● Multi processo
● Scritto in linguaggio ANSI C
● Utilizza servizi stabili del sistema operativo
● Multi piattaforma
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
19. PostgreSQL su C64?
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
20. Alcuni esempi di utilizzo
● Sistemi transazionali (OLTP) ● Piattaforme di social networking
● Telecomunicazioni ● Siti web ad alto volume di traffico
● E-Commerce ● Sistemi territoriali (estensione
● Monitoraggio di dispositivi PostGIS)
elettronici ● Web CMS, Blog
● ERP, CRM, data warehouse, BI ● ecc.
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
21. Un prodotto versatile
● Molteplici interfacce di connessione:
– Nativa, JDBC, Python, Perl, PHP, ODBC, .Net, ...
● Molteplici linguaggi lato server:
– PL/pgSQL, PL/Java, PL/Perl, PL/Python, ecc.
● Utenti, path, opzioni, variabili di ambiente
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
22. Alcune funzionalità “interessanti”
● Viste ● Tablespace
● Stored procedure ● Partizionamento
● Trigger ● Tipi personalizzati
– Anche di colonna e ● Regole di riscrittura (Rule)
condizionali
● Transazioni ACID
● Schemi
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
23. Sicurezza
● Concetto di “sicurezza di default
sicurezza default” ● SSL
● Modello di sicurezza multi-livello ● Integrazione con l'infrastruttura
– server, database, aziendale di sicurezza
tabella, colonna ● Completa divulgazione delle
vulnerabilità
● Rapido fix dei bug di sicurezza
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
24. Funzionalità per tecnologie web
● Supporto a SQL:2008
● Supporto standard UNICODE (codifica UTF-8)
● Supporto per espressioni regolari
● Supporto XML
● Collation a livello di database
● Localizzazione standard (NLS)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
25. Funzionalità avanzate per il web
● Ricerca full text
● Array
● Compressione trasparente dei campi testo
● Tipi di dato (enumerazioni, uuid, cidr, macaddr, hstore, ...)
● Parametri di sessione con SET
● Commit asincrona
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
26. Disaster recovery, HA e Replica
● Robustezza e affidabilità (WAL file)
● Hot backup
● Online Backup e Point in time recovery
● Warm Standby (HA)
● Replica asincrona Master/Slave nativa (introdotte in 9.0):
– Hot Standby
– Streaming replication
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
27. Hot Standby
Host A Host B
Database primario Log shipping Database standby
Continuous recovery
Applicazioni software
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
28. Altre soluzioni di replica
● Non facenti parte del nucleo di PostgreSQL
– Uniche soluzioni disponibili per PostgreSQL < 9
● Molteplici alternative
– Slony
– PGPool
– Bucardo
– Londiste (Skype)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
29. VLDB
● Nel mondo vi sono molte installazioni di database PostgreSQL con dimensioni
superiori al terabyte
● Utilizzo tipico in contesti da 100GB e oltre
● Funzionalità chiave:
– Architetture SMP
– Tablespace
– Partizionamento orizzontale
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
30. Scalabilità: MySQL vs PostgreSQL
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
31. Scalabilità
● Cache di risultati:
– pgmemcache per integrazione con memcached
● Distribuzione su più nodi:
– PgBouncer (connection pooling)
– PL/Proxy
● Map/Reduce (RUN ON ALL, ANY, singolo nodo)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
32. Tool di amministrazione e monitoraggio
● Linea di comando: ● Alerting:
– psql, pg_dump, – integrazione con
pg_restore, ecc. Nagios
● GUI: ● Monitoring:
– PgAdmin3 – integrazione con
Munin e Cacti
● Web:
● Controllo della replica:
– PHPpgAdmin
– repmgr (devel)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
33. Estensione spaziale PostGIS
● La principale estensione di PostgreSQL
● Utilizzata dal progetto OpenStreetMap
● Fornisce tipi di dato geografici
– Open Geospatial Consortium
● Trasforma PostgreSQL in un geodatabase
● Integrazione in un sistema informativo territoriale
– GIS (Geographical Information System)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
34. Il futuro prossimo: PostgreSQL 9.1 (autunno 2011)
● Miglioramenti nelle operazioni ● Synchronous Replication (in corso)
● Packaging delle estensioni ● Trigger su viste (“updatable views”)
● Nuove funzionalità e miglioramenti ● Collation su colonna
di prestazioni in aree chiave ● Writable CTE
● Serializable Snapshot Isolation
● Miglior partizionamento
● ...
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
35. Parte III
Conclusioni
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
36. Chi passa a Postgres?
● Crisi finanziaria:
– Taglio nei costi di licenza
– Migrazione da database proprietari
● Database geografici:
– Alta qualità delle soluzioni PostGIS
● Abbandono di MySQL:
– Dual licensing
– Incertezza sul futuro open source
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
37. Conclusioni sull'adozione di Postgres
● 0 costi di licenza
● Modello di licenza semplice
● Immune dal monopolio
● Riduce il costo di proprietà totale (TCO) per una soluzione di database
● Rimuove il vendor lock-in
● Investimento in conoscenza
● Più grande comunità per un progetto di database open-source
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
38. Associazione culturale ITPUG (Italian PostgreSQL Users Group)
● Promuovere PostgreSQL con professionalità verso PA, scuole e aziende
● Organizzare l'evento PostgreSQL Day italiano ogni anno
● Partecipare a iniziative/conferenze su software libero e open-source
● Punto di incontro fra la comunità internazionale e quella italiana
● Creare progetti che possano migliorare PostgreSQL:
– Localizzazione
– Manuale in italiano (http://docs.itpug.org/)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
40. Licenza Creative Commons
Attribuzione
Non commerciale
Condividi allo stesso modo
2.5 Italia
http://creativecommons.org/licenses/by-nc-sa/2.5/it/
Copyright 2011 2ndQuadrant Italia (http://www.2ndQuadrant.it/)
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
Notas del editor
Every application that needs to persistently store some data uses a database