Ottimizzazione dell'archiviazione JSON in Postgres con le Supertoast Tables
Scopri come Hatchet ha ottimizzato l'archiviazione dei dati JSON in Postgres con le 'supertoast tables', migliorando efficienza e performance.
Nel mondo delle applicazioni web moderne, la gestione efficiente dei dati è fondamentale per garantire performance elevate e costi contenuti. Hatchet, una piattaforma focalizzata sull'esecuzione di flussi di lavoro e task, ha affrontato una sfida significativa nell'archiviazione di grandi quantità di dati JSON in Postgres. Per risolvere questo problema, hanno sviluppato una soluzione innovativa: le "supertoast tables".
Il problema con le tabelle TOAST in Postgres
Postgres utilizza la tecnica TOAST (The Oversized-Attribute Storage Technique) per gestire valori di riga superiori a 2 KB, suddividendo questi dati in più frammenti all'interno di tabelle dedicate. Sebbene efficace, questo approccio presenta alcune criticità:
- Consumo elevato di spazio: anche piccoli payload possono occupare oltre il 50% dello spazio del database, con i payload più grandi che superano il 90%.
- Accesso inefficiente ai dati: i payload più vecchi sono raramente accessati, ma occupano comunque spazio prezioso.
- Impatto sulle operazioni di autovacuum: la gestione di grandi quantità di dati TOAST può rallentare significativamente le operazioni di manutenzione del database, aumentando il carico IOPS e influenzando le performance complessive.
La soluzione: le supertoast tables
Per affrontare queste sfide, Hatchet ha introdotto le "supertoast tables", una soluzione che combina l'efficienza di Postgres con la flessibilità dello storage esterno. Le caratteristiche principali di questa soluzione includono:
- Partizionamento basato sul tempo: i dati vengono suddivisi in partizioni giornaliere, facilitando la gestione e l'archiviazione dei dati nel tempo.
- Offload dei dati meno recenti: i payload più vecchi di 24 ore vengono trasferiti su S3, lasciando nel database solo un riferimento al file esterno. Questo approccio riduce il consumo di spazio e migliora le performance del database.
- Gestione efficiente delle operazioni di scrittura: l'implementazione di un sistema di write-and-swap consente di scrivere i dati in una nuova partizione, riducendo il carico sulle operazioni di aggiornamento e migliorando l'efficienza complessiva.
Implicazioni per il settore SaaS
La soluzione adottata da Hatchet offre spunti interessanti per altre aziende SaaS che affrontano sfide simili nella gestione dei dati:
- Ottimizzazione dei costi: l'archiviazione dei dati meno accessati su storage esterno può ridurre significativamente i costi associati allo storage e alla gestione dei dati.
- Miglioramento delle performance: riducendo il carico sul database principale, è possibile ottenere tempi di risposta più rapidi e una maggiore affidabilità del sistema.
- Scalabilità: l'approccio di offload dei dati consente di gestire efficacemente l'aumento dei volumi di dati, mantenendo alte le performance anche con carichi di lavoro crescenti.
Conclusione
La gestione efficiente dei dati è una sfida cruciale per le applicazioni web moderne. L'innovativa soluzione delle supertoast tables proposta da Hatchet rappresenta un esempio di come l'integrazione tra database relazionali e storage esterno possa portare a significativi miglioramenti in termini di efficienza, costi e performance. Le aziende SaaS possono trarre ispirazione da questo approccio per ottimizzare la gestione dei propri dati e offrire servizi più performanti ai propri clienti.