Apache AGE - PostgreSQL extension library 소개

Spes Lim·2021년 2월 7일
0

opensource

목록 보기
1/1

Apache AGE는 PostgreSQL의 OpenCypher의 그래프 데이터베이스 기능을 지원해주는 확장 라이브러리 입니다.

이 프로젝트는 현재(2021/1/19) 기준으로 아직 인큐베이팅 과정에 있습니다. Apache AGE 프로젝트의 목적은 사용자가 표준 SQL그래프 쿼리 언어(OpenCypher)를 사용해서 관계형 및 그래프 모델 데이터를 모두 처리할 수 있는 단일 저장소를 만드는 것 입니다.

Apache AGE Architecture

이미지 출처: Apache AGE 공식 문서 홈페이지

PostgreSQL의 트랜잭션/캐시 레이어스토리지 계층에서 그래프 쿼리 및 표준 SQL 쿼리에 사용되는 노드가 실행됩니다. PostgreSQL에서 SQL 쿼리는 모두 트랜잭션 안에서 실행됩니다.

공식 문서의 설명입니다. PostgreSQL의 client-server Architecture를 보시면 좀 더 빠르게 이해할 수 있습니다. 결론부터 말씀드리자면 Apache AGE의 쿼리 실행 아키텍쳐는 PostgreSQL의 쿼리 실행 아키텍쳐와 동일한 프로세스를 거칩니다.

이미지 출처: 네이버 D2 블로그 - 한 눈에 살펴보는 PostgreSQL

1. Query Parsing

function call에 의해 Cypher query가 파싱되는데, 이 때 Cypher query는 그래프 쿼리 언어를 뜻합니다. 이 과정에서 OpenCypher의 스펙을 따르는 parser가 파싱 과정에서 사용됩니다.

2. Query Transform

파싱이 끝난 Cypher query는 Query tree로 변환됩니다. Query tree에 대한 설명은 PostgreSQL 공식 문서에 다음과 같이 기술 되었습니다.

what is a query tree? It is an internal representation of an SQL statement where the single parts that it is built from are stored separately. These query trees can be shown in the server log if you set the configuration parameters debug_print_parse, debug_print_rewritten, or debug_print_plan. The rule actions are also stored as query trees, in the system catalog pg_rewrite. They are not formatted like the log output, but they contain exactly the same information.

서버에 정의된 rewrite rule에 따라서 빌드된 단일 쿼리인 query tree가 생성 됩니다.

3. Planner/Optimizer

Planner는 데이터베이스 튜닝 작업에서 쓰이는 optimizer 입니다. 사용자가 SQL 쿼리를 작성하고 이를 이용해서 데이터를 추출하려고 할 때, 옵티마이저는 사용자가 작성한 SQL 쿼리를 해석하고 실행 계획에 따라 데이터를 처리합니다.
이 단계에서, planner는 graph operation을 통해 query tree를 병합하고, 프로시저 계획 노드(plan node)를 생성합니다.

4. Executor

생성된 plan node는 서버로 부터 실행됩니다.

5. Transaction / Cache Layer

Cypher query는 PostgreSQL의 데이터베이스 트랜잭션의 ACID 특성1을 충분히 보장합니다.

Features

  • 현재 PostgreSQL 11 릴리즈 버전 용으로 개발 중에 있습니다.
  • 향후 PostgreSQL의 12, 13 버전과 함께 모든 버전을 지원할 예정입니다.
  • OpenCypher 언어 및 OpenCypher의 레이블 계층을 지원합니다.
  • 여러 그래프를 동시에 쿼리하는 작업이 가능합니다. 이를 통해 사용자는 Cypher query를 사용해서 한 번에 두 개 이상의 그래프를 쿼리하고 병합 방법을 결정하고 원하는 쿼리를 출력할 수 있습니다.

v0.3.0-incubating (alpha)

  • DELETE, SET, REMOVE, MERGE clause support
  • Label Inheritance
  • Mathematical computation functions

Installing AGE

Apache AGE를 사용하기에 앞서, 여러분의 로컬 서버에는 반드시 postgresql 이 설치 되어 있어야 합니다.

Docker container 환경에서 Apache AGE 사용하기

저는 문서를 번역하면서 Docker image로 Apache Age 라이브러리 설치를 진행 하였습니다. 로컬에서 이슈가 생기면서 예시 파일을 만드는 작업에 진척이 생겼는데, 다음 편에서 후속으로 이어서 올리겠습니다. 감사합니다.

profile
Software Developer

0개의 댓글