pgGraph: 기존 관계형 테이블에 고속 그래프 탐색 기능을 추가하는 PostgreSQL 확장 프로그램
해결하는 문제
PostgreSQL과 같은 관계형 데이터베이스는 구조화된 데이터에는 뛰어나지만, 두 엔티티 간의 최단 경로를 찾거나 특정 홉(hop) 수 내의 레코드를 찾는 것과 같은 복잡한 그래프 스타일의 질문에는 어려움을 겪습니다. 전통적으로 이러한 쿼리는 느리고 유지 관리가 어려운 복잡하고 맞춤화된 재귀 SQL을 필요로 합니다.
작동 방식
데이터를 별도의 그래프 데이터베이스로 이동하는 대신, pgGraph는 기존 PostgreSQL 테이블에서 파생된 특화된 읽기 중심 그래프 인덱스를 구축합니다. 관계를 연속적인 메모리 구조에 저장하기 위해 Compressed Sparse Row (CSR) 형식을 사용하며, 이를 통해 매우 빠른 탐색이 가능합니다. PostgreSQL이 데이터의 권위 있는 진실의 원천(source of truth)으로 유지되는 동안, 사용자는 graph 스키마 내의 표준 SQL 함수를 사용하여 이 그래프와 상호작용합니다.
대상 사용자
- 전용 그래프 데이터베이스로 마이그레이션하지 않고 복잡한 관계 쿼리를 수행해야 하는 PostgreSQL 사용자 개발자.
- GraphRAG와 같은 그래프 기반 워크로드를 가속화하려는 데이터 엔지니어.
- 모든 데이터를 기존 관계형 스키마 및 보안 제약 조건 내에 유지하면서 고속 탐색(최단 경로 또는 멀티 홉 검색 등)을 수행하려는 사용자.
주요 특징
- 데이터 마이그레이션 없음: 데이터는 표준 PostgreSQL 테이블에 그대로 유지됩니다. pgGraph는 파생된 인덱스만 생성합니다.
- 고성능: 재귀 SQL 조인의 오버헤드를 우회하기 위해 특화된 메모리 효율적 실행 계층을 사용합니다.
- SQL-Native: 새로운 쿼리 언어가 필요하지 않습니다. SQL 함수를 사용하여 그래프 검색을 수행합니다.
- 안전 기능: 무제한 탐색으로 인한 데이터베이스 충돌을 방지하기 위해 깊이 제한 및 메모리 보호 장치와 같은 내장된 서킷 브레이커를 포함합니다.
Sources
- RepoEvokoa/pgGraph