SlideShare a Scribd company logo
1 of 20
Download to read offline
PostgreSQL Sharding with Citus
Enrico Pirozzi
www.pgtraining.com
info@pgtraining.com
12 marzo 2021
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 1 / 20
Attribution-NonCommercial-ShareAlike 4.0
This work is licensed under the Creative Commons
Attribution-NonCommercial-ShareAlike 4.0 International License. To view
a copy of this license, visit
http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to
Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 2 / 20
Libri
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 3 / 20
git clone https://gitlab.com/pgtraining1/webinar.git
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 4 / 20
Il database...nel mondo ideale
Nel mondo ideale....
Con base di dati (o banca dati, a volte abbreviato con la sigla DB
dall’inglese database) in informatica si indica un insieme di dati strutturati
ovvero omogeneo per contenuti e formato, memorizzati in un computer,
rappresentando di fatto la versione digitale di un archivio dati o schedario.
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 5 / 20
...e nella realtà...
...e nella realtà...
Spesso i database vengono visti dagli sviluppatori come dei contenitori
senza anima che siano sempre in grado di memorizzare qualsiasi volume di
dati.
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 6 / 20
La costante dei database
La costante dei database
Durante il loro ciclo di vita i database tendono a crescere sempre nel
tempo.
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 7 / 20
...e i dati crescono fin quando...
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 8 / 20
La soluzione classica
La soluzione classica
La soluzione classica consiste nel partizionare dati attraverso il il table
partitioning.
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 9 / 20
La soluzione classica: Table Partitioning
La soluzione classica: PostgreSQL supporta il table partitioning:
PostgreSQL minore 10.x: Attravarso l’utilizzo di dell’ereditarietà +
rules o triggers
PostgreSQL maggiore 10.x : Declarative Partitioning
Table Partitioning
L’utilizzo del table partitioning può risolvere il problema delle tabelle molto
grandi in molti casi, riduce grandezza indici, migliore gestione dei processi
di autovacuum, tabelle più piccole meglio gestibili, etc...
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 10 / 20
..e se non bastasse ???
..e se non bastasse ???
E se la soluzione non bastasse a risolvere il nostro problema di
perfomance????
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 11 / 20
Sharding
Sharding
La soluzione potrebbe essere quella di ”shardare” il nostro database o
parte di esso in modo che possa scalare in orizzontale su più nodi.
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 12 / 20
Sharding la soluzione usata
Sharding la soluzione usata
La soluzione utilizzata in questa presentazione è quella proposta da
citusdata - www.citusdata.com
opensource
Scale out Postgres by distributing your data and queries across a
cluster
Parallelized Performance : Speed up queries by 20x to 300x (or more)
Citus è un extension di postgresql non un fork, per cui è facilmente
installabile - https://www.citusdata.com/download
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 13 / 20
...mettiamoci all’opera !!!...
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 14 / 20
A case study - www.bookingexpert.com
A case study - www.bookingexpert.com
La soluzione attraverso lo sharding ha permesso di velocizzare alcune
query che il partitioning nativo non era in grado più di supportare.
La soluzione ottimizzata è stata applicate ad un sottoinsieme di
tabelle
Alcune tabelle sono state ottimizzate eseguendo la combinazione di
shardig + partitioning
le query sono state revisionate e riscritte in modo da poter esser
compatibili con il mix di tabelle shardate e tabelle non shardate.
Riportiamo ora alcuni dati
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 15 / 20
A case study - www.bookingexpert.com
La prima query è eseguita su
una tabella partizionata per
mese
la seconda query è eseguita sulla
stessa tabella partizionata per
mese e shardata su 8 nodi.
I dati sono leggermenti differenti in quanto nell’intervallo di tempo tra
l’esecuzione della prima query e della seconda il sistema ha inserito
nuovi dati provenienti dagli applicativi.
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 16 / 20
A case study - un esempio di eventi schedulati
Gli ambienti shardati tendono a
chiedere molto in termini di I/O
evidenziando spesso eventuali
problemi infrastruttrali di I/O
wait.
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 17 / 20
..About me
Enrico Pirozzi
Postgresql DBA @bookingexpert.com
enrico.pirozzi@bookinkexpert.com
www.enricopirozzi.info
info@enricopirozzi.info
www.pgtraining.com
info@pgtraining.com
www.linkedin.com/in/
enrico-pirozzi-7b26614/
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 18 / 20
Resume
1 First of all !!!
2 Il database
Il database...nel mondo ideale
...e nella realtà...
La costante dei database
...e i dati crescono fin quando...
3 La soluzioni classiche
La soluzione classica: Table Partitioning
...e se non bastasse???
4 Sharding
Sharding la soluzione usata
...mettiamoci all’opera !!!...
5 A case study - www.bookingexpert.com
A case study - www.bookingexpert.com
A case study - un esempio di eventi schedulati
6 ...About me
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 19 / 20
Thank you
Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 20 / 20

