Skip to content

JetBrains/ldbc-snb-interactive-gremlin

Repository files navigation

LDBC SNB Interactive for TinkerPop

License
Zulip

A Gremlin-based implementation of the LDBC Social Network Benchmark (SNB) Interactive v1 workload for TinkerPop-compatible graph databases.

Created and maintained by the YouTrackDB team at JetBrains.

What This Is

  • 29 Gremlin traversals implementing all LDBC SNB Interactive queries (14 complex reads, 7 short reads, 8 updates)
  • Pluggable architecture for TinkerPop-compatible databases
  • LDBC Driver integration for validation and benchmarking

Status: Public Preview - gathering feedback on Gremlin query patterns and approach.

Requirements

  • Java 21+
  • Maven 3.8+
  • TinkerPop 3.8.0 compatible database

Project Structure

common/     # Database-agnostic Gremlin queries and schema
runner/     # LDBC driver integration
ytdb/       # YouTrackDB reference implementation

Getting Started

1. Build

./mvnw clean package

2. Download Dataset

./scripts/fetch-test-data.sh

Downloads SF 0.1 dataset (initial snapshot, substitution parameters, update streams) in CSV format.

See docs/dataset-overview.md for details on dataset types and sources.

3. Load Data

Load the initial snapshot into your database. This is vendor-specific.

Reference: ytdb/src/main/java/com/youtrackdb/ldbc/ytdb/loader/

Dataset location: test-data/runtime/social-network/sf0.1/

4. Configure

Set your database vendor in runner/ldbc-driver.properties:

tinkerpop.vendor=ytdb

Default configuration:

  • Validation mode
  • SF 0.1
  • 200 validation queries
  • Single thread

See docs/configuration-and-running.md for configuration details.

5. Run Validation

./scripts/ldbc-driver.sh

Results written to runner/results/.

Note: Reload data after each run (updates modify the dataset).

Adding a Database Vendor

To add support for your TinkerPop-compatible database:

  1. Create a vendor module (e.g., yourdb/)
  2. Implement GraphProvider interface
  3. Create a Guice module binding your implementation
  4. Register vendor in TinkerPopDb.java
  5. Add vendor properties in yourdb/ldbc-driver.properties

Optionally override default queries for vendor-specific optimizations.

Complete guide: docs/adding-a-vendor.md

Reference implementation: ytdb/ module

Documentation

Community

Feedback welcome on:

  • Query implementations and optimizations
  • API design for database plugins
  • Documentation gaps

Related Projects

License

Apache License 2.0 - see LICENSE

Acknowledgments

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published