AGE - The Open Source PostgreSQL Extension For Graph Database Functionality
Written by Nikos Vaggalis   
Monday, 27 June 2022

Apache AGE, "A Graph Extension" was recently announced as an Apache Software Foundation Top-Level Project (TLP). What is the importance of that?

The project was originally developed in 2019 as an extension to AgensGraph (Bitnine Global's multi-model database fork of PostgreSQL) and it entered the Apache Incubator in April 2020. The Apache Incubator is the primary entry path for projects and codebases wishing to become part of the efforts at The Apache Software Foundation. For a project to graduate from incubator into TPL shows great maturity and community involvement. It provides confidence in the longevity of a project and is great news for those wishing to adopt it.

As to the project itself, AGE is graph database project which adds graph analytics functionality to traditional relational data platforms. Based on PostgreSQL, it aims to create a multi-model database that can handle both relational and graph model data so that users can use standard ANSI SQL along with openCypher, the Graph query language, filling an unmet ‘best of both worlds’ niche.

As Mehboob Alam, Postgres community advocate, explains:

Melding traditional analytics and real-time graph intelligence is going to be a game-changer and AGE will be instrumental in this exciting future.

As already said, Apache AGE supports the openCypher graph query language. Originally contributed by Neo4j, Cypher is now used by over 10 products and tens of thousands of developers. It is a query language that lets you retrieve data from the graph. It is like SQL for graphs, and was inspired by SQL so it lets you focus on what data you want out of the graph, not how to get at it.

I explored Cypher as part of my report on "Introduction to Neo4j Online Course", Neo4j, of course, being purely a graph-based database unlike AGE's graph-relational fusion. That free course is an opportunity to learn about Cypher's fundamentals as well as a rundown of the different types of database management systems and their evolution:

Relational database systems can't really cope when handling joins between many tables. Subsequently the first cracks started to appear when classic database systems were found ill-equipped for the Big Data era as they couldn't handle the amount of data our world now generates. For that reason NoSQL databases sprang into life. but in the quest to improve performance they got rid of ACID.

The next step was document databases where you could index the content of the documents so you could look up a document based on its contents too. But then the need arose to be able to find data referencing each other, hence the emergence of Graph databases. Built for use with online transaction processing (OLTP) systems, they can store relationships and connections as first-class entities and under ACID too.

Back to AGE, the project recently released Apache AGE v1.0.0-incubating and it is currently being developed for the PostgreSQL 11 release and will support PostgreSQL 12, 13 and all the future releases of PostgreSQL.

This, of course, was made happen thanks to PostgreSQL's extensibility, which once more demonstrates the added, as well as unforeseen, value it holds for its users. As a matter of fact it was very recently that yet another very useful extension was released; that of pg_ivm examined in pg_ivm - Materialized Views On Steroids :

pg_ivm is an extension module for PostgreSQL 14 that provides an Incremental View Maintenance (IVM) feature.That means that materialized views are updated immediately after a base table is modified.

pg_ivm gives answer to the age old problem of when to refresh the materialized view. As a refresher or reminder, a materialized view versus a normal view is that the former keeps a copy of the data referenced to speed up querying since you actually query that copy, while the latter performs a live query every time.

AGE adds to the great ecosystem of extensions that give PostgreSQL extra super powers. Check it out on its Github repo.


More Information

 AGE Github repo

Related Articles

An Introduction to Neo4j

pg_ivm - Materialised Views On Steroids  


To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.


BusyBeaver(5) Is 47,176,870

The thing about the BusyBeaver function is that it is very easy to understand, but very difficult to compute. We now know its value up to 5, which isn't much progress for more than 50 years work.

Mbed Is Dead - Thanks Arm

Fifteen years ago, ARM decided that it would be good to "help" IoT projects by creating a common OS and development environment for ARM-based development boards and brought us Mbed. Now we have until  [ ... ]

More News

kotlin book



or email your comment to:

Last Updated ( Monday, 27 June 2022 )