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 the 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 a 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, is 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 an 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.
View the source version on I Programmer: https://www.i-programmer.info/news/84-database/15530-age-the-open-source-postgresql-extension-for-graph-database-functionality.html