PostgreSQL Popular Extensions
Tags: postgres, database
Published: 2023-02-19 07:46:16

**PostGIS**

PostGIS extends Postgres to handle spatial data and data types. It adds support for geographic objects, allowing location queries to be run in SQL. PostGIS adds extra types (like geometry, geography, raster, and others) to the Postgre database, as well as  functions, operators, and index enhancements that apply to these spatial types. These additional functions, operators, index bindings, and types augment the power of Postgres, making it a fast, feature-plenty, and robust spatial database management system.

A core benefit of PostGIS is that geospatial queries can take place at the database level rather than the application level, making them more efficient. PostGIS is useful for many IoT use cases that involve tracking, routing, addressing, and other location-based attributes.
**ZomboDB**

ZomboDB enhances your ability to search text data in Postgres, making indexing and maintaining search data simpler and easier. It uses Elasticsearch as an index type to bring powerful text-search and analytics features to Postgres. Its comprehensive query language and SQL functions enable new and creative ways to query your relational data.

ZomboDB abstracts away Elasticsearch such that it appears as a regular Postgres index. As a native Postgres index type, ZomboDB allows you to CREATE INDEX ... USING ZomboDB on your existing Postgres tables. At that point, ZomboDB takes over and fully manages the remote Elasticsearch index and guarantees transactionally-correct text-search query results.
**Postgres_fdw**

The postgres_fdw module enables you to use a Foreign Data Wrapper to access tables on remote Postgres servers (hence the name "fdw"). A Foreign Data Wrapper lets you create proxies for data stored in other Postgres databases, so that they may be queried as if they were coming from a table in the current database.

Postgres_fdw allows you to combine data between two Postgres instances.
**Apache AGE**

Apache AGE is PostgreSQL extension that provides graph database functionality.
It aims to bring graph querying abilities to be brought to relational database paradigm.
Users can read and write graph data in nodes and edges. They can also use various algorithms such as variable length and edge traversal when analysing data. And all these graph based data will be internally be handled keeping the relational database.
This type of database is useful when the meaning is in the relationships between the data. Relational databases can easily handle direct relationships, but indirect relationships are more difficult to deal with in relational databases. A graph databasThis type of database is useful when the meaning is in the relationships between the data. Relational databases can easily handle direct relationships, but indirect relationships are more difficult to deal with in relational databases. A graph database stores relationship information as a first-class entity. Apache AGE gives you the best of both worlds, simultaneously.e stores relationship information as a first-class entity. Apache AGE gives you the best of both worlds, simultaneously.
[Apache AGE](https://age.apache.org/)
[Apache AGE Github](https://github.com/apache/age)
**Citus**

Citus is a PostgreSQL extension that transforms Postgres into a distributed database—so you can achieve high performance at any scale.

With Citus, you extend your PostgreSQL database with new superpowers:

Distributed tables are sharded across a cluster of PostgreSQL nodes to combine their CPU, memory, storage and I/O capacity.
References tables are replicated to all nodes for joins and foreign keys from distributed tables and maximum read performance.
Distributed query engine routes and parallelizes SELECT, DML, and other operations on distributed tables across the cluster.
Columnar storage compresses data, speeds up scans, and supports fast projections, both on regular and distributed tables.
Query from any node enables you to utilize the full capacity of your cluster for distributed computing.