Rilascio del RDBMS PostgreSQL 14

Dopo un anno di sviluppo, è stata pubblicata una nuova versione stabile del RDBMS PostgreSQL 14. Gli aggiornamenti per il nuovo ramo verranno rilasciati per cinque anni fino a novembre 2026.

Novità principali:

  • È stata aggiunta la supporto per l'accesso ai dati JSON tramite espressioni simili a quelle usate con gli array: SELECT (‘{ «postgres»: { «release»: 14 }}’::jsonb)[‘postgres’][‘release’]; SELECT * FROM test WHERE details[‘attributes’][‘size’] = ‘»medium»‘;

    Una sintassi analoga è stata implementata anche per i dati nel formato chiave/valore forniti dal tipo hstore. Una sintassi simile è stata inizialmente implementata utilizzando un framework universale che in futuro potrebbe essere utilizzato anche per altri tipi. Esempio per il tipo hstore: INSERT INTO mytable VALUES (‘a=>b, c=>d’); SELECT h[‘a’] FROM mytable; UPDATE mytable SET h[‘c’] = ‘new’;

  • La famiglia di tipi per la definizione di intervalli è stata ampliata con nuovi tipi di «multirange», che consentono di definire elenchi ordinati di intervalli non sovrapposti. In aggiunta a ogni tipo di range esistente, è stato proposto un corrispondente tipo multirange, ad esempio «int4range» corrisponde a «int4multirange», mentre «daterange» diventa «datemultirange». L'uso dei nuovi tipi semplifica la formulazione di query che manipolano sequenze complesse di intervalli. SELECT ‘{[3,7), [8,9)}’::int4multirange; SELECT nummultirange(numrange(1.0, 14.0), numrange(20.0, 25.0));
  • Sono state apportate ottimizzazioni per migliorare le prestazioni dei sistemi ad alta carico che gestiscono un gran numero di connessioni. In alcuni test si osserva un raddoppio delle prestazioni.
  • È stata aumentata l'efficienza del lavoro degli indici B-tree e risolta la problematica dell'espansione eccessiva degli indici a causa di aggiornamenti frequenti delle tabelle.
  • È stata aggiunta la supporto per la modalità di invio delle richieste nella pipeline sul lato client (implementato a livello di libpq), che consente di accelerare notevolmente gli scenari di utilizzo del database legati all'esecuzione di un gran numero di piccole operazioni di scrittura (INSERT/UPDATE/DELETE) inviando la richiesta successiva senza attendere il risultato della precedente. Questa modalità aiuta anche a migliorare le prestazioni in caso di connessioni con elevate latenze di consegna dei pacchetti.
  • Ampliate le funzionalità per le configurazioni distribuite che includono più server PostgreSQL. Nella realizzazione della replica logica, è stata aggiunta la possibilità di inviare in streaming le transazioni in fase di esecuzione, consentendo di migliorare significativamente le prestazioni della replica delle grandi transazioni. Inoltre, è stata ottimizzata la decodifica logica dei dati in arrivo durante il processo di replica logica.
  • Nel meccanismo di connessione delle tabelle esterne Foreign Data Wrapper (postgres_fdw) è stata aggiunta la supporto per l'elaborazione parallela delle query, attualmente applicabile solo quando si è connessi ad altri server PostgreSQL. Inoltre, in postgres_fdw è stata introdotta la possibilità di aggiungere dati alle tabelle esterne in modalità batch e la capacità di importare tabelle partizionate specificando la direttiva "IMPORT FOREIGN SCHEMA".
  • Sono state apportate ottimizzazioni all'implementazione dell'operazione VACUUM (raccolta dei rifiuti e imballaggio dello storage). È stata aggiunta la modalità di pulizia di emergenza, che salta le operazioni di pulizia non necessarie se si creano le condizioni per il wrapping degli identificatori delle transazioni. Sono stati ridotti i costi di elaborazione degli indici in formato B-Tree. È stato notevolmente accelerato l'esecuzione dell'operazione "ANALYZE", che raccoglie statistiche sulle performance del database.
  • È stata introdotta la possibilità di configurare il metodo di compressione utilizzato nel sistema TOAST, responsabile della gestione dei grandi dati, come blocchi di testo o informazioni geometriche. Oltre al metodo di compressione pglz, ora in TOAST si può utilizzare anche l'algoritmo LZ4.
  • Sono stati ampliati gli strumenti per il monitoraggio delle prestazioni del DBMS. Sono state aggiunte viste per monitorare il progresso delle operazioni 'COPY' (pg_stat_progress_copy), statistiche sui slot di replica (pg_stat_replication_slots) e attività relativa ai log WAL delle transazioni (pg_stat_wal). È stata aggiunta la funzione compute_query_id, che include in varie sottosistemi, come pg_stat_activity e EXPLAIN VERBOSE, il monitoraggio delle query assegnando un identificatore unico per ciascuna richiesta.
  • Sono state aggiunte ottimizzazioni al pianificatore delle query, migliorando l'elaborazione parallela delle richieste e aumentando le prestazioni dell'esecuzione simultanea di operazioni di scansione sequenziale, avvio parallelo di query in PL/pgSQL tramite il comando 'RETURN QUERY' e esecuzione parallela di query in 'REFRESH MATERIALIZED VIEW'. Per migliorare le prestazioni delle fusioni annidate cicliche, è stata implementata la supporto per la caching aggiuntivo.
  • Per l'ottimizzazione delle espressioni, ora può essere utilizzata la statistica avanzata, e per l'ottimizzazione delle funzioni finestra è stata implementata la ordinamento incrementale.
  • Nelle stored procedure, che consentono di gestire le transazioni in blocchi di codice, è stata implementata la possibilità di definire i dati restituiti tramite parametri "OUT".
  • È stata aggiunta la funzione date_bin per arrotondare i valori di tipo timestamp in base all'intervallo specificato. SELECT date_bin('15 minutes', TIMESTAMP '2020-02-11 15:44:17', TIMESTAMP '2001-01-01'); 2020-02-11 15:30:00
  • Sono state aggiunte le espressioni SEARCH e CYCLE definite nel standard SQL, che semplificano l'ordinamento e l'individuazione di cicli nelle espressioni di tabella comuni ricorsive (Common Table Expression, CTE). WITH RECURSIVE search_tree(id, link, data) AS ( SELECT t.id, t.link, t.data FROM tree t UNION ALL SELECT t.id, t.link, t.data FROM tree t, search_tree st WHERE t.id = st.link ) SEARCH DEPTH FIRST BY id SET ordercol SELECT * FROM search_tree ORDER BY ordercol;
  • Nell'utilità psql è stata migliorata l'autocompletamento dei comandi con il tasto Tab, nel comando "\df" è stata aggiunta la possibilità di visualizzare gli argomenti delle funzioni, e nel comando "\dX" è stata ampliata la statistica visualizzata.
  • È possibile assegnare agli utenti privilegi di sola lettura o di sola scrittura. I privilegi possono essere impostati in relazione a singole tabelle, viste e schemi utilizzando i ruoli predefiniti pg_read_all_data e pg_write_all_data. GRANT pg_read_all_data TO user1;
  • Nelle nuove installazioni è garantito l'utilizzo dell'autenticazione tramite password con il metodo SCRAM-SHA-256 invece di md5 (il parametro "password_encryption" nella generazione di postgresql.conf è ora impostato su 'scram-sha-256').

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster