Il rilascio definitivo di PostgreSQL 10, prossima major release di uno dei più conosciuti RDBMS Open Source, è attesa per il terzo quarto del 2017. Sono però già disponibili informazioni sufficienti per anticipare le nuove feature che caratterizzeranno questa versione destinata a rendere l'engine ancora più completo e aggiornato. Approfittiamo quindi dell'occasione per riassumere quelle che saranno le sue novità più interessanti.
Replicazione logica
A partire dalla versione 9.0 PostgreSQL supporta la replicazione fisica, altrimenti detta streaming replication, una funzionalità che presuppone la replicazione del database nel suo complesso, non consente operazioni di scrittura in fase di stand-by e si dimostra poco utile per replicazioni tra versioni o database system differenti. Per questo motivo, con PostgreSQL 9.4 è stato introdotto il logical decoding, ma quest'ultimo necessita del ricorso ad add-on.
Con la replicazione logica, PostgreSQL 10 supera nativamente i limiti della replicazione fisica, ad esempio, un INSERT coinvolgerà soltanto il record interessato e non tutti gli altri. Inoltre i record logici saranno compatibili con le varie major release eliminando eventuali problemi in caso di upgrade.
Autenticazione SCRAM
PostgreSQL mette a disposizione differenti metodi di autenticazione tra cui quelle basate su SSL, SSPI e Kerberos. Si tratta di sistemi avanzati che però possono risultare sovradimensionati per chi necessita di password gestibili direttamente a livello di Database engine, per questo motivo è stato implementato il supporto per l'autenticazione SCRAM, più sicuro del precedente approccio incentrato su MD5 per gli hash, perché basato su SCRAM-SHA-256.
Si tratta di una feature utilizzabile soltanto con libpq a meno di non disporre di un client driver aggiornato per il supporto al Salted Challenge Response Authentication Mechanism.
Indici HASH durevoli
Si tratta di uno degli aspetti maggiormente trascurati nello sviluppo del DBMS, con la release 10 si avranno però delle novità importanti come per esempio la disponibilità di indici HASH crash-safe che potranno essere replicati in sicurezza. Si dovrebbero poi notare dei vantaggi rilevanti in termini di prestazioni (soprattutto in fase di estrazione dei dati), impatto del workload, concorrenza e gestione della cache per le metapage.
Partizionamento dichiarativo
Fino ad ora l'utilizzo della table inheritance, che simula l'ereditarietà object-oriented nei database relazionali, è stato considerato una soluzione sufficiente per simulare il partizionamento delle tabelle, questo però non senza un certo sacrificio in termini di performance e con la necessità di setup spesso complessi. La prossima milestone permetterà di creare liste o intervalli per il partizionamento grazie ad un'apposita sintassi, senza considerare le migliori prestazioni durante le procedure di INSERT.
Collation ICU
Non di rado il comportamento delle collation cambia tra un sistema e un altro, per cui l'approccio che vede attualmente il DBMS fare riferimento alla piattaforma su cui opera potrebbe rappresentare un limite in termini di portabilità, soprattutto se si deve lavorare sia su Windows che su Linux.
Fedele alle specifiche per l'Unicode Collation Algorithm, Collation ICU dovrebbe fornire a PostgreSQL 10 un sistema efficace per il confronto tra le stringhe e per il loro ordinamento per tutti gli ecosistemi locali utilizzati, con un elevato grado di personalizzazione.
Prestazioni
Il Parallel Bitmap Heap Scan e il Parallel Index Scan migliorano Parallel Query (presente a partire dalla release 9.6) con velocità superiori fino a 2 o 4 volte rispetto alla configurazione attuale. Velocizzati anche gli Executor grazie ad un riscrittura della Hash aggregation ora supportata anche da GROUPING SETS.
Via Robert Haas