PostgreSQL: il database Open Source di fascia Enterprise piu' avanzato al mondo

2,496 views

Published on

La presentazione di Gabriele Bartolini
in occasione del Codemotion, Roma 5 marzo 2011 http://www.codemotion.it

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,496
On SlideShare
0
From Embeds
0
Number of Embeds
84
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Every application that needs to persistently store some data uses a database
  • PostgreSQL: il database Open Source di fascia Enterprise piu' avanzato al mondo

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

    ×