PostgreSQL is packed with features. What may not be part of the core is available as extensions.
What are extensions – you ask?
PostgreSQL exposes APIs that are designed to easily allow external programs to load into the database and function just like core features. So if you find that you need a feature in the database and you don’t have the skills to enhance the core engine or if the change would be too disruptive to core, you can write an extension. In fact, extensions make for such a fundamental component of PostgreSQL, that when Michael Stonebreaker presented his original ‘The Design of Postgres’ paper [1], the second point of his abstract said:
“provide user extendibility for data types, operators and access methods”
How cool is that !?
Extensions have become a popular means to add features to Postgres that would be very difficult to include in the core engine. One of the most popular extensions is PostGIS, adding spatial support to PostgreSQL and allowing location queries to be run in SQL. In fact, some of the people I have talked to who have migrated from Oracle to PostgreSQL tell me that their primary driver was to use PostGIS.
Two of the most popular products by 2ndQuadrant – Postgres-BDR and pglogical – are also extensions. The former provides multi-master clustering capabilities and the latter implements logical replication for heterogeneous sources and targets.
Reason #1: Developers love it!
Reason #2: The license
Reason #3: No vendor lock-in
Reason #5: It can not be bought out