Rilascio del DBMS PostgreSQL 14.

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

Novità principali:

  • È stata aggiunta la supporto per l'accesso ai dati JSON tramite espressioni, simile all'uso degli 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 in formato chiave/valore forniti dal tipo hstore. Questa sintassi è stata inizialmente realizzata usando un framework universale, che in futuro potrà 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 ‘multirange’, che consentono di specificare liste ordinate di intervalli di valori non sovrapposti. In aggiunta a ciascun tipo di range esistente, è stato proposto il proprio tipo multirange, ad esempio, al tipo ‘int4range’ corrisponde ‘int4multirange’, mentre ‘daterange’ diventa ‘datemultirange’. L'uso di nuovi tipi semplifica la formulazione delle 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 intensità di carico, che gestiscono un gran numero di connessioni. In alcuni test si osserva un raddoppio delle prestazioni.
  • È stata aumentata l'efficacia degli indici B-tree e risolto il problema dell'espansione degli indici a causa di aggiornamenti frequenti delle tabelle.
  • È stata aggiunta la supporto per la modalità di invio delle query in pipeline (realizzata a livello di libpq) sul lato client, che consente di accelerare significativamente gli scenari di lavoro con il database, legati all'esecuzione di un gran numero di piccole operazioni di scrittura (INSERT/UPDATE/DELETE) grazie all'invio della query successiva senza dover attendere il risultato della precedente. Questa modalità aiuta anche a velocizzare le operazioni in connessioni con elevate latenze di consegna dei pacchetti.
  • Sono state ampliate le funzionalità per configurazioni distribuite, che includono più server PostgreSQL. Nella realizzazione della replica logica è stata introdotta la possibilità di inviare in streaming le transazioni in corso di esecuzione, il che consente di aumentare notevolmente le prestazioni della replica di grandi transazioni. Inoltre, è stata ottimizzata la decodifica logica dei dati ricevuti 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 richieste, attualmente applicabile solo durante la connessione a altri server PostgreSQL. Inoltre, in postgres_fdw è stata introdotta la possibilità di aggiungere dati a tabelle esterne in modalità batch e di importare tabelle partizionate specificando la direttiva "IMPORT FOREIGN SCHEMA".
  • Sono state apportate ottimizzazioni nell'implementazione dell'operazione VACUUM (raccolta di spazzatura e imballaggio dello spazio di archiviazione). È stata introdotta una modalità di pulizia emergenziale (“emergency mode”), che salta operazioni di pulizia non sostanziali se si creano le condizioni per andare in secondo giro con i numeri degli identificatori delle transazioni (transaction ID wraparound). Sono state ridotte le spese generali nell'elaborazione degli indici in formato B-Tree. È stata notevolmente accelerata l'esecuzione dell'operazione “ANALYZE”, che raccoglie statistiche sul funzionamento del DB.
  • È stata aggiunta la possibilità di configurare il metodo di compressione utilizzato nel sistema TOAST, responsabile della memorizzazione di grandi dati, come blocchi di testo o informazioni geometriche. Oltre al metodo di compressione pglz, ora in TOAST è possibile utilizzare l'algoritmo LZ4.
  • Sono stati ampliati gli strumenti per il monitoraggio del funzionamento del DBMS. Sono state aggiunte viste per monitorare il progresso dell'esecuzione dei comandi “COPY” (pg_stat_progress_copy), statistiche sui slot di replica (pg_stat_replication_slots) e attività relativa al log WAL delle transazioni (pg_stat_wal). È stata introdotta la funzione compute_query_id, che include in varie sottosistemi, come pg_stat_activity ed EXPLAIN VERBOSE, il monitoraggio delle query assegnando un identificatore unico per ciascuna query.
  • Nel pianificatore delle query sono state aggiunte ottimizzazioni che migliorano l'elaborazione parallela delle richieste e consentono di aumentare le prestazioni dell'esecuzione simultanea di operazioni di scansione sequenziale dei record, dell'avvio parallelo delle query in PL/pgSQL tramite il comando «RETURN QUERY» e dell'esecuzione parallela delle query in «REFRESH MATERIALIZED VIEW». Per migliorare le prestazioni delle fusioni nidificate cicliche (join) è stata implementata la supporto di caching aggiuntivo.
  • Per l'ottimizzazione delle espressioni ora può essere utilizzata una statistica avanzata, mentre per l'ottimizzazione delle funzioni finestra è disponibile la ordinamento incrementale.
  • Nelle procedure memorizzate che consentono di gestire le transazioni in blocchi di codice è stata implementata la supporto per la definizione dei dati restituiti tramite i 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 nello standard SQL, che semplificano l'ordinamento e l'individuazione dei 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 è stato migliorato il completamento automatico dei comandi tramite tabulazione, nel comando «\df» è stata aggiunta la possibilità di visualizzare gli argomenti delle funzioni, e nel comando «\dX» è stata ampliata la statistica visualizzata.
  • È stata fornita la possibilità di assegnare privilegi agli utenti che consentono solo la lettura o solo la scrittura. I privilegi possono essere definiti 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, per impostazione predefinita, è stata garantita l'applicazione dell'autenticazione tramite password utilizzando il metodo SCRAM-SHA-256 invece di md5 (il parametro «password_encryption» durante la 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