A Brief History of PostgreSQL

Wendy Kuhn
Launch School
Published in
5 min readMay 7, 2018

An ubiquitous piece of advice given regarding learning new technical concepts or tools is to research the history behind it. As a student developer at Launch School encountering relational database concepts and PostgreSQL for the first time, I wanted to know more about this Relational Database Management System (RDBMS) with the funny-sounding name, so I looked it up. Here’s what I found:

INGRES and Relational Databases

Source

1973 was the year that saw the end of US involvement in the Vietnam War, the year that English rock band Deep Purple released Smoke on the Water, and the year the US Supreme Court ruled on Roe v. Wade. People were sporting Farrah Fawcett hairstyles and computer technologies were changing the way businesses operated. The corporate sector was driving development of Database Management Systems (DBMS), using them to maintain information about clients, vendors, employees, inventory, supplies, product orders, and service requests. At the same time, in a lab at the University of California at Berkeley, Eugene Wong and Michael Stonebraker were beginning work on INGRES (INteractive GRaphics REtrieval System), one of the world’s first RDBMSs. Initially, the researchers had raised funds to build a geographic database system for Berkeley’s economics group (1). However, inspired by Edgar Codd’s 1970 seminal work on the relational model (2) and by white papers that IBM had just released regarding SystemR — the first implementation of SQL and an experimental database system built on the relational data model (3, 4), the two researchers decided to use the money to seed their relational database project instead (1).

For the ongoing support of the larger INGRES project, the two received funding from the National Science Foundation and three military agencies: the Air Force Office of Scientific Research, the Army Research Office, and the Navy Electronic Systems Command (1, 5). The context of the military’s interest in the development of such systems, together with the the confluence of the Cold War and the emergence of computer technologies to manage information, likely influenced the system’s concern with access control, protection, security, ownership, and the database “administrator.”

Source

The INGRES system fulfilled the requirements for database systems built on a relational model of data presented by Codd (1970): 1) information is presented by data values (rather than by ‘connections’ visible to the user), and 2) the use of a high-level declarative language with which users can query data without specifying algorithms (4). Essentially, the relational model required being both more user-friendly and robust to inevitable change.

This model was seen as diametrically opposed to the navigational database model, which came with a greater degree of data-dependence, meaning that application code needs to change whenever the data structure changes (8). On the other hand, a relational database system maintains keys, indices, and other “aids” used for processing user queries (e.g., a SELECT statement to represent “What is the lowest price of bolts?”) without the user having to include any information about these “aids” into their request, therefore existing applications won’t break when a system changes data representation or access aids (4).

See Figures 1 and 2 below for a visual comparison of a navigational database and a relational database. A navigational database program maintains a current position in any sequence of records being processed (8), thus “connections” are visible, whereas a relational database abstracts these connections into a third keyed relation.

Figure 1. Navigational Database

Source

Figure 2. Relational Database

Source

Unlike SystemR which used SQL, INGRES, which was itself programmed in C, supported QUEL (QUEry Language) as the primary query language. See further reading on the linguistic differences between SQL and QUEL.

INGRES v. Oracle

So why aren’t INGRES or QUEL household names? By the early 1980’s, INGRES and Oracle RDBMS, with equivalent functionality, performance, market share, and pricing, were running neck and neck, but ultimately the increasing adoption of SQL (versus QUEL) as the preferred query language and Oracle’s aggressive marketing won the day. INGRES did ultimately convert from QUEL-based to SQL-based, but by that time it had already lost market dominance (1).

While INGRES is still alive today in the form of the Actian X Hybrid Database, the UC Berkeley INGRES research project officially ended in 1985 (1).

Post-INGRES: Postgres, PostgreSQL

As the name suggests, Postgres was introduced in 1986 as a Post-INGRES evolution of a RDBMS that sought to fill the gaps of existing implementations. Postgres aimed to incorporate object-oriented data models (i.e., Object-Relational Database Management System), to add complete types support and the ability to define types, and to add the ability to fully describe relationships — which had previously been widely used but maintained entirely by the user. Unlike previous systems, Postgres “understood” relationships, and could retrieve information in related tables in a natural way using rules (6). For more information on the query rewrite rules system, see PostgreSQL Documentation.

Postgres used the POSTQUEL query language until 1994 when Postgres95 replaced it with support for the SQL language. In 1996, the PostgreSQL project changed its name to reflect both its relationship with the original Postgres project and the more recent SQL capability (7). The PostgreSQL project continues to make major releases, all available under a free and open-source license (6).

Timeline of Some Major Events for Database Management Systems

1969 CODASYL publishes first specifications for network database model

1970 Codd’s seminal work on relational model of data published

1973 IBM publishes on work which would become known as SystemR

1974 SystemR (SQL)

1974 INGRES (QUEL)

1979 Oracle (SQL)

1986 POSTGRES (POSTQUEL)

1994 Postgres95 (SQL)

1996 PostgreSQL (SQL)

--

--