Git Product home page Git Product logo

graphdb-benchmarks's Introduction

graphdb-benchmarks

The project graphdb-benchmarks is a benchmark between popular graph dataases. Currently the framework supports Titan, OrientDB, Neo4j and Sparksee. The purpose of this benchmark is to examine the performance of each graph database in terms of execution time. The benchmark is composed of four workloads, Clustering, Massive Insertion, Single Insertion and Query Workload. Every workload has been designed to simulate common operations in graph database systems.

  • Clustering Workload (CW): CW consists of a well-known community detection algorithm for modularity optimization, the Louvain Method. We adapt the algorithm on top of the benchmarked graph databases and employ cache techniques to take advantage of both graph database capabilities and in-memory execution speed. We measure the time the algorithm needs to converge.
  • Massive Insertion Workload (MIW): we create the graph database and configure it for massive loading, then we populate it with a particular dataset. We measure the time for the creation of the whole graph.
  • Single Insertion Workload (SIW): we create the graph database and load it with a particular dataset. Every object insertion (node or edge) is committed directly and the graph is constructed incrementally. We measure the insertion time per block, which consists of one thousand edges and the nodes that appear during the insertion of these edges.
  • Query Workload (QW): we execute three common queries:
    • FindNeighbours (FN): finds the neighbours of all nodes.
    • FindAdjacentNodes (FA): finds the adjacent nodes of all edges.
    • FindShortestPath (FS): finds the shortest path between the first node and 100 randomly picked nodes.

Here we measure the execution time of each query.

For our evaluation we use both synthetic and real data. More specifically, we execute MIW, SIW and QW with real data derived from the SNAP dataset collection (Enron Dataset, Amazon dataset, Youtube dataset and LiveJournal dataset). On the other hand, with the CW we use synthetic data generated with the LFR-Benchmark generator which produces networks with power-law degree distribution and implanted communities within the network. The synthetic data can be downloaded form here.

For further information about the study please refer to the published paper on Springer site and the presentation on Slideshare.

Note 1: The published paper contains the experimental study of Titan, OrientDB and Neo4j. After the publication we included the Sparksee graph database.

Note 2: After the very useful comments and contributions of OrientDB developers, we updated the benchmark implementations and re-run the experiments. We have updated the initial presentation with the new results and uploaded a new version of the paper in the following link.

Note 3: Alexander Patrikalakis, a software developer at Amazon Web Services, refactored the benchmark, added support for Blueprints 2.5 and added support for the DynamoDB Storage Backend for Titan.

Instructions

To run the project at first you have to choose one of the aforementioned datasets. Of course you can select any dataset, but because there is not any utility class to convert the dataset in the appropriate format (for now), the format of the data must be identical with the tested datasets. The input parameters are configured from the src/test/resources/input.properties file. Please follow the instructions in this file to select the correct parameters. Then, run mvn dependency:copy-dependencies && mvn test -Pbench to execute the benchmarking run.

Results

This section contains the results of each benchmark. All the measurements are in seconds.

####CW results Below we list the results of the CW for graphs with 1,000, 5,000, 10,0000, 20,000, 30,000, 40,000, 50,000 nodes.

