MANUFACTURING
Torna ai Case Study
10min

Implementazione di un'architettura Database Time Series efficiente e scalabile

200.000
righe al secondo
Sono 200.000 le righe ingerite al secondo utilizzando risorse CPU minime (3-4 vCPU)
10:1
rapporto di compressione
Ratio di compressione ottenuto: 6 Terabyte occupati equivalgono a circa 60 Terabyte di dati reali.
3-4 vCPU
risorse CPU
Time Series, architettura basata su Postgres TimescaleDB ottimizzata per partizionamento e autogestione.
Contesto

Il cliente aveva espresso la necessità di dotarsi di un database di tipo Time Series. Le specifiche richiedevano un sistema capace di gestire il partizionamento, di autogestire le partizioni Time Series e, soprattutto, di comprimere i dati per ridurne la quantità complessiva.

Problemi

La sfida principale era quella di individuare una soluzione che bilanciasse prestazioni e costi. Esistevano servizi cloud gestiti, come la versione cloud di TimescaleDB, ritenuto troppo costo, e altri non dotati della estensione timescaledb, come AWS RDS PostgreSQL.

L’estrema efficienza nella gestione dello spazio e delle risorse è l’aspetto cruciale di questo Case Study. Dopo l’intervento di Miriade il database oggi ospita circa 6 Terabyte di dati compressi che, grazie a un ratio di compressione di circa 10:1, corrispondono a una mole di dati effettiva di 60 Terabyte. Nonostante questo volume, il sistema è estremamente performante in scrittura, riuscendo a inserire 200.000 righe al secondo impegnando solamente 3-4 vCPU.

Soluzione

Per ottimizzare i costi mantenendo alte prestazioni, si è optato quindi per l'utilizzo di macchine EC2 (suddivise in ambienti di test, quality e produzione) su cui è stato installato Postgres TimescaleDB.

L'intervento ha coperto l'intera catena di ingegnerizzazione:

  • Deploy e tuning: è stato eseguito il setup della replica e il tuning di TimescaleDB, recentemente aggiornato dalla versione 15 alla 17 di Postgres.
  • Ingestione e lettura: il flusso di dati in ingresso è gestito ad alta velocità, mentre per la lettura ed esportazione dei dati verso lo storage a lungo termine vengono utilizzate funzioni serverless.
  • Backup: è stata implementata una strategia ibrida basata su snapshot consistenti e pgBackRest. Per ridurre ulteriormente i costi futuri, si sta valutando di rimuovere pgBackRest affidandosi alle sole snapshot e allo standby, oltre a una possibile riduzione del sizing della replica se i volumi di lettura si confermano contenuti.
Tecnologie
  • Postgres TimescaleDB - Database Time Series scelto per la sua capacità di autogestire il partizionamento e comprimere i dati, riducendo significativamente lo spazio occupato.
  • AWS EC2 - Infrastruttura di server virtuali utilizzata per ospitare il database, preferita alle soluzioni gestite per il minor costo.
  • Apache Flink - Motore di elaborazione dati utilizzato per alimentare il database, capace di gestire l'inserimento di 200.000 righe al secondo.
  • AWS Lambda - Servizio di calcolo serverless utilizzato per eseguire le query di lettura e popolare i bucket di archiviazione.
  • AWS S3 e Athena - Soluzione di storage e analisi utilizzata per ricevere e interrogare i dati estratti dal database principale.
  • pgBackRest - Strumento utilizzato per la gestione dei backup, affiancato alla strategia di snapshot consistenti.