콘텐츠로 이동
Graph 문서0.5

백엔드 선택 가이드

최신 안정판 Graph 0.5.1 릴리스 기준

백엔드 선택 지도

기능 개수로 순위를 매기지 말고, 이미 운영하는 기반과 반드시 필요한 의미론으로 후보를 줄인다. 그다음 로컬에서 같은 도메인 테스트를 실행한다.

백엔드운영 기반·질의트랜잭션스키마/인덱스로컬 검증이식성 경계
Neo4jNeo4j/Bolt, Cypher드라이버 트랜잭션인덱스·제약조건Neo4j 5 컨테이너공통 계약의 넓은 기준점
MemgraphNeo4j 드라이버 호환 Bolt, Cypher서버 트랜잭션백엔드별 Cypher DDLMemgraph 컨테이너Cypher·DDL 차이를 재검증
Apache AGEPostgreSQL, SQL 안의 CypherJDBC/Exposed 경계이식 가능한 DDL 제한apache/age:PG16_latest세션과 graph context가 중요
TinkerPopJVM 안의 TinkerGraph, Gremlin메모리 구현 의미론제한된 manager capability컨테이너 없음원격 서버를 대신하지 않음
FalkorDBRedis 형태 서비스, openCypher 일부라이브러리·서버 제약전용 인덱스FalkorDB 컨테이너미지원 트랜잭션 경로 확인

구현 근거: Neo4j, Memgraph, AGE, TinkerGraph, FalkorDB.

Amazon Neptune은 Graph 0.5.1에서 구현되지 않았고 지원 대상도 아니다. 계획이나 백로그를 지원 근거로 삼지 않는다. 이식성이 필요하면 후보마다 트랜잭션, 스키마, ID, 속성 형식, 순회 결과를 기록한다.

0.5.1 테스트를 백엔드별로 따로 실행한다.

Terminal window
./gradlew :bluetape4k-graph-neo4j:test --tests '*Neo4jGraphMergeOperationsTest' --tests '*Neo4jGraphSchemaManagerTest'
./gradlew :bluetape4k-graph-memgraph:test --tests '*MemgraphGraphMergeOperationsTest' --tests '*MemgraphGraphSchemaManagerTest'
./gradlew :bluetape4k-graph-age:test --tests '*AgeGraphMergeOperationsTest' --tests '*AgeGraphSchemaManagerTest'
./gradlew :bluetape4k-graph-tinkerpop:test --tests '*TinkerGraphMergeOperationsTest' --tests '*TinkerGraphTransactionTest'
./gradlew :bluetape4k-graph-falkordb:test --tests '*FalkorDBGraphMergeOperationsTest' --tests '*FalkorDBGraphSchemaManagerTest'

컨테이너 이미지나 메모리 fixture, 생성된 정점·간선 수, 중복 merge 결과, rollback 뒤 개수, index/constraint 목록, shortestPath 하나를 표로 남긴다. 잘못된 identifier와 트랜잭션 예외도 일부러 넣는다. 실패 유형과 실패 뒤 개수가 복구 설계에 맞는 후보만 남긴다. 마지막으로 운영 서버 버전에서 같은 검증을 반복하고 fixture와 호출자의 자원 소유권에 맞춰 종료한다.