More Related Content

Similar to Webminar del 12.03.2012

Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...DavideFegez
 
Elasticsearch a quick introduction
Elasticsearch a quick introductionElasticsearch a quick introduction
Elasticsearch a quick introductionFederico Panini
 
(LINKED) OPEN DATA A FIRENZE
(LINKED) OPEN DATA A FIRENZE(LINKED) OPEN DATA A FIRENZE
(LINKED) OPEN DATA A FIRENZEDatiGovIT
 
Presentazione Nuvola Vertica Light
Presentazione Nuvola Vertica LightPresentazione Nuvola Vertica Light
Presentazione Nuvola Vertica LightAlberto.F
 
Apache Hadoop: Introduzione all’architettura ed approcci applicativi
Apache Hadoop: Introduzione all’architettura ed approcci applicativiApache Hadoop: Introduzione all’architettura ed approcci applicativi
Apache Hadoop: Introduzione all’architettura ed approcci applicativiDario Catalano
 
PostgreSQL : Architettura di storage
PostgreSQL : Architettura di storagePostgreSQL : Architettura di storage
PostgreSQL : Architettura di storageEnrico Pirozzi
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
 
Hadoop - Introduzione all’architettura ed approcci applicativi
Hadoop - Introduzione all’architettura ed approcci applicativiHadoop - Introduzione all’architettura ed approcci applicativi
Hadoop - Introduzione all’architettura ed approcci applicativilostrettodigitale
 
Introduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastoreIntroduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastorefirenze-gtug
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009Massimiliano Dessì
 
System Administration: Migliorare le performance di Magento CE
System Administration: Migliorare le performance di Magento CESystem Administration: Migliorare le performance di Magento CE
System Administration: Migliorare le performance di Magento CEMageSpecialist
 
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQLMigrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQLFabio Ferroni
 
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQLMigrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQLFabio Ferroni
 
Open Pronto Soccorsi
Open Pronto SoccorsiOpen Pronto Soccorsi
Open Pronto Soccorsicesaregerbino
 
Big Data Conference Ottobre 2013
Big Data Conference Ottobre 2013Big Data Conference Ottobre 2013
Big Data Conference Ottobre 2013Carlo Vaccari
 
Corso PHP ENAIP - lezione #05 - 04/02/2014
Corso PHP ENAIP - lezione #05 - 04/02/2014Corso PHP ENAIP - lezione #05 - 04/02/2014
Corso PHP ENAIP - lezione #05 - 04/02/2014Matteo Moro
 
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016Miriade Spa
 

Similar to Webminar del 12.03.2012 (20)

Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
Utilizzo di tecnologie big data per addestramento di metamodelli matematici p...
 
Elasticsearch a quick introduction
Elasticsearch a quick introductionElasticsearch a quick introduction
Elasticsearch a quick introduction
 
Tesi andrea cingolani
Tesi andrea cingolaniTesi andrea cingolani
Tesi andrea cingolani
 
(LINKED) OPEN DATA A FIRENZE
(LINKED) OPEN DATA A FIRENZE(LINKED) OPEN DATA A FIRENZE
(LINKED) OPEN DATA A FIRENZE
 
Presentazione Nuvola Vertica Light
Presentazione Nuvola Vertica LightPresentazione Nuvola Vertica Light
Presentazione Nuvola Vertica Light
 
Apache Hadoop: Introduzione all’architettura ed approcci applicativi
Apache Hadoop: Introduzione all’architettura ed approcci applicativiApache Hadoop: Introduzione all’architettura ed approcci applicativi
Apache Hadoop: Introduzione all’architettura ed approcci applicativi
 
