Est. 1996 Intermediate

PostgreSQL

The world's most advanced open-source object-relational database — a standards-driven, extensible SQL system born from UC Berkeley research that grew into a default choice for modern applications.

Created by Michael Stonebraker and the POSTGRES project at UC Berkeley; today maintained by the PostgreSQL Global Development Group

Paradigm Declarative, set-oriented query language (SQL) over an object-relational database engine, extended with multiple procedural languages for server-side routines
Typing Static, strong — values conform to declared column data types in a fixed schema, with a rich extensible type system
First Appeared 1996 (as PostgreSQL); the POSTGRES research project dates to 1986
Latest Version PostgreSQL 18 (September 2025)

PostgreSQL — often shortened to Postgres — is a free, open-source object-relational database management system known for standards compliance, reliability, and an unusually deep capacity for extension. Data lives in tables defined by a schema and is queried with SQL, the declarative language in which you describe what data you want (SELECT name FROM users WHERE active = true) rather than how the engine should fetch it. What distinguishes PostgreSQL is how far it pushes beyond the classic relational model: custom data types, user-defined functions in many languages, table inheritance, a powerful rule and trigger system, and a long list of extensions that bolt new capabilities directly onto the engine.

The language developers write against PostgreSQL is SQL — a broad, highly standards-conformant dialect — layered with a procedural sub-language for server-side logic (PL/pgSQL) and pluggable procedural languages such as PL/Python, PL/Perl, and PL/Tcl. But PostgreSQL’s identity has always been as much about its engine and its philosophy as its syntax: correctness over shortcuts, extensibility over a fixed feature set, and a community-governed development model with no single corporate owner.

History and Origins

PostgreSQL’s roots reach back to one of the most influential figures in database history, Michael Stonebraker. In the 1970s at UC Berkeley, Stonebraker had led Ingres, an early relational database that helped prove Edgar Codd’s relational theory could be made practical. In 1986 he launched a successor project, POSTGRES (literally “post-Ingres”), to explore ideas that the strict relational model handled poorly: complex objects, user-defined types and operators, and an active rule system for enforcing business logic inside the database.

POSTGRES used its own query language, POSTQUEL, and circulated as a research system through the late 1980s and early 1990s. Version 1 reached outside users in 1989, with versions 2 and 3 following, before the Berkeley project formally ended at version 4.2 in 1994.

The pivotal turn came that same year. Two Berkeley graduate students, Andrew Yu and Jolly Chen, replaced POSTQUEL with an interpreter for the industry-standard SQL language, releasing the result the following year as Postgres95 on the open web in 1995. In 1996, recognizing both the SQL support and the system’s heritage, the project was renamed PostgreSQL. Stewardship passed to a distributed, all-volunteer group of contributors — the PostgreSQL Global Development Group — and version numbering resumed at 6.0 to continue from the original POSTGRES lineage. PostgreSQL 6.0 shipped in early 1997, beginning the project’s steady cadence of roughly annual major releases that continues today.

Design Philosophy

PostgreSQL’s culture prizes correctness and standards compliance above almost everything else. Where some databases historically took liberties with the SQL standard for speed or convenience, PostgreSQL’s community has tended to implement features carefully and conservatively, favoring data integrity and predictable behavior. This reputation for being “the database that does the right thing” is a large part of why it is trusted for systems of record.

The second pillar is extensibility, inherited directly from the POSTGRES research agenda. PostgreSQL was designed so that types, functions, operators, index methods, and even procedural languages can be added without modifying the core. This is why an extension like PostGIS can transform PostgreSQL into a world-class spatial database, or why TimescaleDB can adapt it for time-series data — the engine was built to be grown.

A third defining trait is its governance. PostgreSQL is not owned by any single company; it is developed by a global community under the permissive PostgreSQL License (a liberal, BSD/MIT-style license). That independence has insulated it from the acquisition dramas that buffeted other open-source databases and has encouraged a broad ecosystem of vendors building products on top of the same shared core.

