SlideShare una empresa de Scribd logo
1 de 40
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
Parte I




          Il progetto PostgreSQL



                 Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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
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
Applicazioni, database, DBMS


Applicazioni software                    Applicazioni software


                            SQL
                            DBMS




                        Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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
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
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
0
                                                                                   20
                                                                                        40
                                                                                             60
                                                                                                  80
                                                                                                       100
                                                                                                             120
                                                                     2002-06
                                                                     2002-08
                                                                     2002-10
                                                                     2002-12
                                                                     2003-02
                                                                     2003-04
                                                                     2003-06
                                                                     2003-08
                                                                     2003-10
                                                                     2003-12
                                                                     2004-02
                                                                     2004-04
                                                                     2004-06
                                                                     2004-08
                                                                     2004-10
                                                                     2004-12
                                                                     2005-02
                                                                     2005-04
                                                                     2005-06
                                                                     2005-08
                                                                     2005-10
                                                                     2005-12
                                                                     2006-02
                                                                                                                   Mailing list 'Hackers'




                                                                     2006-04
                                                                     2006-06
                                                                     2006-08
                                                                     2006-10
                                                                     2006-12
                                                                     2007-02
                                                                     2007-04
                                                                     2007-06
                                                                     2007-08
                                                                     2007-10
                                                                     2007-12
                                                                     2008-02
                                                                     2008-04
                                                                     2008-06
                                                                     2008-08
                                                                     2008-10
                                                                     2008-12
                                                                     2009-02
                                                                     2009-04
                                                                     2009-06
                                                                     2009-08
                                                                     2009-10
                                                                     2009-12
                                                                     2010-02
                                                                     2010-04
                                                                     2010-06
                                                                     2010-08
                                                                     2010-10
Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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
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
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
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
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
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
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
Parte II




           PostgreSQL 9



             Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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
PostgreSQL su C64?




                Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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
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
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
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
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
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
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
Hot Standby



Host A                                        Host B

     Database primario        Log shipping            Database standby

                                                 Continuous recovery


                         Applicazioni software




                             Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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
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
Scalabilità: MySQL vs PostgreSQL




                 Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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
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
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
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
Parte III




            Conclusioni



             Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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
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
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
Domande?




Gabriele Bartolini - gabriele.bartolini@2ndQuadrant.it - ITPUG.org
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

Más contenido relacionado

Más de Codemotion

Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Codemotion
 
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019Codemotion
 
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019Codemotion
 

Más de Codemotion (20)

Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
Mike Kotsur - What can philosophy teach us about programming - Codemotion Ams...
 
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
Mete Atamel - Serverless with Knative - Codemotion Amsterdam 2019
 
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
Rahul Shetty - Corporate relocation prediction - Codemotion Amsterdam 2019
 

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
  • 5. Applicazioni, database, DBMS Applicazioni software Applicazioni software SQL DBMS 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
  • 9. 0 20 40 60 80 100 120 2002-06 2002-08 2002-10 2002-12 2003-02 2003-04 2003-06 2003-08 2003-10 2003-12 2004-02 2004-04 2004-06 2004-08 2004-10 2004-12 2005-02 2005-04 2005-06 2005-08 2005-10 2005-12 2006-02 Mailing list 'Hackers' 2006-04 2006-06 2006-08 2006-10 2006-12 2007-02 2007-04 2007-06 2007-08 2007-10 2007-12 2008-02 2008-04 2008-06 2008-08 2008-10 2008-12 2009-02 2009-04 2009-06 2009-08 2009-10 2009-12 2010-02 2010-04 2010-06 2010-08 2010-10 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
  • 39. Domande? 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

  1. Every application that needs to persistently store some data uses a database