Graph-Cache Titan OrientDB Neo4j
Graph1k-5% 2.39 0.92 2.46
Graph1k-10% 1.45 0.59 2.07
Graph1k-15% 1.30 0.58 1.88
Graph1k-20% 1.25 0.55 1.72
Graph1k-25% 1.19 0.49 1.67
Graph1k-30% 1.15 0.48 1.55
Graph5k-5% 16.01 5.88 12.80
Graph5k-10% 15.10 5.67 12.13
Graph5k-15% 14.63 4.81 11.91
Graph5k-20% 14.16 4.62 11.68
Graph5k-25% 13.76 4.51 11.31
Graph5k-30% 13.38 4.45 10.94
Graph10k-5% 46.06 18.20 34.05
Graph10k-10% 44.59 17.92 32.88
Graph10k-15% 43.68 17.31 31.91
Graph10k-20% 42.48 16.88 31.01
Graph10k-25% 41.32 16.58 30.74
Graph10k-30% 39.98 16.34 30.13
Graph20k-5% 140.46 54.01 87.04
Graph20k-10% 138.10 52.51 85.49
Graph20k-15% 137.25 52.12 82.88
Graph20k-20% 133.11 51.68 82.16
Graph20k-25% 122.48 50.79 79.87
Graph20k-30% 120.94 50.49 78.81
Graph30k-5% 310.25 96.38 154.60
Graph30k-10% 301.80 94.98 151.81
Graph30k-15% 299.27 94.85 151.12
Graph30k-20% 296.43 94.67 146.25
Graph30k-25% 294.33 92.62 144.08
Graph30k-30% 288.50 90.13 142.33
Graph40k-5% 533.29 201.19 250.79
Graph40k-10% 505.91 199.18 244.79
Graph40k-15% 490.39 194.34 242.55
Graph40k-20% 478.31 183.14 241.47
Graph40k-25% 467.18 177.55 237.29
Graph40k-30% 418.07 174.65 229.65
Graph50k-5% 642.42 240.58 348.33
Graph50k-10% 624.36 238.35 344.06
Graph50k-15% 611.70 237.65 340.20
Graph50k-20% 610.40 230.76 337.36
Graph50k-25% 596.29 230.03 332.01
Graph50k-30% 580.44 226.31 325.88

####MIW & QW results Below we list the results of MIW and QW for each dataset.

Dataset Workload Titan OrientDB Neo4j
EN MIW 9.36 62.77 6.77
AM MIW 34.00 97.00 10.61
YT MIW 104.27 252.15 24.69
LJ MIW 663.03 9416.74 349.55
EN QW-FN 1.87 0.56 0.95
AM QW-FN 6.47 3.50 1.85
YT QW-FN 20.71 9.34 4.51
LJ QW-FN 213.41 303.09 47.07
EN QW-FA 3.78 0.71 0.16
AM QW-FA 13.77 2.30 0.36
YT QW-FA 42.82 6.15 1.46
LJ QW-FA 460.25 518.12 16.53
EN QW-FS 1.63 3.09 0.16
AM QW-FS 0.12 83.29 0.302
YT QW-FS 24.87 23.47 0.08
LJ QW-FS 123.50 86.87 18.13

####SIW results Below we list the results of SIW for each dataset.

siw_benchmark_updated

Contact

For more information or support, please contact: [email protected], [email protected], [email protected] or [email protected].

graphdb-benchmarks's People

Contributors

kleinmind avatar lvca avatar manosetro avatar nduma avatar sarovios avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

graphdb-benchmarks's Issues

Add support for Dgraph

Dgraph is an open source, horizontally scalable and distributed graph database, providing ACID transactions, consistent replication and linearizable reads. It's built from ground up to perform for a rich set of queries. Being a native graph database, it tightly controls how the data is arranged on disk to optimize for query performance and throughput, reducing disk seeks and network calls in a cluster.

Mismatch in naming convention between the input.properties and the java code

The parameters in the input.properties config file do not match the ones required to run the code.
E.g., the class GraphDatabaseBenchmark requires a property called "DATASET", while in the properties file it is called "REAL_DATASET".
The class ClusteringBenchmark requires some parameters such as "NODES_CNT", "CACHE_VALUES_CNT" and "CACHE_INCREMENT_FACTOR" which are not present in the file.

Issue with compiling project

Dear developers!
I several times tried today to compile project with maven. And every time I got different errors.
The last one was this:

