I have created a basic high-level client implementation over Neo4J ( https://github.com/impetus-opensource/Kundera/tree/trunk/kundera-neo4j ) and want to compare its performance with the Native neo4j driver (and possibly SpringData too). Thus, I could determine the overhead that my library puts on top of its own driver.
I plan to create a YCSB extension for Neo4J.
My question is: what should be considered as the basic unit of an object that should be written in neo4j (should it be a single node or several nodes connected by an edge). What is the current practice in the world of Neo4J. How people comparing neo4j performance do it.
Neo4J Gatling: http://maxdemarzi.com/2013/02/14/neo4j-and-gatling-sitting-in-a-tree-performance-t-e-s-t-ing/
.
. graphdb-benchmarks
- . Titan, OrientDB, Neo4j Sparksee. . : , , . .
(CW): CW , Louvain. , , . , .
(MIW): , . .
(SIW): . (node edge) , . , , .
(QW): : FindNeighbours (FN): . FindAdjacentNodes (FA): . FindShortestPath (FS): node 100 .
One way to test performance is to use, for example, http://gatling-tool.org/ . Currently, work is underway to create a reference framework at http://ldbc.eu . Otherwise, benchmarking is highly dependent on your domain data set and the requests you are trying to make. Perhaps you could start with https://github.com/neo4j/performance-benchmark and improve it?