PostgreSQL is an advanced, enterprise-class open-source relational database that supports both SQL (relational) and JSON (non-relational) querying. It is a highly stable database management system backed by more than 20 years of community development. This thorough and collaborative approach has contributed to its high levels of resilience, integrity, and correctness. PostgreSQL is used as the primary data store or data warehouse for many web, mobile, geospatial, and analytics applications.

What is the history of PostgreSQL

The PostgreSQL project started in 1986 under the direction of Professor Michael Stonebreaker at the University of California, Berkeley. The project was originally named POSTGRES, in reference to the older Ingres database, also developed at Berkeley. POSTGRES aimed to add the fewest features needed to completely support multiple data types.

In 1996, the project was renamed PostgreSQL to illustrate its support for the SQL querying language (although PostgreSQL is still commonly abbreviated as Postgres). A dedicated and diverse community of contributors—the PostgreSQL Global Development Group—continues to make regular major and minor releases of the free and open-source database project.

What are the benefits of using PostgreSQL

PostgreSQL has a rich history of supporting advanced data types. It supports a level of performance optimization that is common across its commercial database counterparts, like Oracle and SQL Server. Read more benefits below.

Rich features and extensions

PostgreSQL possesses robust feature sets, including tablespaces, asynchronous replication, nested transactions, online/hot backups, and a refined query planner/optimizer. The PostgreSQL community has also developed extensions that extend the functionality of PostgreSQL database. PostgreSQL supports:

  • International character sets, multi-byte character encodings, and Unicode. 
  • Storage of large binary objects, including pictures, sounds, video, and maps.
  • Foreign keys, joins, views, triggers, and stored procedures.
  • Leading programming languages and protocols, including Python, Java, Perl, .Net, Go, Ruby, C/C++, Tcl, and ODBC.

It is locale-aware for sorting, case sensitivity, and formatting. The PostgreSQL database server is highly scalable both in the quantity of data it can manage and in the number of concurrent users it can accommodate.

Fault tolerance and reliability

PostgreSQL is an ACID-compliant, highly fault-tolerant database. ACID refers to atomicity, consistency, isolation, and durability—four characteristics that make database transactions reliable. Specifically, ACID indicates that data in a database is accurate because incomplete changes were never stored. PostgreSQL features such as write-ahead logging, Multi-Version Concurrency Control (MVCC), and point-in-time recovery make ACID compliance possible.

Developers and administrators use the PostgreSQL server to build fault-tolerant applications that protect data integrity—providing greater data integrity and reliability than other SQL databases like MariaDB, Firebird, and MySQL.

Open-source license and community

PostgreSQL source code is available under an open-source license, granting you the freedom to use, modify, and implement it as you see fit, at no charge. PostgreSQL carries no licensing cost, which eliminates the risk of over-deployment. PostgreSQL's dedicated community of contributors and enthusiasts regularly finds bugs and fixes, adding to the overall security of the database system.

What are the use cases for PostgreSQL

PostgreSQL is used as the primary database for all types of applications and its many extensions support hundreds of use cases. We list some popular use cases below.

General purpose OLTP database

PostgreSQL has superior online transaction processing capabilities (OLTP) because you can configure it for automatic failover and full redundancy. Financial institutions, manufacturers. startups, and large enterprises use PostgreSQL as the primary data store to support their internet-scale applications, solutions, and products.

Geospatial database

When used with the PostGIS extension, PostgreSQL supports geographic objects and can be used as a geospatial data store for location-based services and geographic information systems (GIS).

Federated database

PostgreSQL's Foreign Data Wrappers and JSON support allow it to link with other data stores—including NoSQL types. As a result, it can act like a federated hub for polyglot database systems that use different database technologies for varying use cases.

Dynamic websites and apps

LAMP is an acronym for four technologies—Linux operating system, Apache web server, MySQL database server, and PHP programming language. Developers use the LAMP stack to create, host, and maintain web applications. PostgreSQL replaces MySQL server to form the LAPP stack. You can run dynamic websites and apps using Linux, Apache, PostgreSQL, and PHP/Python/Perl.

What is the difference between PostgreSQL and other relational databases

A relational database is a collection of data items with pre-defined relationships. These items are organized as a set of tables with columns and rows. A relational database management system is software that lets you read, write, and modify the relational database. PostgreSQL is an object-relational database management system (ORDMBS), which means that it has relational capabilities and an object-oriented design.

Using object-oriented features of PostgreSQL, programmers can:

  • Communicate with the database servers using objects in their code.
  • Define complex custom data types.
  • Define functions that work with their own data types.
  • Define inheritance, or parent-child relationships, between tables.

Thus, PostgreSQL design is more flexible than other relational database servers. You can model different relationships and types within the existing database system instead of externally in your application code. You can maintain consistency and improve database performance by enforcing intended behavior closer to the actual data.

What is the difference between PostgreSQL and MySQL

MySQL is a widely adopted open-source relational database that serves as the primary relational data store for many popular web applications. With more than 20 years of community-backed development and support, MySQL is reliable, stable, and secure.

MySQL and PostgreSQL are both popular open-source relational databases. Traditionally, MySQL has been perceived as easy to use and fast, whereas PostgreSQL has been perceived as feature-rich and more comparable to commercial databases like Oracle.

However, the current major versions of MySQL and PostgreSQL both offer many robust features and capabilities in terms of performance, reliability, security, and more.

PostgreSQL vs. MySQL—which one to choose

Choosing the correct database server depends greatly on your use case and practical implementation. You should go with the server that gives you optimum performance and scale for your requirements. For example, if you need to scale faster to a very large volume, PostgreSQL is a better choice. However, you can choose MySQL if you want a lightweight server than integrates quickly with third-party tools.

Migrating from MySQL to PostgreSQL

Migrating from MySQL to PostgreSQL can be tricky, especially if you are new to the technology. You have to make design changes that take advantage of PostgreSQL's object-oriented design to see improvements. Otherwise, you may not notice any differences. Remember to map data types correctly and optimize your implementation as you migrate.

How can AWS support your PostgreSQL requirements

AWS supports PostgreSQL through a fully managed database service with Amazon Relational Database Service (RDS) for PostgreSQL. Amazon RDS makes it easy to set up, operate, and scale PostgreSQL deployments in the cloud. It manages complex and time-consuming administrative tasks such as PostgreSQL software upgrades, storage management, and backups for disaster recovery.

With Amazon RDS, you can:

  • Deploy scalable PostgreSQL deployments in minutes with cost-efficient and resizable hardware capacity. 
  • Reuse code, applications, and tools related to your existing databases.
  • View critical operational metrics like compute, memory, and storage capacity utilization.

Additionally, Amazon Aurora is a relational database management system (RDBMS) built for the cloud with complete MySQL and PostgreSQL compatibility. Aurora combines the speed and availability of high-end commercial databases with the simplicity and cost-effectiveness of open-source databases.

Aurora is fully compatible with MySQL and PostgreSQL, allowing existing applications and tools to run without requiring modification. Migrate to Amazon Aurora to experience three times the throughput of PostgreSQL.

Get started with PostgreSQL on AWS by creating a free account today!

Step 1 - Sign up for an Amazon Web Services account

Sign up for Amazon RDS

Get access to the Amazon RDS Free Tier.

Learn with Simple Tutorials

Start building with Amazon RDS

Begin building with help from the PostgreSQL on Amazon RDS user guide.