Information:Using javac 1.7.0_79 to compile java sources
Information:java: Errors occurred while compiling module 'graphdb-benchmarks'
Information:Module "graphdb-benchmarks" was fully rebuilt due to project configuration/dependencies changes
Information:01.07.15, 18:00 - Compilation completed with 100 errors and 5 warnings in 3s 485ms
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/graphdatabases/OrientGraphDatabase.java
Error:(12, 45) java: cannot find symbol
symbol: class OrientEdgeType
location: package com.tinkerpop.blueprints.impls.orient
Error:(13, 45) java: cannot find symbol
symbol: class OrientExtendedGraph
location: package com.tinkerpop.blueprints.impls.orient
Error:(15, 45) java: cannot find symbol
symbol: class OrientGraphFactory
location: package com.tinkerpop.blueprints.impls.orient
Error:(16, 45) java: cannot find symbol
symbol: class OrientGraphNoTx
location: package com.tinkerpop.blueprints.impls.orient
Error:(18, 45) java: cannot find symbol
symbol: class OrientVertexType
location: package com.tinkerpop.blueprints.impls.orient
Error:(19, 52) java: package com.tinkerpop.blueprints.impls.orient.asynch does not exist
Error:(45, 17) java: cannot find symbol
symbol: class OrientExtendedGraph
location: class eu.socialsensor.graphdatabases.OrientGraphDatabase
Error:(369, 43) java: cannot find symbol
symbol: class OrientExtendedGraph
location: class eu.socialsensor.graphdatabases.OrientGraphDatabase
Error:(395, 17) java: cannot find symbol
symbol: class OrientExtendedGraph
location: class eu.socialsensor.graphdatabases.OrientGraphDatabase
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/insert/OrientAbstractInsertion.java
Error:(29, 45) java: cannot find symbol
symbol: class OrientExtendedGraph
location: package com.tinkerpop.blueprints.impls.orient
Error:(30, 52) java: package com.tinkerpop.blueprints.impls.orient.asynch does not exist
Error:(43, 19) java: cannot find symbol
symbol: class OrientExtendedGraph
location: class eu.socialsensor.insert.OrientAbstractInsertion
Error:(48, 40) java: cannot find symbol
symbol: class OrientExtendedGraph
location: class eu.socialsensor.insert.OrientAbstractInsertion
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/query/Neo4jQuery.java
Error:(3, 27) java: package org.neo4j.graphalgo does not exist
Error:(4, 27) java: package org.neo4j.graphalgo does not exist
Error:(11, 33) java: package org.neo4j.graphdb.factory does not exist
Error:(12, 24) java: cannot find symbol
symbol: class GraphDatabaseAPI
location: package org.neo4j.kernel
Error:(14, 25) java: package org.neo4j.tooling does not exist
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java
Error:(4, 48) java: package com.orientechnologies.orient.graph.batch does not exist
Error:(5, 45) java: cannot find symbol
symbol: class OrientGraphNoTx
location: package com.tinkerpop.blueprints.impls.orient
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/clustering/Cache.java
Error:(7, 31) java: package com.google.common.cache does not exist
Error:(8, 31) java: package com.google.common.cache does not exist
Error:(9, 31) java: package com.google.common.cache does not exist
Error:(22, 9) java: cannot find symbol
symbol: class LoadingCache
location: class eu.socialsensor.clustering.Cache
Error:(23, 9) java: cannot find symbol
symbol: class LoadingCache
location: class eu.socialsensor.clustering.Cache
Error:(24, 9) java: cannot find symbol
symbol: class LoadingCache
location: class eu.socialsensor.clustering.Cache
Error:(25, 9) java: cannot find symbol
symbol: class LoadingCache
location: class eu.socialsensor.clustering.Cache
Error:(26, 9) java: cannot find symbol
symbol: class LoadingCache
location: class eu.socialsensor.clustering.Cache
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/graphdatabases/Neo4jGraphDatabase.java
Error:(11, 25) java: cannot find symbol
symbol: class DynamicLabel
location: package org.neo4j.graphdb
Error:(13, 25) java: cannot find symbol
symbol: class Label
location: package org.neo4j.graphdb
Error:(17, 25) java: cannot find symbol
symbol: class ResourceIterable
location: package org.neo4j.graphdb
Error:(19, 33) java: package org.neo4j.graphdb.factory does not exist
Error:(20, 32) java: package org.neo4j.graphdb.schema does not exist
Error:(21, 32) java: package org.neo4j.graphdb.schema does not exist
Error:(23, 24) java: cannot find symbol
symbol: class GraphDatabaseAPI
location: package org.neo4j.kernel
Error:(24, 25) java: package org.neo4j.tooling does not exist
Error:(25, 36) java: package org.neo4j.unsafe.batchinsert does not exist
Error:(26, 36) java: package org.neo4j.unsafe.batchinsert does not exist
Error:(47, 9) java: cannot find symbol
symbol: class Schema
location: class eu.socialsensor.graphdatabases.Neo4jGraphDatabase
Error:(48, 9) java: cannot find symbol
symbol: class IndexDefinition
location: class eu.socialsensor.graphdatabases.Neo4jGraphDatabase
Error:(50, 17) java: cannot find symbol
symbol: class BatchInserter
location: class eu.socialsensor.graphdatabases.Neo4jGraphDatabase
Error:(56, 23) java: cannot find symbol
symbol: class Label
location: class eu.socialsensor.graphdatabases.Neo4jGraphDatabase
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/graphdatabases/TitanGraphDatabase.java
Error:(15, 36) java: package com.thinkaurelius.titan.core does not exist
Error:(16, 36) java: package com.thinkaurelius.titan.core does not exist
Error:(17, 36) java: package com.thinkaurelius.titan.core does not exist
Error:(18, 43) java: package com.thinkaurelius.titan.core.schema does not exist
Error:(19, 41) java: package com.thinkaurelius.titan.core.util does not exist
Error:(25, 34) java: package com.tinkerpop.gremlin.java does not exist
Error:(48, 16) java: cannot find symbol
symbol: class TitanGraph
location: class eu.socialsensor.graphdatabases.TitanGraphDatabase
Error:(49, 27) java: cannot find symbol
symbol: class TitanGraph
location: class eu.socialsensor.graphdatabases.TitanGraphDatabase
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/insert/OrientSingleInsertion.java
Error:(5, 45) java: cannot find symbol
symbol: class OrientExtendedGraph
location: package com.tinkerpop.blueprints.impls.orient
Error:(27, 32) java: cannot find symbol
symbol: class OrientExtendedGraph
location: class eu.socialsensor.insert.OrientSingleInsertion
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/query/TitanQuery.java
Error:(8, 36) java: package com.thinkaurelius.titan.core does not exist
Error:(9, 36) java: package com.thinkaurelius.titan.core does not exist
Error:(10, 36) java: package com.thinkaurelius.titan.core does not exist
Error:(14, 34) java: package com.tinkerpop.gremlin.java does not exist
Error:(15, 27) java: package com.tinkerpop.pipes does not exist
Error:(16, 43) java: package com.tinkerpop.pipes.branch.LoopPipe does not exist
Error:(30, 17) java: cannot find symbol
symbol: class TitanGraph
location: class eu.socialsensor.query.TitanQuery
Error:(42, 27) java: cannot find symbol
symbol: class TitanGraph
location: class eu.socialsensor.query.TitanQuery
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/query/SparkseeQuery.java
Error:(3, 40) java: package com.sparsity.sparksee.algorithms does not exist
Error:(4, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(5, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(6, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(7, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(8, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(9, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(10, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(22, 17) java: cannot find symbol
symbol: class Session
location: class eu.socialsensor.query.SparkseeQuery
Error:(23, 17) java: cannot find symbol
symbol: class Graph
location: class eu.socialsensor.query.SparkseeQuery
Error:(25, 30) java: cannot find symbol
symbol: class Session
location: class eu.socialsensor.query.SparkseeQuery
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/insert/TitanSingleInsertion.java
Error:(13, 36) java: package com.thinkaurelius.titan.core does not exist
Error:(37, 17) java: cannot find symbol
symbol: class TitanGraph
location: class eu.socialsensor.insert.TitanSingleInsertion
Error:(50, 37) java: cannot find symbol
symbol: class TitanGraph
location: class eu.socialsensor.insert.TitanSingleInsertion
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/query/OrientQuery.java
Error:(7, 56) java: package com.orientechnologies.orient.graph.sql.functions does not exist
Error:(10, 45) java: cannot find symbol
symbol: class OrientExtendedGraph
location: package com.tinkerpop.blueprints.impls.orient
Error:(21, 11) java: cannot find symbol
symbol: class OrientExtendedGraph
location: class eu.socialsensor.query.OrientQuery
Error:(23, 22) java: cannot find symbol
symbol: class OrientExtendedGraph
location: class eu.socialsensor.query.OrientQuery
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/insert/Neo4jSingleInsertion.java
Error:(14, 35) java: package org.neo4j.cypher.javacompat does not exist
Error:(17, 25) java: cannot find symbol
symbol: class ResourceIterator
location: package org.neo4j.graphdb
Error:(19, 24) java: cannot find symbol
symbol: class GraphDatabaseAPI
location: package org.neo4j.kernel
Error:(40, 9) java: cannot find symbol
symbol: class ExecutionEngine
location: class eu.socialsensor.insert.Neo4jSingleInsertion
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/graphdatabases/SparkseeGraphDatabase.java
Error:(12, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(13, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(14, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(15, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(16, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(17, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(18, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(19, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(20, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(21, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(22, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(23, 33) java: package com.sparsity.sparksee.gdb does not exist
Error:(49, 9) java: cannot find symbol
symbol: class SparkseeConfig
location: class eu.socialsensor.graphdatabases.SparkseeGraphDatabase
Error:(50, 9) java: cannot find symbol
symbol: class Sparksee
location: class eu.socialsensor.graphdatabases.SparkseeGraphDatabase
Error:(51, 9) java: cannot find symbol
symbol: class Database
location: class eu.socialsensor.graphdatabases.SparkseeGraphDatabase
Error:(52, 9) java: cannot find symbol
symbol: class Session
location: class eu.socialsensor.graphdatabases.SparkseeGraphDatabase
Error:(53, 9) java: cannot find symbol
symbol: class Graph
location: class eu.socialsensor.graphdatabases.SparkseeGraphDatabase
Error:(63, 9) java: cannot find symbol
symbol: class Value
location: class eu.socialsensor.graphdatabases.SparkseeGraphDatabase
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/benchmarks/FindNeighboursOfAllNodesBenchmark.java
Warning:(53, 66) java: non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/benchmarks/SingleInsertionBenchmark.java
Warning:(62, 66) java: non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/benchmarks/FindShortestPathBenchmark.java
Warning:(61, 66) java: non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/benchmarks/MassiveInsertionBenchmark.java
Warning:(60, 66) java: non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning
/Users/alyona/Documents/Distiller/graphdb-benchmarks/src/main/java/eu/socialsensor/benchmarks/FindNodesOfAllEdgesBenchmark.java
Warning:(54, 66) java: non-varargs call of varargs method with inexact argument type for last parameter;
cast to java.lang.Object for a varargs call
cast to java.lang.Object[] for a non-varargs call and to suppress this warning


[WARNING] COMPILATION WARNING :
[INFO] -------------------------------------------------------------
[WARNING] /home/alyona/benchmarks/src/main/java/eu/socialsensor/graphdatabases/Neo4jGraphDatabase.java: Some input files use or override a deprecated API.
[WARNING] /home/alyona/benchmarks/src/main/java/eu/socialsensor/graphdatabases/Neo4jGraphDatabase.java: Recompile with -Xlint:deprecation for details.
[WARNING] /home/alyona/benchmarks/src/main/java/eu/socialsensor/query/OrientQuery.java: /home/alyona/benchmarks/src/main/java/eu/socialsensor/query/OrientQuery.java uses unchecked or unsafe operations.
[WARNING] /home/alyona/benchmarks/src/main/java/eu/socialsensor/query/OrientQuery.java: Recompile with -Xlint:unchecked for details.
[INFO] 4 warnings
[INFO] -------------------------------------------------------------
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /home/alyona/benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java:[4,48] cannot find symbol
symbol: class OGraphBatchInsertSimple
location: package com.orientechnologies.orient.graph.batch
[ERROR] /home/alyona/benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java:[4,48] cannot find symbol
symbol: class OGraphBatchInsertSimple
location: package com.orientechnologies.orient.graph.batch
[ERROR] /home/alyona/benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java:[42,11] cannot find symbol
symbol: class OGraphBatchInsertSimple
location: class eu.socialsensor.insert.OrientMassiveInsertion
[ERROR] /home/alyona/benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java:[42,43] cannot find symbol
symbol: class OGraphBatchInsertSimple
location: class eu.socialsensor.insert.OrientMassiveInsertion
[INFO] 4 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 17.915s
[INFO] Finished at: Wed Jul 01 16:13:27 CST 2015
[INFO] Final Memory: 26M/72M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project graphdb-benchmarks: Compilation failure: Compilation failure:
[ERROR] /home/alyona/benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java:[4,48] cannot find symbol
[ERROR] symbol: class OGraphBatchInsertSimple
[ERROR] location: package com.orientechnologies.orient.graph.batch
[ERROR] /home/alyona/benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java:[4,48] cannot find symbol
[ERROR] symbol: class OGraphBatchInsertSimple
[ERROR] location: package com.orientechnologies.orient.graph.batch
[ERROR] /home/alyona/benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java:[42,11] cannot find symbol
[ERROR] symbol: class OGraphBatchInsertSimple
[ERROR] location: class eu.socialsensor.insert.OrientMassiveInsertion
[ERROR] /home/alyona/benchmarks/src/main/java/eu/socialsensor/insert/OrientMassiveInsertion.java:[42,43] cannot find symbol
[ERROR] symbol: class OGraphBatchInsertSimple
[ERROR] location: class eu.socialsensor.insert.OrientMassiveInsertion
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Could you help me to find out how to make it works.
Thanks!

java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.<init>

When I run the mvn test -Pbench command, I get the following error. How can I fix this problem?

T E S T S

Running eu.socialsensor.main.GraphDatabaseBenchmarkTest
16:18:07.619 [main] INFO GraphDatabaseBenchmark - Massive Insertion Benchmark Selected
16:18:07.621 [main] INFO PermutingBenchmarkBase - Executing Massive Insertion Benchmark . . . .
16:18:09.294 [main] INFO InsertionBase - Loading data in massive mode in TITAN_BERKELEYDB database . . . .
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.836 sec <<< FAILURE! - in eu.socialsensor.main.GraphDatabaseBenchmarkTest
testGraphDatabaseBenchmark(eu.socialsensor.main.GraphDatabaseBenchmarkTest) Time elapsed: 4.835 sec <<< ERROR!
java.lang.NoSuchMethodError: org.apache.http.conn.ssl.SSLConnectionSocketFactory.(Ljavax/net/ssl/SSLContext;Ljavax/net/ssl/HostnameVerifier;)V
at com.amazonaws.http.conn.ssl.SdkTLSSocketFactory.(SdkTLSSocketFactory.java:58)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.getPreferredSocketFactory(ApacheConnectionManagerFactory.java:93)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:66)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:59)
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:50)
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:38)
at com.amazonaws.http.AmazonHttpClient.(AmazonHttpClient.java:345)
at com.amazonaws.http.AmazonHttpClient.(AmazonHttpClient.java:329)
at com.amazonaws.AmazonWebServiceClient.(AmazonWebServiceClient.java:239)
at com.amazonaws.AmazonWebServiceClient.(AmazonWebServiceClient.java:191)
at com.amazonaws.AmazonWebServiceClient.(AmazonWebServiceClient.java:184)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.(AmazonDynamoDBClient.java:342)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.(AmazonDynamoDBClient.java:317)
at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.(AmazonDynamoDBClient.java:296)
at eu.socialsensor.graphdatabases.TitanGraphDatabase.open(TitanGraphDatabase.java:227)
at eu.socialsensor.graphdatabases.TitanGraphDatabase.createGraphForMassiveLoad(TitanGraphDatabase.java:252)
at eu.socialsensor.benchmarks.MassiveInsertionBenchmark.benchmarkOne(MassiveInsertionBenchmark.java:41)
at eu.socialsensor.benchmarks.PermutingBenchmarkBase.startBenchmarkInternalOnePermutation(PermutingBenchmarkBase.java:68)
at eu.socialsensor.benchmarks.PermutingBenchmarkBase.startBenchmarkInternal(PermutingBenchmarkBase.java:57)
at eu.socialsensor.benchmarks.BenchmarkBase.startBenchmark(BenchmarkBase.java:35)
at eu.socialsensor.main.GraphDatabaseBenchmark.runBenchmark(GraphDatabaseBenchmark.java:136)
at eu.socialsensor.main.GraphDatabaseBenchmark.run(GraphDatabaseBenchmark.java:101)
at eu.socialsensor.main.GraphDatabaseBenchmarkTest.testGraphDatabaseBenchmark(GraphDatabaseBenchmarkTest.java:14)

Results :

Tests in error:
GraphDatabaseBenchmarkTest.testGraphDatabaseBenchmark:14 ? NoSuchMethod org.ap...

Tests run: 1, Failures: 0, Errors: 1, Skipped: 0

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 10.879 s
[INFO] Finished at: 2021-10-25T16:18:11+08:00
[INFO] Final Memory: 108M/1717M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default) on project graphdb-benchmarks: There are test failures.
[ERROR]
[ERROR] Please refer to /root/graphdb-benchmarks/target/surefire-reports for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Add support for JanusGraph

JanusGraph is a recently-released graph database, forked from TitanDB, which is no longer maintained.

It should be possible to reuse a lot of the Titan benchmarking code, since JanusGraph is Titan-compatible.

orientdb duplicate record indexing issue

I am using your synthetic dataset and trying to run the code. Insertion works perfectly except for orientdb which gives me an exception like this

Failed tests:
GraphDatabaseBenchmarkTest.testGraphDatabaseBenchmark:19 Got unexpected exception: Cannot index record V{nodeId:3,out_:[],in_:[]}: found duplicated key '3' in index 'V.nodeId' previously assigned to the record #12:0
DB name="orient"

Any take on how to solve this ?

Shortest path implemented in TP3, but really slow

Original shortest path traversal:

Original list of randomly chosen target nodes (range 2-1000, choose 100):

TP3 shortest path traversal:
https://github.com/amcp/graphdb-benchmarks/blob/tp3/src/main/java/eu/socialsensor/graphdatabases/TitanGraphDatabase.java#L281

New method to choose source node:
https://github.com/amcp/graphdb-benchmarks/blob/tp3/src/main/java/eu/socialsensor/graphdatabases/GraphDatabaseBase.java#L128

New method to choose target nodes (choose from entire range of vertices in dataset):
https://github.com/amcp/graphdb-benchmarks/blob/tp3/src/main/java/eu/socialsensor/dataset/Dataset.java#L28

New method to choose number of random target nodes (set the number in configuration file):
https://github.com/amcp/graphdb-benchmarks/blob/tp3/src/test/resources/META-INF/input.properties#L86

known issues with my pull request

  1. Neo4J is crashing in shortest path
  2. Some of the datasets don't work because they start counting vertices from zero

Lets fix these after we merge the pull request please.

Build failed by Maven.

at java.lang.reflect.Method.invoke (Method.java:567)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

Caused by: org.eclipse.aether.transfer.ArtifactNotFoundException: Could not find artifact jdk.tools:jdk.tools:jar:1.7 at specified path /usr/local/Cellar/openjdk/13.0.2+8_2/libexec/openjdk.jdk/Contents/Home/../lib/tools.jar
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:266)
at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:229)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies (DefaultRepositorySystem.java:340)

Comment on SIW performance

Hello, for the SIW performance of the paper, first I don't see why you did the log of time in ms.
You could simply put the time in s for each block
Second, the diagrams are not linear in the log scale. they are almost constant, and the time is a bit dropping (and does not mean that the actual execution time should grow exponentially with the graph size).
After I re-executed your benchmarks, I saw that the time to insert 1000 edge drop a bit the more blocks are inserted, this is due to the fact that the nodes are already created in the graph and/or cached, so the average block insert speed gets a bit faster with time, but according to my observation, it's quite consistent constant speed: in the beginning 1000 edges insert cost 5260 ms, because potentially all the nodes in the 1000 edges need to be created.
Later on, after a million insert, the 1000 edges insert cost 2222 ms, because potentially all nodes are already cached/created,
Nice benchmark anyway,
Cheers!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.