Abstract

AGE is a multi-model database that enables graph and relational models built on PostgreSQL.

Proposal

We are proposing the AGE to the Apache foundation. AGE purpose is to provide an extension for PostgreSQL to give the users the ability to leverage graph database on top of the existing relational database with minimal effort. The basic principle of the project is to create single storage that can handle both relational and graph model data so that the users can use the standard ANSI SQL along with openCypher (http://www.opencypher.org), the Graph query language. 

Background

To provide some background, the AGE project is being actively developed. This project is a new generation of a multi-model graph database for the modern complex data environment. A graph database can solve problems through new perspectives, thanks to its different approach to data and its organization. By preparing data in graph models the users can apply graph algorithms that provide forte in handling complexity. Moreover, Graph data is a suitable form to apply machine learning. 

Prior to AGE, there was an existing forked project which is publicly available as an open-source on the following link: https://github.com/bitnine-oss/agensgraph

While working on the fork version of this project, we found out that there are increasing voices asking for an extension of AgensGraph. It was then when we decided to develop and work on the extension version to provide more benefits to PostgreSQL users such as easy installation and compatibility. 

AGE is a multi-model database designed to be simple and user-friendly, which supports the relational and graph data model at the same time that enables users to integrate the legacy relational data model and the flexible graph data model in one database. AGE supports ANSI-SQL and openCypher (http://www.opencypher.org). SQL queries and Cypher queries can be integrated into a single query in AGE. 

Currently, we have active users and contributors that forked and used this project to build other projects. Some examples could be found in the following links: 

Rationale

AgensGraph mainly offers a multimodel database, eliminating the migration efforts while having relational and graph models.  

There is a strong need for a cohesive, easy to implement multimodel databases. AGE is an extension of PostgreSQL which supports all the functionalities and features of the PostgreSQL and offers a graph model in addition. Users with a relational background and data model who are in need of having a graph model on top of their existing relational model can use this extension with minimal effort because they can use existing data without migration to enable graph database.

Since AGE is based on the powerful PostgreSQL RDBMS, it is very robust and fully-featured. AGE is optimized for handling complex connected graph data and provides plenty of powerful database features essential to the database environment including ACID transactions, multi-version concurrency control, stored procedure, triggers, constraints, sophisticated monitoring and a flexible data model (JSON). Moreover, AGE leverages the rich eco-systems of PostgreSQL and can be extended with many outstanding external modules, like PostGIS.

Initial Goals

After V0.1.0 release our initial goals are to complete implementation of openCypher language specification in a PostgreSQL extension: 

  1. Implementation of openCypher parser 
  2. Implementation of internal AgensGraph Data Types 
  3. Implementation of expression logic 
  4. Implementation of Cypher language Clauses (Return, Create, Delete, Update, Match)
  5. Implementation of variable length expressions (VLE)
  6. Implementation of graph-related functions (such as aggregation)

Current Status

Meritocracy:

Our current practices align with the meritocracy principles of Apache. AGE was originally created by Junseok Yang in June 2019. Committers have the freedom to work on a task independently and consult any other member of the team when necessary. Once committers have finished, a git patch is submitted to review and when the group approves the patch, it is committed to the master branch. 

Community:

AgensGraph has been building a community since 2017. Our hope is to transition to the community that we have there to the AGE. 

Core Developers:

Junseok Yang (jsyang@bitnine.net ),

John Gemignani (john.gemignani@bitnine.net ),

Josh Innis (josh.innis@bitnine.net )

Alignment:

AGE is compatible with many other projects such as MADlib since it's built on PostgreSQL.

Known Risks

Orphaned Products

The core developers of the AGE team plan to work full time on this project. There is a slim risk of orphaned or abandoned code since the AgensGraph(fork) project is an open-source project and has been forked nearly 90 times which decreases the chance of being orphaned. We plan to extend and diversify this community further through Apache.

Inexperience with Open Source:

The core developers are all active users and followers of open source. They are already committers and contributors to the AgensGraph(fork and extension) Github project. All have been involved with the source code that has been released under an open-source license, and several of them also have experience developing code in an open-source environment. Though the core set of developers does not have Apache Open Source experience, there are plans to onboard individuals with Apache open source experience on to the project.

Homogenous Developers:

The current list of committers includes developers from several different countries. The core committers are geographically distributed across the U.S., Europe, and Asia. They are experienced with working in a distributed environment. 

Reliance on Salaried Developers:

Bitnine invested in AGE and some of its key engineers are working full time on the project. In addition, since there is a growing graph database need, we look forward to other Apache developers and researchers to contribute to this project.


Relationships with Other Apache Products:

An Excessive Fascination with the Apache Brand:

AGE is proposing to enter incubation at Apache in order to help efforts to diversify the committer-base and to give back to the community. The goal of this proposal is not to capitalize on the Apache brand but to give back more specifically to the Apache community. 

We already appeared in many reviews including in the IDC report as a top 4 multimodel DBS and we are getting well known so there is no need for more market recognition.

Documentation

Currently, the main documentation of the project is contained in the README.md in the source repository. More information on AGE can be found at https://sway.office.com/8zMnvFUaDihVADUu?ref=Link

Initial Source

AGE has been under development since 2019 by a team of engineers at Bitnine Inc. It is currently hosted on Github.com under an Apache license.

Source and Intellectual Property Submission Plan

 The current license is already Apache Software License 2.0.

External Dependencies:

AGE has the following external dependencies: 

Cryptography:

The project currently does not handle cryptography.

Required Resources

Mailing lists 


Slack Channel: agensgraph_extension_asf

Git Repositories:

Current: https://github.com/bitnine-oss/agensgraph-ext

Git is the preferred source control system: git://git.apache.org/incubator-agensgraph

Issue Tracking:

JIRA AgensGraph(AgensGraph). If required, we could use the Apache gitbox integration to sync Github & Apache infrastructure, and rely on Github issues & pull requests for community engagement.

Other Resources:

Confluence 

Initial Committers & Affiliation

Junseok Yang (jsyang at bitnine dot net )
Josh Innis (josh dot innis at bitnine dot net )
John Gemignani (john dot gemignani at bitnine dot net  )
Jasper Blues (jasper at liberation dash data dot com)
Aaron Genovia (aarongenovia at gmail dot com)
Mason Sharp(mason dot sharp at gmail dot com)
Eya Badal Abdisho(eya dot abdisho at bitnine dot net)

Sponsors

We kindly request the Apache Incubator PMC to be the sponsor for this project.

Champion:

Jim Jagielski


 Mentors:

Kevin Ratnasekera 

Von Gosling

Raphael Bircher

Felix Cheung

Sponsoring Entity:

We are requesting the Incubator to sponsor this project.





  • No labels

4 Comments

  1. Required Resources is what you have to apply for apache, while not you have own.

    External Dependencies parts, you'd better list the other dependencies of your project and the licensing agreement for each dependency

    1. I applied some changes based on your feedback. Thank you for your comments, Von. 

      1. Great, please keep moving ~ I have seen you rename AgensGraphExtension to agensgraph-ext in your Github repo. To be honest, If you donate agensgraph-ext to apache incubator, you should think about how to build an ecosystem around it. As far as I know, it's easy to build an ecosystem around the engine kernel. Even in the world of graph databases, it is not an easy thing to build a strong community ecosystem around the plugin or extension.


  2. Addition ASF-specific bits have been added, such as mailing list and JIRA info. Looks good to go!