Skip to content
Graph docs0.5

Backend selection guide

Latest stable Based on Graph release 0.5.1

Backend decision map

Select from existing infrastructure and required semantics, then verify locally. Feature count alone is a poor decision rule.

BackendExisting infrastructure / languageTransactionsSchema/indexLocal verificationPortability note
Neo4jNeo4j/Bolt, Cyphernative driver transactionindexes and constraintsTestcontainers Neo4j 5broad common-contract baseline
MemgraphMemgraph with Neo4j-driver-compatible Bolt, Cyphernative transactionbackend-specific Cypher DDLMemgraph containertest Cypher/schema differences
Apache AGEPostgreSQL, Cypher-over-SQLJDBC/Exposed boundarylimited portable DDLapache/age:PG16_latestSQL session and graph context matter
TinkerPopin-process JVM, Gremlin/TinkerGraphin-memory transaction behaviormanager capability is limitedno containerbest for tests, not a remote-server substitute
FalkorDBRedis-shaped service, openCypher subsetlibrary/backend constraintsbackend-specific indexesFalkorDB containervalidate unsupported transaction paths

Implementation and test anchors: Neo4j, Memgraph, AGE, TinkerGraph, FalkorDB.

Amazon Neptune is not implemented or supported in Graph 0.5.1. Do not infer support from roadmap or backlog issues. If portability matters, run the same domain example against candidate backends and record transaction, schema, ID, property-type, and traversal differences before selection.

Use the exact 0.5.1 test selectors, one backend at a time:

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'

Record container/image or in-memory fixture, created vertex/edge counts, duplicate merge outcome, rollback outcome, index/constraint inventory, and one shortestPath result. Inject an invalid identifier and a transaction exception. A candidate advances only if expected failure types and post-failure counts match the application’s recovery design. Finally repeat the same checks against the deployment server version and close resources according to fixture/caller ownership.