Key Features

  • Object-relational model — user-defined types, table inheritance, arrays, composite types, and ranges alongside ordinary relational tables.
  • Standards-compliant SQL — one of the most complete and conformant SQL implementations among open-source databases, including window functions, common table expressions (including recursive CTEs), and rich JOIN support.
  • MVCC concurrency — multi-version concurrency control lets readers and writers proceed without blocking each other, providing strong transactional isolation.
  • JSON and JSONB — first-class document storage, with the binary, indexable JSONB type enabling document-style workloads inside a relational engine.
  • Extensible indexing — multiple index types (B-tree, hash, GiST, SP-GiST, GIN, BRIN) and the ability to define new ones, supporting everything from full-text search to geospatial queries.
  • Procedural languages — server-side logic in PL/pgSQL plus optional PL/Python, PL/Perl, PL/Tcl, and community languages.
  • Replication and high availability — built-in streaming replication, hot standby, and logical replication for scaling reads and building resilient systems.
  • Extensions — a packaging mechanism (CREATE EXTENSION) that powers a vast ecosystem: PostGIS, TimescaleDB, Citus, pgvector, and many more.

A short session shows the declarative core, with a PostgreSQL touch in the JSONB column:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
CREATE TABLE users (
  id       SERIAL PRIMARY KEY,
  name     TEXT NOT NULL,
  active   BOOLEAN DEFAULT TRUE,
  profile  JSONB
);

INSERT INTO users (name, profile)
VALUES ('Ada', '{"role": "engineer"}'),
       ('Linus', '{"role": "maintainer"}');

SELECT name, profile->>'role' AS role
FROM users
WHERE active = TRUE
ORDER BY name;

Evolution

PostgreSQL’s feature set has compounded steadily across decades of releases. 7.0 (2000) brought foreign keys and a much-improved optimizer. 8.0 (2005) added native Windows support, savepoints, point-in-time recovery, and tablespaces, opening the door to mainstream enterprise adoption. The 9.x series was transformative: 9.0 (2010) introduced built-in streaming replication and hot standby, and 9.4 (2014) delivered the indexable JSONB type that reframed PostgreSQL as a hybrid relational/document store.

PostgreSQL 10 (2017) modernized the version-numbering scheme — the leading number is now the major version — and shipped declarative partitioning and logical replication, both essential for large deployments. Subsequent releases refined performance, parallelism, and SQL/JSON standard support, through PostgreSQL 17 (September 2024) with incremental backups and improved vacuuming. PostgreSQL 18, released on 25 September 2025, introduced a new asynchronous I/O subsystem (selectable via the io_method setting, including Linux’s io_uring); the project reported that this AIO work delivered up to roughly 3× faster reads from storage in specific I/O-bound scenarios such as sequential scans and vacuum, relative to the previous synchronous I/O path — a figure that varies widely with hardware, storage, and workload. The 18 release also added virtual generated columns, native uuidv7() generation, OAuth 2.0 authentication, and page checksums on by default.

Current Relevance

PostgreSQL is, by many measures, the open-source database of the moment. It consistently ranks at or near the top of developer surveys for “most admired” and “most wanted” database, and it has steadily gained ground as a default choice for new applications — a position once held more firmly by MySQL. Its appeal spans startups and large enterprises alike: a single engine that handles transactional workloads, JSON documents, full-text search, geospatial data (via PostGIS), time-series (via TimescaleDB), and increasingly vector similarity search for AI applications (via pgvector).

Every major cloud offers managed PostgreSQL — Amazon RDS and Aurora, Google Cloud SQL and AlloyDB, Azure Database for PostgreSQL, and many specialized providers — and an entire industry of PostgreSQL-derived and PostgreSQL-compatible products has grown up around it, from analytics engines like Greenplum and Amazon Redshift to distributed SQL systems such as CockroachDB and YugabyteDB that speak the PostgreSQL wire protocol.

Why It Matters

PostgreSQL is a rare success story of academic research becoming durable infrastructure. The object-relational ideas Michael Stonebraker pursued at Berkeley — extensible types, user-defined functions, an engine you can grow rather than merely configure — turned out to be exactly what a world of varied, evolving data needed, and they live on in production systems handling some of the planet’s largest workloads.

It is also a landmark of community-governed open source. With no single corporate owner, a permissive license, and a development process run by a global volunteer group, PostgreSQL has remained free and independent for three decades while sustaining a thriving commercial ecosystem on top of its shared core. For a great many engineers, “just use Postgres” has become a kind of professional wisdom: a reliable, standards-respecting, endlessly extensible foundation that rewards trust — and for an ever-growing share of the software industry, it is the database of record.