PostgreSQL : Architettura di storage
PostgreSQL : Architettura di storagePostgreSQL : Architettura di storage
PostgreSQL : Architettura di storage
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain model
 
Hadoop - Introduzione all’architettura ed approcci applicativi
Hadoop - Introduzione all’architettura ed approcci applicativiHadoop - Introduzione all’architettura ed approcci applicativi
Hadoop - Introduzione all’architettura ed approcci applicativi
 
Introduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastoreIntroduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastore
 
MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009MongoDB SpringFramework Meeting september 2009
MongoDB SpringFramework Meeting september 2009
 
System Administration: Migliorare le performance di Magento CE
System Administration: Migliorare le performance di Magento CESystem Administration: Migliorare le performance di Magento CE
System Administration: Migliorare le performance di Magento CE
 
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQLMigrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
 
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQLMigrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
Migrazione di basi di dati dall’ambiente MS-Access all’ambiente MS SQL
 
Progetti per l'esame negli ITIS
Progetti per l'esame negli ITISProgetti per l'esame negli ITIS
Progetti per l'esame negli ITIS
 
Presentazione
PresentazionePresentazione
Presentazione
 
Open Pronto Soccorsi
Open Pronto SoccorsiOpen Pronto Soccorsi
Open Pronto Soccorsi
 
Big Data Conference Ottobre 2013
Big Data Conference Ottobre 2013Big Data Conference Ottobre 2013
Big Data Conference Ottobre 2013
 
Corso PHP ENAIP - lezione #05 - 04/02/2014
Corso PHP ENAIP - lezione #05 - 04/02/2014Corso PHP ENAIP - lezione #05 - 04/02/2014
Corso PHP ENAIP - lezione #05 - 04/02/2014
 
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
PostgreSQL - Hadoop: Why not? - PGDay.IT 2016
 

More from PgTraining

Webminar del 12.03.2012
Webminar del 12.03.2012Webminar del 12.03.2012
Webminar del 12.03.2012PgTraining
 
Weminar 12.03.2021 . JIT
Weminar 12.03.2021 . JITWeminar 12.03.2021 . JIT
Weminar 12.03.2021 . JITPgTraining
 
Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)PgTraining
 
Oracle to Postgres Migration - part 2
Oracle to Postgres Migration - part 2Oracle to Postgres Migration - part 2
Oracle to Postgres Migration - part 2PgTraining
 
Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1PgTraining
 
Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb PgTraining
 
Pgtraining bdr
Pgtraining bdrPgtraining bdr
Pgtraining bdrPgTraining
 

More from PgTraining (9)

Webminar del 12.03.2012
Webminar del 12.03.2012Webminar del 12.03.2012
Webminar del 12.03.2012
 
Weminar 12.03.2021 . JIT
Weminar 12.03.2021 . JITWeminar 12.03.2021 . JIT
Weminar 12.03.2021 . JIT
 
Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)Love Your Database (ESC 2k16)
Love Your Database (ESC 2k16)
 
Oracle to Postgres Migration - part 2
Oracle to Postgres Migration - part 2Oracle to Postgres Migration - part 2
Oracle to Postgres Migration - part 2
 
Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1Oracle to Postgres Migration - part 1
Oracle to Postgres Migration - part 1
 
Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb Openday - PostgreSQL: primi passi con Json/Jsonb
Openday - PostgreSQL: primi passi con Json/Jsonb
 
Pgtraining bdr
Pgtraining bdrPgtraining bdr
Pgtraining bdr
 
Messa in rete
Messa in reteMessa in rete
Messa in rete
 
Apcamp
ApcampApcamp
Apcamp
 

