Discussing PostgreSQL: What changes in version 16, how we got here, and what to expect in future releases (original) (raw)

Earlier this year, I was in Canada for PGConf 2023, where I talked about the evolution of PostgreSQL from a Berkeley research project to its current status as the most advanced open-source database, and discussed the various changes introduced for PostgreSQL 16, particularly regarding logical replication.

Now that the PostgreSQL community has released version 16, I thought it would be the perfect opportunity to talk to a wider audience, especially if you did not have the chance to join us in Canada.

In my talk, I focused on the exciting new features introduced in version 16, but I also touched on the past of PostgreSQL - the timeline of its major features in previous versions -, and its future - what the community has been discussing, possibly for implementation in PostgreSQL 17.

Contents

> Evolution of PostgreSQL

> PostgreSQL 16 enhancements and new features

> Improvements to logical replication

> Enhancements to storage

> New SQL features

> Additions to security/privileges

> Miscellaenous performance improvements

> Compatiblity

> Full list

> What's next: PostgreSQL 17 and beyond

The evolution of PostgreSQL - versions and major milestones

To better appreciate the long journey that PostgreSQL has taken since its early days, I think it's important to revisit its progress, and the impressive list of features it accumulated along the way, thanks to the work of our committed and dedicated community.

Evolution of PostgreSQL with its major milestones across versions

We have started this project in 1997 from the University of California, at Berkeley Project, which had been running since 1986, and from then on, a new version with major features has been released every year.

It is interesting to note how, from inception, PostgreSQL has been geared towards handling large volumes of data, and has been evolving since then in that direction.

With version 15, we introduced the MERGE command, which was being discussed for a couple of years in the community, and we finally had the chance to implement it. We also introduced shared memory statistics, which improved over the previous statistics mechanism, and improved logical replication further, by introducing row and column filters. Finally, we added server-side compression for faster and smaller backups.

PostgreSQL 16 enhancements and new features

Version 16 introduces a lot of new features, with several improvements to the logical replication mechanism. One of the most important ones in my view is the ability to perform logical replication from the standby node, which I will discuss below.

Improvements to logical replication

Enhancements to storage

New SQL features

The new version comes with a host of new features that give users more options, among others, for collation and JSON data manipulation.

Finalize Aggregate
-> Gather
Workers Planned: 2
-> Partial Aggregate
-> Parallel Hash Full Join
Hash Cond: (r.id = s.id)
-> Parallel Seq Scan on simple r
-> Parallel Hash
-> Parallel Seq Scan on simple s

Finalize HashAggregate
Group Key: y
-> Gather
Workers Planned: 2
-> Partial HashAggregate
Group Key: y
-> Parallel Seq Scan on pagg_test

Aggregate
-> Index Scan using presort_test_c1_idx on presort_test
SET enable_presorted_aggregate=off;
EXPLAIN (COSTS OFF)
SELECT SUM(c1 ORDER BY c1), MAX(c2 ORDER By c2) FROM presort_test;
QUERY PLAN
--------------------------------
Aggregate
-> Seq Scan on presort_test

Seq Scan on a

Additions to security/privileges

Miscellaneous performance improvements

Compatibility

Full list

The full list of new/enhanced features and other changes can be found here.

What 's next: PostgreSQL 17 and beyond

Before wrapping up, I would like to share some of the changes that the PostgreSQL community is currently discussing for future PostgreSQL versions, like PostgreSQL 17 and later. Please keep in mind that this list isn't set in stone, and there's no guarantee that all these features will make it to the final cut - it's based on my own observations from the discussions happening within the PostgreSQL community.

Topics:PostgreSQL,PostgreSQL community,PostgreSQL development,PostgreSQL event