-
-
Notifications
You must be signed in to change notification settings - Fork 95
Description
LDBC-inspired graph benchmark for ArcadeDB
Benchmark ArcadeDB graph performance using an LDBC Social Network Benchmark-inspired
schema and workload. The goal is to have a repeatable, configurable benchmark that
measures creation, lookup, and traversal performance with both SQL and OpenCypher side
by side.
Motivation
There is no existing end-to-end graph benchmark in the test suite that exercises
realistic multi-type schemas, edge-dense graphs, and complex traversal patterns. LDBC
SNB is the industry standard for graph database benchmarking — adapting its schema and
query patterns with synthetic data generation gives meaningful, comparable results
without requiring external data files or tooling.
Scope
Schema — 8 vertex types (Person, Post, Comment, Forum, Tag, TagClass, Place,
Organisation) and 14 edge types (KNOWS, HAS_CREATOR, REPLY_OF, HAS_TAG, LIKES,
CONTAINER_OF, HAS_MEMBER, HAS_MODERATOR, WORKS_AT, STUDY_AT, IS_LOCATED_IN,
HAS_INTEREST, IS_PART_OF, IS_SUBCLASS_OF).
Benchmark phases:
- Graph creation — bulk generation with async inserts, WAL disabled, power-law edge
distribution - Simple lookups — indexed (Person/Post by id) and non-indexed (Person by firstName)
queries - Simple traversals — 1-hop patterns (direct friends, posts by person, tags of post,
forum members) - Complex traversals — friends-of-friends with exclusion, posts by friends in a city,
common tags between two persons, shortest path via KNOWS, forum recommendation by
friend overlap
Dual language — Every query runs in both ArcadeDB SQL (MATCH syntax) and OpenCypher
for direct performance comparison.
Reusable database — First run generates the graph; subsequent runs reopen the existing
database so only the first execution pays the generation cost.
Configurable scale — All graph parameters (vertex counts, edge densities, iteration
counts) are constants at the top of the file, easy to adjust for quick smoke tests or
large-scale runs.
Default scale
┌────────────────┬──────────────────────────────────────┐
│ Type │ Count │
├────────────────┼──────────────────────────────────────┤
│ Person │ 30,000 │
├────────────────┼──────────────────────────────────────┤
│ Post │ 150,000 │
├────────────────┼──────────────────────────────────────┤
│ Comment │ 600,000 │
├────────────────┼──────────────────────────────────────┤
│ Forum │ 5,000 │
├────────────────┼──────────────────────────────────────┤
│ Tag │ 2,000 │
├────────────────┼──────────────────────────────────────┤
│ Place │ 1,500 │
├────────────────┼──────────────────────────────────────┤
│ Organisation │ 3,000 │
├────────────────┼──────────────────────────────────────┤
│ KNOWS edges │ ~600K (avg 40/person, bidirectional) │
├────────────────┼──────────────────────────────────────┤
│ Total vertices │ ~791K │
├────────────────┼──────────────────────────────────────┤
│ Total edges │ ~3M │
└────────────────┴──────────────────────────────────────┘
Output
Formatted report table printed to stdout with per-query avg, p50, p95, p99 latencies
in milliseconds, powered by Micrometer SimpleMeterRegistry (test-scoped, no external
infrastructure).
Dependencies
- Micrometer Core (test scope, Apache 2.0)