Timeline

1986
Michael Stonebraker begins the POSTGRES project at the University of California, Berkeley, as a successor to his earlier Ingres relational database. The goal is to explore an 'object-relational' model — adding support for complex data types, user-defined types and functions, rules, and extensibility that traditional relational systems lacked.
1989
POSTGRES version 1 is released to a small group of external users. Versions 2 (1990) and 3 (1991) follow, refining the rule system and query engine, before the Berkeley project formally winds down with version 4.2 in 1994.
1994
Berkeley graduate students Andrew Yu and Jolly Chen add an interpreter for SQL to POSTGRES, replacing its original POSTQUEL query language. The result is released the following year (1995) as Postgres95, distributed openly on the web under a permissive license.
1996
The project is renamed PostgreSQL to reflect its new SQL support and its lineage from the original POSTGRES. A distributed, internet-based group of volunteers — what becomes the PostgreSQL Global Development Group — takes over development, and version numbering is set to resume at 6.0 to continue the POSTGRES heritage.
1997
PostgreSQL 6.0 is released in early 1997, the first version under the new name, beginning the project's long run of roughly annual major releases driven by a global volunteer community.
2000
PostgreSQL 7.0 is released, bringing foreign-key constraints and a substantially improved optimizer and query engine — milestones in the database's move toward full SQL standards compliance.
2005
PostgreSQL 8.0 adds native Microsoft Windows support, savepoints, point-in-time recovery, and tablespaces, broadening the database's reach beyond Unix-like systems and into mainstream enterprise deployments.
2010
PostgreSQL 9.0 introduces built-in streaming replication and hot standby, giving the database first-class high-availability and read-scaling capabilities without third-party tooling.
2014
PostgreSQL 9.4 adds the JSONB data type — a binary, indexable JSON format — letting PostgreSQL serve document-style and relational workloads in the same engine and cementing its reputation for flexibility.
2017
PostgreSQL 10 adopts a new, simpler version-numbering scheme (the first number is the major version) and ships declarative table partitioning and logical replication, two long-requested features for large-scale deployments.
2024
PostgreSQL 17 is released in September 2024, with improvements to vacuum memory management, the SQL/JSON standard's JSON_TABLE and constructor functions, better query performance, and incremental backup support.
2025
PostgreSQL 18 is released on 25 September 2025, headlined by a new asynchronous I/O subsystem (configurable via io_method, including io_uring on Linux), virtual generated columns, native uuidv7() generation, OAuth 2.0 authentication, and page checksums enabled by default.

Notable Uses & Legacy

Apple

Apple has shipped and relied on PostgreSQL extensively — it was bundled as the default database in macOS Server for several releases — and the company has been a long-standing user of the database for internal systems.

Instagram

Instagram famously scaled on PostgreSQL (with Django) from its earliest days, sharding the database across many servers to serve hundreds of millions of users, and has written publicly about its PostgreSQL engineering.

Reddit

Reddit has used PostgreSQL as a core data store for much of its history, including periods where it leaned on PostgreSQL as a flexible key-value-style store for its rapidly evolving data model.

Spotify

Spotify has reportedly used PostgreSQL as part of its backend data infrastructure, one of many large consumer services that rely on the database for transactional workloads.

Cloud database services

Every major cloud offers managed PostgreSQL: Amazon RDS and Amazon Aurora PostgreSQL-Compatible Edition, Google Cloud SQL and AlloyDB, Azure Database for PostgreSQL, and many others — making PostgreSQL a foundational layer of modern cloud infrastructure.

Geospatial and analytics ecosystems

The PostGIS extension turns PostgreSQL into a leading open-source spatial database used across GIS and mapping, while extensions such as TimescaleDB and Citus adapt it for time-series and distributed analytical workloads.

Language Influence

Influenced By

Ingres POSTGRES SQL

Influenced

Greenplum Amazon Redshift CockroachDB YugabyteDB

Running Today

Run examples using the official Docker image:

docker pull postgres:18

Example usage:

docker run --name postgres -e POSTGRES_PASSWORD=secret -d postgres:18
Last updated: