Postgres 17 è stato rilasciato a settembre 2024. Sei mesi dopo l'aggiornamento dei nostri progetti più grossi, le tre feature che ci sono entrate nella pratica.
1. JSON_TABLE
Finalmente Postgres ha una sintassi standard SQL/JSON per estrarre tabelle da JSON. Per chi gestisce dati semi-strutturati (log, eventi, payload da API esterne), JSON_TABLE è la differenza tra "scrivo 30 righe di SQL" e "scrivo 5".
SELECT * FROM JSON_TABLE(
events_data,
'$[*]'
COLUMNS (
user_id INT PATH '$.user.id',
action TEXT PATH '$.action',
ts TIMESTAMP PATH '$.timestamp'
)
);
2. Vacuum molto più veloce
Postgres 17 cambia internamente il vacuum process: usa un nuovo memory layout per le dead tuples che riduce I/O e CPU. Sui nostri db più grandi (50+ GB) il vacuum notturno è passato da 38 minuti a 14. Su tabelle a alta scrittura, è sensibile.
3. COPY migliorato
Nuove opzioni ON_ERROR e LOG_VERBOSITY permettono di importare dati con righe corrotte senza fermare l'intera operazione. Per chi fa import periodici da CSV (gestionale → Postgres), è prezioso.
Cosa NON abbiamo ancora messo in produzione
- Logical replication con failover: utile su scenari multi-region, ma per noi non urgente.
- Incremental backup (built-in, sostituisce alcune cose di pgBackRest): da testare prima di adottarlo.
Migration
Da 16 a 17 nessuna rottura sui nostri 12 progetti. Per chi è ancora a Postgres 14 o 15 (EOL incombenti): muoversi entro l'anno. La differenza di performance e feature giustifica il lavoro.