Implementations for the Workload components of the LDBC Social Network Benchmark (specification).
Multiple configuration files and scripts use relative paths to address the data generator's directory. Hence, it is recommended to clone the LDBC Data Generator and the LDBC implementations repositories next to each other and keep their original directory names. For example:
ldbc
Each project has its own README:
The Sparksee implementation is maintained in a separate repository.
The queries in this repository are work-in-progress. If possible, please cross-validate your queries against multiple implementations.
query | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Neo4j (Cypher) | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 |
PostgreSQL | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 |
SPARQL | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 |
query | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
---|---|---|---|---|---|---|---|
Neo4j (Cypher) | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
PostgreSQL | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
SPARQL | 01 | 02 | 03 | 04 | 05 | 06 | 07 |
query | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 |
---|---|---|---|---|---|---|---|---|
Neo4j (Cypher) | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 |
PostgreSQL | 01/p 01/c 01/e 01/l 01/t 01/u | 02 | 03 | 04/f 04/t | 05 | 06/p 06/t | 07/c 07/t | 08 |
SPARQL | 01/p 01/c 01/e 01/l 01/t 01/u | 02 | 03 | 04/f 04/t | 05 | 06/p 06/t 06/i 06/c | 07/c 07/t | 08 |
query | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
Neo4j (Cypher) | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
PostgreSQL | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
SPARQL | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
query | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
---|---|---|---|---|---|---|---|---|---|---|
Neo4j (Cypher) | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
PostgreSQL | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
SPARQL | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
query | 21 | 22 | 23 | 24 | 25 |
---|---|---|---|---|---|
Neo4j (Cypher) | 21 | 22 | 23 | 24 | 25 |
PostgreSQL | 21 | 22 | 23 | 24 | 25 |
SPARQL | 21 | 22 | 23 | 24 | 25 |
-
Build the driver binaries from source. This step is optional as the latest stable version of the driver is released on Bintray.
-
Grab the driver source code from: https://github.com/ldbc/ldbc_snb_driver.
-
Install the driver artifact to the local Maven repository:
mvn clean install -DskipTests
-
-
Navigate to the root of this repository and generate the JAR files for the implementations:
mvn clean package -DskipTests
-
For each implementation, it is possible to (1) create validation parameters, (2) validate against an existing validation parameters, and (3) run the benchmark. Set the parameters according to your system configuration in the appropriate
.properties
file and run the driver with one of the following scripts:# BI workload ./bi-create-validation-parameters.sh ./bi-validate.sh ./bi-benchmark.sh # Interactive workload ./interactive-create-validation-parameters.sh ./interactive-validate.sh ./interactive-benchmark.sh
For more details, on validating and benchmarking, visit the driver wiki.
To generate small data sets, use scale factor 1 (SF1) with the persons and years set according to this template:
ldbc.snb.datagen.generator.scaleFactor:snb.interactive.1
ldbc.snb.datagen.generator.numPersons:50
ldbc.snb.datagen.generator.numYears:1
ldbc.snb.datagen.generator.startYear:2010
ldbc.snb.datagen.generator.numThreads:1
ldbc.snb.datagen.serializer.outputDir:./test_data/
ldbc.snb.datagen.serializer.personSerializer:ldbc.snb.datagen.serializer.snb.interactive.<SerializerType>PersonSerializer
ldbc.snb.datagen.serializer.invariantSerializer:ldbc.snb.datagen.serializer.snb.interactive.<SerializerType>InvariantSerializer
ldbc.snb.datagen.serializer.personActivitySerializer:ldbc.snb.datagen.serializer.snb.interactive.<SerializerType>PersonActivitySerializer