Webminar del 12.03.2012

  • 1. PostgreSQL Sharding with Citus Enrico Pirozzi www.pgtraining.com info@pgtraining.com 12 marzo 2021 Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 1 / 20
  • 2. Attribution-NonCommercial-ShareAlike 4.0 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 2 / 20
  • 3. Libri Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 3 / 20
  • 4. git clone https://gitlab.com/pgtraining1/webinar.git Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 4 / 20
  • 5. Il database...nel mondo ideale Nel mondo ideale.... Con base di dati (o banca dati, a volte abbreviato con la sigla DB dall’inglese database) in informatica si indica un insieme di dati strutturati ovvero omogeneo per contenuti e formato, memorizzati in un computer, rappresentando di fatto la versione digitale di un archivio dati o schedario. Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 5 / 20
  • 6. ...e nella realtà... ...e nella realtà... Spesso i database vengono visti dagli sviluppatori come dei contenitori senza anima che siano sempre in grado di memorizzare qualsiasi volume di dati. Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 6 / 20
  • 7. La costante dei database La costante dei database Durante il loro ciclo di vita i database tendono a crescere sempre nel tempo. Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 7 / 20
  • 8. ...e i dati crescono fin quando... Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 8 / 20
  • 9. La soluzione classica La soluzione classica La soluzione classica consiste nel partizionare dati attraverso il il table partitioning. Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 9 / 20
  • 10. La soluzione classica: Table Partitioning La soluzione classica: PostgreSQL supporta il table partitioning: PostgreSQL minore 10.x: Attravarso l’utilizzo di dell’ereditarietà + rules o triggers PostgreSQL maggiore 10.x : Declarative Partitioning Table Partitioning L’utilizzo del table partitioning può risolvere il problema delle tabelle molto grandi in molti casi, riduce grandezza indici, migliore gestione dei processi di autovacuum, tabelle più piccole meglio gestibili, etc... Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 10 / 20
  • 11. ..e se non bastasse ??? ..e se non bastasse ??? E se la soluzione non bastasse a risolvere il nostro problema di perfomance???? Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 11 / 20
  • 12. Sharding Sharding La soluzione potrebbe essere quella di ”shardare” il nostro database o parte di esso in modo che possa scalare in orizzontale su più nodi. Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 12 / 20
  • 13. Sharding la soluzione usata Sharding la soluzione usata La soluzione utilizzata in questa presentazione è quella proposta da citusdata - www.citusdata.com opensource Scale out Postgres by distributing your data and queries across a cluster Parallelized Performance : Speed up queries by 20x to 300x (or more) Citus è un extension di postgresql non un fork, per cui è facilmente installabile - https://www.citusdata.com/download Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 13 / 20
  • 14. ...mettiamoci all’opera !!!... Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 14 / 20
  • 15. A case study - www.bookingexpert.com A case study - www.bookingexpert.com La soluzione attraverso lo sharding ha permesso di velocizzare alcune query che il partitioning nativo non era in grado più di supportare. La soluzione ottimizzata è stata applicate ad un sottoinsieme di tabelle Alcune tabelle sono state ottimizzate eseguendo la combinazione di shardig + partitioning le query sono state revisionate e riscritte in modo da poter esser compatibili con il mix di tabelle shardate e tabelle non shardate. Riportiamo ora alcuni dati Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 15 / 20
  • 16. A case study - www.bookingexpert.com La prima query è eseguita su una tabella partizionata per mese la seconda query è eseguita sulla stessa tabella partizionata per mese e shardata su 8 nodi. I dati sono leggermenti differenti in quanto nell’intervallo di tempo tra l’esecuzione della prima query e della seconda il sistema ha inserito nuovi dati provenienti dagli applicativi. Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 16 / 20
  • 17. A case study - un esempio di eventi schedulati Gli ambienti shardati tendono a chiedere molto in termini di I/O evidenziando spesso eventuali problemi infrastruttrali di I/O wait. Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 17 / 20
  • 18. ..About me Enrico Pirozzi Postgresql DBA @bookingexpert.com enrico.pirozzi@bookinkexpert.com www.enricopirozzi.info info@enricopirozzi.info www.pgtraining.com info@pgtraining.com www.linkedin.com/in/ enrico-pirozzi-7b26614/ Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 18 / 20
  • 19. Resume 1 First of all !!! 2 Il database Il database...nel mondo ideale ...e nella realtà... La costante dei database ...e i dati crescono fin quando... 3 La soluzioni classiche La soluzione classica: Table Partitioning ...e se non bastasse??? 4 Sharding Sharding la soluzione usata ...mettiamoci all’opera !!!... 5 A case study - www.bookingexpert.com A case study - www.bookingexpert.com A case study - un esempio di eventi schedulati 6 ...About me Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 19 / 20
  • 20. Thank you Enrico Pirozzi (www.pgtraining.com) PgTraining online session 2021-03 12 marzo 2021 20 / 20