Draft:Apache AGE

AGE (A Graph Extension) is an open-source PostgreSQL extension under the Apache Software Foundation, which equips PostgreSQL with graph database functionality, allowing it to serve as both a graph and relational database. This extension supports the modeling, storage, and querying of graph data within the PostgreSQL ecosystem, thereby enabling complex graph analytics and queries on existing databases. With AGE, users and developers gain the flexibility to manage relational and graph data models without the need for a separate graph database.

History
Apache AGE was inspired by AgensGraph, a multi-model database that is itself a fork of PostgreSQL, developed by Bitnine Global. The project was officially donated to the Apache Software Foundation and entered incubation in April 2020. It graduated to a Top-Level Project in May 2022, signifying its maturity and the community's confidence in its governance and sustainability.

Graph Database Functionality
Enables graph data modeling, storage, and querying within PostgreSQL.

OpenCypher Support
Offers support for the openCypher query language, allowing users to perform complex graph queries.

Integration with Relational Data
Seamlessly integrates graph data with existing relational data models, providing a hybrid database solution.

Architecture
Apache AGE extends PostgreSQL by adding graph database capabilities on top of its existing relational model. This approach allows for the storage and management of graph data (nodes, edges, and properties) within the framework of PostgreSQL, utilizing its features such as ACID transactions, indexing, and extensions. The architecture of Apache AGE is designed to seamlessly integrate graph operations with PostgreSQL's relational model, offering a hybrid database solution. Here's a breakdown of how Apache AGE processes Cypher queries:

Cypher Query Parsing: Apache AGE parses Cypher queries embedded in cypher function calls. At this stage, it implements the grammar for openCypher, allowing users to input queries in a syntax that is familiar to those used in other graph databases.

Query Tree Transformation: Once a Cypher query is parsed, Apache AGE transforms it into a Query tree. This tree is then attached as a subquery node within the PostgreSQL query processing architecture. This step is crucial for integrating graph queries with the relational data model.

Planner / Optimizer: Apache AGE understands various graph operations and produces plan nodes that are specifically related to graph operations. This capability ensures that graph-related tasks are handled efficiently within the PostgreSQL environment.

Executor: The plan nodes related to graph operations are executed, allowing for the manipulation and querying of graph data. This process uses PostgreSQL's execution engine.

Transaction / Cache Layer: Cypher queries in Apache AGE work seamlessly with PostgreSQL's existing fully transactional system (ACID). This integration ensures that graph operations benefit from the same level of data integrity, consistency, isolation, and durability that PostgreSQL provides for relational data.

Usage
The extension is designed to be easy to install and use, requiring minimal configuration to add graph database functionality to existing PostgreSQL instances. Users can create graph objects, write graph queries using openCypher, and integrate graph analytics into their applications with the same tools and interfaces they use for relational data in PostgreSQL.

To facilitate integration into diverse development environments, Apache AGE supports drivers in multiple programming languages, including Go, Java, Node.js, Python, and Rust. This wide range of language support enables developers to work with Apache AGE in their preferred programming environments, making it accessible for a variety of projects and applications.

Development and Contributions
Apache AGE is an open-source project, welcoming contributions from the global developer community. The project's development is guided by the principles of the Apache Software Foundation, focusing on collaborative, consensus-based processes.

License
Apache AGE is released under the Apache License 2.0, a permissive open-source license that allows for broad use and modification.