Apache AGE - Property Graph - OpenCypher for PostgreSQL

Posted in: Data  
Tags: OpenCypher   Graph   Graph Database   PostgreSQL   Apache AGE  
Author: Bambang Purnomosidi D. P. | | 2 minutes reading time

Tentang Apache AGE

Apache AGE adalah adalah ekstensi dari PostgreSQL untuk model data graph. Apache AGE mendukung model data graph berupa property graph (jenis lainnya adalah RDF/TripleStore). Apache AGE merupakan software bebas dan mendukung berbagai versi PostgreSQL. Secara resmi, pada halaman web Apache AGE, dinyatakan bahwa versi PostgreSQL yang didukung adalah versi 11-15. Meski demikian, pada versi release dari Apache AGE di GitHub, terdapat versi untuk PostgreSQL 16.x. Artikel ini menggunakan versi 16.1.

Instalasi

Instalasi sangat mudah dilakukan dan harus dikompilasi dari source code. Berikut adalah cara melakukan instalasi:

$ pwd
/home/bpdp/master/postgresql/16/age-1.5.0-pg16/apache-age-1.5.0
$ make install
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Werror=vla -Wendif-labels -Wmissing-format-attribute -Wimplicit-fallthrough=3 -Wcast-function-type -Wshadow=compatible-local -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -Wno-format-truncation -Wno-stringop-truncation -O2 -fPIC -fvisibility=hidden -I.//src/include -I.//src/include/parser -I. -I./ -I/home/bpdp/software/dbms/postgresql-16.1/include/server -I/home/bpdp/software/dbms/postgresql-16.1/include/internal  -D_GNU_SOURCE   -c -o src/backend/age.o src/backend/age.c
...
...
...
/bin/mkdir -p '/home/bpdp/software/dbms/postgresql-16.1/lib'
/bin/mkdir -p '/home/bpdp/software/dbms/postgresql-16.1/share/extension'
/bin/mkdir -p '/home/bpdp/software/dbms/postgresql-16.1/share/extension'
/usr/bin/install -c -m 755  age.so '/home/bpdp/software/dbms/postgresql-16.1/lib/age.so'
/usr/bin/install -c -m 644 .//age.control '/home/bpdp/software/dbms/postgresql-16.1/share/extension/'
/usr/bin/install -c -m 644  age--1.5.0.sql '/home/bpdp/software/dbms/postgresql-16.1/share/extension/'
$

Menggunakan Apache AGE

psql -U bpdp -d template1
psql (16.1)
Type "help" for help.

template1=# CREATE EXTENSION age;
CREATE EXTENSION
template1=# LOAD 'age';
LOAD
template1=# SET search_path = ag_catalog, "$user", public;
SET
template1=# GRANT USAGE ON SCHEMA ag_catalog TO bpdp;
GRANT
template1=# SELECT create_graph('test_age');
NOTICE:  graph "test_age" has been created
 create_graph 
--------------
 
(1 row)

template1=# SELECT * FROM ag_catalog.ag_graph;
 graphid |   name   | namespace 
---------+----------+-----------
   21353 | test_age | test_age
(1 row)

template1=# SELECT * FROM ag_catalog.drop_graph('test_age', true);
NOTICE:  drop cascades to 2 other objects
DETAIL:  drop cascades to table test_age._ag_label_vertex
drop cascades to table test_age._ag_label_edge
NOTICE:  graph "test_age" has been dropped
 drop_graph 
------------
 
(1 row)

template1=# 

Setelah ini, kita bisa menggunakan OpenCypher untuk bahasa query dari graph database yang kita buat (create_graph).

Happy hacking!