Skip to content

LDBC-inspired graph benchmark for ArcadeDB #3411

@robfrank

Description

@robfrank

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:

  1. Graph creation — bulk generation with async inserts, WAL disabled, power-law edge
    distribution
  2. Simple lookups — indexed (Person/Post by id) and non-indexed (Person by firstName)
    queries
  3. Simple traversals — 1-hop patterns (direct friends, posts by person, tags of post,
    forum members)
  4. 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)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions