Ingres was sold. Got acquired. Became proprietary.
So he made POSTGRES - to never let that happen again.
30+ years later, it's still free. Still community-owned. Still thriving. 🐘
Ingres was sold. Got acquired. Became proprietary.
So he made POSTGRES - to never let that happen again.
30+ years later, it's still free. Still community-owned. Still thriving. 🐘
In 2017 they switched to X.Y (like 10.0, 11.0...).
Why? Because people kept thinking 9.5 and 9.6 were minor updates. They weren't - they were massive releases. 🐘
In 2017 they switched to X.Y (like 10.0, 11.0...).
Why? Because people kept thinking 9.5 and 9.6 were minor updates. They weren't - they were massive releases. 🐘
3 engineers. 30 million users. PostgreSQL.
They didn't need to 'scale to NoSQL'. Postgres handled it. 🐘📸
3 engineers. 30 million users. PostgreSQL.
They didn't need to 'scale to NoSQL'. Postgres handled it. 🐘📸
They've done this since 2017. Every fall, a new major version drops.
No drama. No delays. Just consistent, boring reliability.
That's the elephant way. 🐘
They've done this since 2017. Every fall, a new major version drops.
No drama. No delays. Just consistent, boring reliability.
That's the elephant way. 🐘
It's been bundled with macOS since 10.7 Lion (2011).
Next time someone says 'I've never used Postgres' - if they have a Mac, they technically have. 🐘🍎
It's been bundled with macOS since 10.7 Lion (2011).
Next time someone says 'I've never used Postgres' - if they have a Mac, they technically have. 🐘🍎
This lets readers never block writers and writers never block readers.
Oracle later 'invented' the same thing. PostgreSQL had it in 1999. 🐘
This lets readers never block writers and writers never block readers.
Oracle later 'invented' the same thing. PostgreSQL had it in 1999. 🐘
PostgreSQL: 1996
MySQL: 1995 (barely)
But POSTGRES (the project) started in 1986 - making the underlying technology a decade older.
The old elephant has seen things. 🐘
PostgreSQL: 1996
MySQL: 1995 (barely)
But POSTGRES (the project) started in 1986 - making the underlying technology a decade older.
The old elephant has seen things. 🐘
It's maintained by a global community of volunteers and companies who contribute.
No single company can buy it, fork it, or kill it.
True open source. 🐘
It's maintained by a global community of volunteers and companies who contribute.
No single company can buy it, fork it, or kill it.
True open source. 🐘
The name comes from the Russian word for 'little elephant' (слоник).
Why an elephant? Because elephants never forget - just like PostgreSQL never loses your data. 🐘
The name comes from the Russian word for 'little elephant' (слоник).
Why an elephant? Because elephants never forget - just like PostgreSQL never loses your data. 🐘
It was created at UC Berkeley in 1986 by Michael Stonebraker.
The 'SQL' was added in 1996 when SQL support was added. The name is a play on 'Ingres' - Stonebraker's previous database.
Post-Ingres → Postgres 🐘
It was created at UC Berkeley in 1986 by Michael Stonebraker.
The 'SQL' was added in 1996 when SQL support was added. The name is a play on 'Ingres' - Stonebraker's previous database.
Post-Ingres → Postgres 🐘
No server. No backend. Just WASM magic under 3MB.
Learn SQL for free without us paying a cent for infrastructure 🐘
No server. No backend. Just WASM magic under 3MB.
Learn SQL for free without us paying a cent for infrastructure 🐘
"Can I join you?"
"Can I join you?"
The most underrated SQL feature.
The most underrated SQL feature.
Returns NULL instead of crashing.
Returns NULL instead of crashing.
CTEs are not. Use WITH.
CTEs are not. Use WITH.
STRING_AGG. No app code needed.
STRING_AGG. No app code needed.
ON CONFLICT DO UPDATE = upsert in one atomic query.
ON CONFLICT DO UPDATE = upsert in one atomic query.
generate_series() is your friend.
generate_series() is your friend.
One query. Multiple counts. No subqueries.
One query. Multiple counts. No subqueries.
Stop doing 2 round trips to your database.
Stop doing 2 round trips to your database.
Get the latest row per group in one query. No window functions needed.
Get the latest row per group in one query. No window functions needed.
COALESCE exists.
COALESCE exists.