PostgreSQL, 관계형 데이터를 그래프로 탐색하는 새로운 방법
PostgreSQL이 관계형 데이터를 그래프 구조로 조회하는 Property Graph 기능을 지원함
SQL/PGQ 표준을 통해 테이블 데이터를 읽기 전용 그래프 뷰로 제공
네이티브 그래프 DB와 달리 실제 데이터는 테이블에 저장됨
커뮤니티에서는 대규모 데이터셋 처리 및 다른 DB 연동 가능성 논의
PostgreSQL의 Property Graph 구현 방식
PostgreSQL은 SQL/PGQ 표준을 기반으로 Property Graph를 구현합니다. 이는 기존의 관계형 테이블 데이터를 읽기 전용 그래프 뷰(Read-Only Graph View)로 노출하는 방식입니다. 네이티브 그래프 데이터베이스와 달리, 데이터 자체는 테이블에 저장되며 그래프 쿼리는 동일한 쿼리 플래닝 및 실행 인프라를 공유합니다. 이를 통해 관계형 쿼리와 그래프 쿼리를 혼합하여 사용할 수 있다는 점이 특징입니다.
Property Graph의 구조와 쿼리
Property Graph는 정점(Vertices)과 간선(Edges)으로 구성되며, 각 요소는 레이블(Labels)과 속성(Properties)을 가집니다. 레이블은 테이블 행 타입과 유사하며, 속성은 컬럼과 유사하게 실제 데이터를 포함합니다. 예시에서는 `products`, `customers`, `orders` 테이블을 정점으로, `order_items`, `customer_orders` 테이블을 간선으로 매핑하여 그래프를 정의했습니다. `GRAPH_TABLE` 함수와 `MATCH` 절을 사용하여 SQL과 유사한 문법으로 그래프 패턴 매칭 쿼리를 수행할 수 있습니다.
레이블(Labels)을 활용한 유연한 데이터 노출
테이블 및 컬럼 이름을 그대로 사용하거나, `LABEL` 절을 통해 그래프 내에서 더 직관적인 이름(Intuitive Names)으로 노출할 수 있습니다. 예를 들어, `products` 테이블을 `product` 레이블로, `customers` 테이블을 `customer` 레이블로 정의할 수 있습니다. 또한, 여러 테이블에 동일한 레이블(`person`)을 적용하여 다양한 유형의 데이터를 통합하여 쿼리하는 것도 가능합니다. 이 경우, 레이블에 대한 속성 정의가 일관되어야 합니다.
커뮤니티의 대규모 데이터셋 및 연동 가능성 논의
커뮤니티에서는 PostgreSQL의 Property Graph 기능이 대규모 데이터셋(Large Datasets)을 처리할 때의 성능과 확장성에 대한 질문이 있었습니다. 특히, `pg_duckdb`와 같은 도구를 사용하여 Parquet 파일에 저장된 데이터를 분석하는 시나리오에서 이 기능이 어떻게 활용될 수 있는지에 대한 관심이 높았습니다. 이는 데이터 레이크(Data Lake) 환경에서의 그래프 분석 가능성을 시사합니다.